From af6a9d70b27ba96366a2b7b37c0ed06d687d86bc Mon Sep 17 00:00:00 2001 From: akr Date: Thu, 15 Nov 2007 02:54:55 +0000 Subject: * tool/compile_prelude.rb: adjust RbConfig::CONFIG paths relative to the installation path. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13925 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- tool/compile_prelude.rb | 38 ++++++++++++++++++++++++++------------ 1 file changed, 26 insertions(+), 12 deletions(-) (limited to 'tool/compile_prelude.rb') diff --git a/tool/compile_prelude.rb b/tool/compile_prelude.rb index 985f7192cf..90d0839dc6 100644 --- a/tool/compile_prelude.rb +++ b/tool/compile_prelude.rb @@ -1,6 +1,6 @@ # This file is interpreted by $(BASERUBY) and miniruby. -# $(BASERUBY) is used for prelude.c. -# miniruby is used for ext_prelude.c. +# $(BASERUBY) is used for miniprelude.c. +# miniruby is used for prelude.c. # Since $(BASERUBY) may be older than Ruby 1.9, # Ruby 1.9 feature should not be used. @@ -21,20 +21,34 @@ def c_esc(str) '"' + str.gsub(C_ESC_PAT) { C_ESC[$&] } + '"' end -lines_list = preludes.map {|prelude| +mkconf = nil +setup_ruby_prefix = nil +lines_list = preludes.map {|filename| lines = [] - File.readlines(prelude).each {|line| + need_ruby_prefix = false + File.readlines(filename).each {|line| line.gsub!(/RbConfig::CONFIG\["(\w+)"\]/) { - require 'rbconfig' - if RbConfig::CONFIG.has_key? $1 - c_esc(RbConfig::CONFIG[$1]) + unless mkconf + require 'rbconfig' + mkconf = RbConfig::MAKEFILE_CONFIG.merge('prefix'=>'#{ruby_prefix}') + exlen = $:.grep(%r{\A/}).last.length - RbConfig::CONFIG["prefix"].length + setup_ruby_prefix = "ruby_prefix = $:.grep(%r{\\A/}).last[0..#{-exlen-1}]\n" + end + if RbConfig::MAKEFILE_CONFIG.has_key? $1 + val = RbConfig.expand("$(#$1)", mkconf) + need_ruby_prefix = true if /\A\#{ruby_prefix}/ =~ val + c_esc(val) else $& end } lines << c_esc(line) } - lines + setup_lines = [] + if need_ruby_prefix + setup_lines << c_esc(setup_ruby_prefix) + end + [setup_lines, lines] } open(outfile, 'w'){|f| @@ -45,11 +59,11 @@ open(outfile, 'w'){|f| EOS__ - preludes.zip(lines_list).each_with_index {|(prelude, lines), i| + preludes.zip(lines_list).each_with_index {|(prelude, (setup_lines, lines)), i| f.puts <