diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-07-03 02:16:08 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-07-03 02:16:08 +0000 |
commit | 3fceaf10ab6c85032e381d8345dbf4e4b5e34f2d (patch) | |
tree | 32b358906e693f1429eb7bf99f1688e712d6050d /tool/mkrunnable.rb | |
parent | 66d0ad360719e9e0aa4b65b32849dbd9c24998a3 (diff) | |
download | ruby-3fceaf10ab6c85032e381d8345dbf4e4b5e34f2d.tar.gz |
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
Diffstat (limited to 'tool/mkrunnable.rb')
-rwxr-xr-x | tool/mkrunnable.rb | 62 |
1 files changed, 62 insertions, 0 deletions
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")) |