summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-07-25 08:17:46 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-07-25 08:17:46 +0000
commit681c1b9f1b86f2a1198229e40cfa64bbd52e02f9 (patch)
treeb4970480e31bd07848f12445bfffd214df49853b
parentac64f196f814a30bbd8cc3de989240e1ebf3984d (diff)
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
-rwxr-xr-xtool/mkrunnable.rb29
1 files changed, 24 insertions, 5 deletions
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"))