From 438f52d1a4aa03650a53911a66f7d81c4fc20d38 Mon Sep 17 00:00:00 2001 From: nobu Date: Fri, 19 Aug 2016 04:38:20 +0000 Subject: extmk.rb: makefiles for gems * ext/extmk.rb (extmake): now yield makefile content at creation. substitute makefiles for gems in the block, not to rewrite when nothing changed. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55966 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ext/extmk.rb | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/ext/extmk.rb b/ext/extmk.rb index a65a281617..f75d2eaad8 100755 --- a/ext/extmk.rb +++ b/ext/extmk.rb @@ -131,7 +131,7 @@ def extract_makefile(makefile, keep = true) true end -def extmake(target, basedir = (maybestatic = 'ext')) +def extmake(target, basedir = (maybestatic = 'ext'), &block) unless $configure_only || verbose? print "#{$message} #{target}\n" $stdout.flush @@ -225,7 +225,7 @@ def extmake(target, basedir = (maybestatic = 'ext')) load $0 = conf end else - create_makefile(target) + create_makefile(target, &block) end $defs << "-DRUBY_EXPORT" if $static ok = File.exist?(makefile) @@ -241,11 +241,11 @@ def extmake(target, basedir = (maybestatic = 'ext')) end end ok &&= File.open(makefile){|f| s = f.gets and !s[DUMMY_SIGNATURE]} - ok = yield(ok) if block_given? unless ok + mf = ["# #{DUMMY_SIGNATURE}\n", *dummy_makefile(CONFIG["srcdir"])].join("") + mf = yield mf if block atomic_write_open(makefile) do |f| - f.puts "# " + DUMMY_SIGNATURE - f.print(*dummy_makefile(CONFIG["srcdir"])) + f.print(mf) end return true if !error and target.start_with?("-") @@ -570,18 +570,14 @@ Dir.chdir('gems') extout = $extout gems.each do |d| $extout = extout.dup - extmake(d, 'gems') - open("#{d}/Makefile", "r+b") do |f| - mf = f.read - f.rewind + extmake(d, 'gems') do |mf| mf.sub!(/^RUBYARCHDIR *= *(\$\(extout\))\/(\$\(arch\))(.*)/) { "TARGET_SO_DIR = #$1/gems/#$2/#{d[%r{\A[^/]+}]}#$3\n" \ "TARGET_SO_TIME = .gems.-.arch.-.#{d[/\A[^\/]+/]}.time" } mf.gsub!(/\bRUBYARCHDIR\b/, 'TARGET_SO_DIR') mf.gsub!(/\.TARGET_SO_DIR\.time/, '$(TARGET_SO_TIME)') - f.write(mf) - f.truncate(f.pos) + mf end end $extout = extout -- cgit v1.2.3