From 3fceaf10ab6c85032e381d8345dbf4e4b5e34f2d Mon Sep 17 00:00:00 2001 From: nobu Date: Tue, 3 Jul 2012 02:16:08 +0000 Subject: make runnable * common.mk (runnable): make symbolic links to run in build directory. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36277 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- tool/mkrunnable.rb | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100755 tool/mkrunnable.rb (limited to 'tool/mkrunnable.rb') diff --git a/tool/mkrunnable.rb b/tool/mkrunnable.rb new file mode 100755 index 0000000000..e12c751b98 --- /dev/null +++ b/tool/mkrunnable.rb @@ -0,0 +1,62 @@ +#!./miniruby + +require 'mkmf' + +case ARGV[0] +when "-n" + ARGV.shift + include FileUtils::DryRun +when "-v" + ARGV.shift + include FileUtils::Verbose +else + include FileUtils +end + +def ln_safe(src, dest) + link = File.readlink(dest) rescue nil + return if link == src + ln_sf(src, dest) +end + +config = RbConfig::CONFIG +extout = ARGV[0] || config["EXTOUT"] +version = config["ruby_version"] +arch = config["arch"] +["bin", "lib"].each do |dir| + File.directory?(dir) or mkdir_p(dir) +end + +exeext = config["EXEEXT"] +ruby_install_name = config["ruby_install_name"] +rubyw_install_name = config["rubyw_install_name"] +goruby_install_name = "go" + ruby_install_name +[ruby_install_name, rubyw_install_name, goruby_install_name].map do |ruby| + ruby += exeext + if ruby and !ruby.empty? + ln_safe("../#{ruby}", "bin/#{ruby}") + end +end +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") +else + ln_safe(File.join("..", extout), "lib/ruby") + cur = "#{extout}/".gsub(/(\A|\/)(?:\.\/)+/, '\1').tr_s('/', '/') + nil while cur.sub!(/[^\/]+\/\.\.\//, '') + if /(\A|\/)\.\.\// =~ cur + cur = nil + else + cur.gsub!(/[^\/]+/, '..') + end +end +if cur + ln_safe(File.join("..", cur, "rbconfig.rb"), File.join(extout, arch, "rbconfig.rb")) +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")) -- cgit v1.2.1