Skip to content

Commit

Permalink
mkrunnable.rb: mswin
Browse files Browse the repository at this point in the history
* 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
  • Loading branch information
nobu committed Jul 25, 2012
1 parent ac64f19 commit 681c1b9
Showing 1 changed file with 24 additions and 5 deletions.
29 changes: 24 additions & 5 deletions tool/mkrunnable.rb
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,31 @@
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"]
Expand All @@ -41,9 +60,9 @@ def ln_safe(src, dest)
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
Expand All @@ -57,6 +76,6 @@ def ln_safe(src, dest)
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"))

0 comments on commit 681c1b9

Please sign in to comment.