From 8191f129b5607d4b4a2ae71625eac1ebc8d98ef0 Mon Sep 17 00:00:00 2001 From: nobu Date: Thu, 9 Apr 2009 18:01:26 +0000 Subject: * instruby.rb, mkconfig.rb: deal with --program-transform-name better. now supports s, y commands and single addressing. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@23165 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- mkconfig.rb | 33 +++++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-) (limited to 'mkconfig.rb') diff --git a/mkconfig.rb b/mkconfig.rb index d715cc40d9..2a1ec927f2 100755 --- a/mkconfig.rb +++ b/mkconfig.rb @@ -83,12 +83,33 @@ File.foreach "config.status" do |line| when /^\$\{ac_\w+\}$/; next when /^\$ac_\w+$/; next end - if /^program_transform_name$/ =~ name and /^s(\\?.)(.*)\1$/ =~ val - next if $install_name - sep = %r"#{Regexp.quote($1)}" - ptn = $2.gsub(/\$\$/, '$').split(sep, 2) - name = "ruby_install_name" - val = "ruby".sub(/#{ptn[0]}/, ptn[1]) + if /^program_transform_name$/ =~ name + val.sub!(/\As(\W)(?:\^|\$\$)\1\1(;|\z)/, '') + if val.empty? + $install_name ||= "ruby" + next + end + unless $install_name + $install_name = "ruby" + val.gsub!(/\$\$/, '$') + val.scan(%r[\G[\s;]*(/(?:\\.|[^/])*/)?([sy])(\W)((?:\\.|(?!\3).)*)\3((?:\\.|(?!\3).)*)\3([gi]*)]) do + |addr, cmd, sep, pat, rep, opt| + if addr + Regexp.new(addr[/\A\/(.*)\/\z/, 1]) =~ $install_name or next + end + case cmd + when 's' + pat = Regexp.new(pat, opt.include?('i')) + if opt.include?('g') + $install_name.gsub!(pat, rep) + else + $install_name.sub!(pat, rep) + end + when 'y' + $install_name.tr!(Regexp.quote(pat), rep) + end + end + end end val.gsub!(/ +(?!-)/, "=") if name == "configure_args" && /mswin32/ =~ RUBY_PLATFORM val = val.gsub(/\$(?:\$|\{?(\w+)\}?)/) {$1 ? "$(#{$1})" : $&}.dump -- cgit v1.2.3