From 681c1b9f1b86f2a1198229e40cfa64bbd52e02f9 Mon Sep 17 00:00:00 2001 From: nobu Date: Wed, 25 Jul 2012 08:17:46 +0000 Subject: mkrunnable.rb: mswin * tool/mkrunnable.rb (ln_safe, ln_dir_safe): separate for mklink command on Windows. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36537 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- tool/mkrunnable.rb | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) (limited to 'tool') diff --git a/tool/mkrunnable.rb b/tool/mkrunnable.rb index e12c751b98..6a6a92658a 100755 --- a/tool/mkrunnable.rb +++ b/tool/mkrunnable.rb @@ -13,12 +13,31 @@ else include FileUtils end +module Mswin + def ln_safe(src, dest, *opt) + cmd = ["mklink", dest.tr("/", "\\"), src.tr("/", "\\")] + cmd[1, 0] = opt + # TODO: use RUNAS or something + puts cmd.join(" ") + end + + def ln_dir_safe(src, dest) + ln_safe(src, dest, "/d") + end +end + def ln_safe(src, dest) link = File.readlink(dest) rescue nil return if link == src ln_sf(src, dest) end +alias ln_dir_safe ln_safe + +if /mingw|mswin/ =~ RUBY_PLATFORM + extend Mswin +end + config = RbConfig::CONFIG extout = ARGV[0] || config["EXTOUT"] version = config["ruby_version"] @@ -41,9 +60,9 @@ libruby = config.values_at("LIBRUBY_A", "LIBRUBY_SO") libruby.concat(config["LIBRUBY_ALIASES"].split) libruby.each {|lib|ln_safe("../#{lib}", "lib/#{lib}")} if File.expand_path(extout) == extout - ln_safe(extout, "lib/ruby") + ln_dir_safe(extout, "lib/ruby") else - ln_safe(File.join("..", extout), "lib/ruby") + ln_dir_safe(File.join("..", extout), "lib/ruby") cur = "#{extout}/".gsub(/(\A|\/)(?:\.\/)+/, '\1').tr_s('/', '/') nil while cur.sub!(/[^\/]+\/\.\.\//, '') if /(\A|\/)\.\.\// =~ cur @@ -57,6 +76,6 @@ if cur else ln_safe(File.expand_path("rbconfig.rb"), File.join(extout, arch, "rbconfig.rb")) end -ln_safe("common", File.join(extout, version)) -ln_safe(File.join("..", arch), File.join(extout, "common", arch)) -ln_safe(relative_from(File.join(File.dirname(config["srcdir"]), "lib"), ".."), File.join(extout, "vendor_ruby")) +ln_dir_safe("common", File.join(extout, version)) +ln_dir_safe(File.join("..", arch), File.join(extout, "common", arch)) +ln_dir_safe(relative_from(File.join(File.dirname(config["srcdir"]), "lib"), ".."), File.join(extout, "vendor_ruby")) -- cgit v1.2.3