mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
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
This commit is contained in:
parent
ac64f196f8
commit
681c1b9f1b
1 changed files with 24 additions and 5 deletions
|
@ -13,12 +13,31 @@ else
|
||||||
include FileUtils
|
include FileUtils
|
||||||
end
|
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)
|
def ln_safe(src, dest)
|
||||||
link = File.readlink(dest) rescue nil
|
link = File.readlink(dest) rescue nil
|
||||||
return if link == src
|
return if link == src
|
||||||
ln_sf(src, dest)
|
ln_sf(src, dest)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
alias ln_dir_safe ln_safe
|
||||||
|
|
||||||
|
if /mingw|mswin/ =~ RUBY_PLATFORM
|
||||||
|
extend Mswin
|
||||||
|
end
|
||||||
|
|
||||||
config = RbConfig::CONFIG
|
config = RbConfig::CONFIG
|
||||||
extout = ARGV[0] || config["EXTOUT"]
|
extout = ARGV[0] || config["EXTOUT"]
|
||||||
version = config["ruby_version"]
|
version = config["ruby_version"]
|
||||||
|
@ -41,9 +60,9 @@ libruby = config.values_at("LIBRUBY_A", "LIBRUBY_SO")
|
||||||
libruby.concat(config["LIBRUBY_ALIASES"].split)
|
libruby.concat(config["LIBRUBY_ALIASES"].split)
|
||||||
libruby.each {|lib|ln_safe("../#{lib}", "lib/#{lib}")}
|
libruby.each {|lib|ln_safe("../#{lib}", "lib/#{lib}")}
|
||||||
if File.expand_path(extout) == extout
|
if File.expand_path(extout) == extout
|
||||||
ln_safe(extout, "lib/ruby")
|
ln_dir_safe(extout, "lib/ruby")
|
||||||
else
|
else
|
||||||
ln_safe(File.join("..", extout), "lib/ruby")
|
ln_dir_safe(File.join("..", extout), "lib/ruby")
|
||||||
cur = "#{extout}/".gsub(/(\A|\/)(?:\.\/)+/, '\1').tr_s('/', '/')
|
cur = "#{extout}/".gsub(/(\A|\/)(?:\.\/)+/, '\1').tr_s('/', '/')
|
||||||
nil while cur.sub!(/[^\/]+\/\.\.\//, '')
|
nil while cur.sub!(/[^\/]+\/\.\.\//, '')
|
||||||
if /(\A|\/)\.\.\// =~ cur
|
if /(\A|\/)\.\.\// =~ cur
|
||||||
|
@ -57,6 +76,6 @@ if cur
|
||||||
else
|
else
|
||||||
ln_safe(File.expand_path("rbconfig.rb"), File.join(extout, arch, "rbconfig.rb"))
|
ln_safe(File.expand_path("rbconfig.rb"), File.join(extout, arch, "rbconfig.rb"))
|
||||||
end
|
end
|
||||||
ln_safe("common", File.join(extout, version))
|
ln_dir_safe("common", File.join(extout, version))
|
||||||
ln_safe(File.join("..", arch), File.join(extout, "common", arch))
|
ln_dir_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(relative_from(File.join(File.dirname(config["srcdir"]), "lib"), ".."), File.join(extout, "vendor_ruby"))
|
||||||
|
|
Loading…
Reference in a new issue