aboutsummaryrefslogtreecommitdiffstats
path: root/tool/mkrunnable.rb
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-07-03 02:16:08 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-07-03 02:16:08 +0000
commit3fceaf10ab6c85032e381d8345dbf4e4b5e34f2d (patch)
tree32b358906e693f1429eb7bf99f1688e712d6050d /tool/mkrunnable.rb
parent66d0ad360719e9e0aa4b65b32849dbd9c24998a3 (diff)
downloadruby-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-xtool/mkrunnable.rb62
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"))