ruby-changes:27506
From: nobu <ko1@a...>
Date: Sun, 3 Mar 2013 01:14:42 +0900 (JST)
Subject: [ruby-changes:27506] nobu:r39558 (trunk): ext_conf_builder.rb: build in the source directory
nobu 2013-03-03 01:14:32 +0900 (Sun, 03 Mar 2013) New Revision: 39558 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=39558 Log: ext_conf_builder.rb: build in the source directory * lib/rubygems/ext/ext_conf_builder.rb (Gem::Ext::ExtConfBuilder.build): revert use of temporary directory for build, to work some buggy extconf.rb which cannot build outside the source directory. [ruby-core:53056] [Bug #7698] Modified files: trunk/ChangeLog trunk/lib/rubygems/ext/ext_conf_builder.rb Index: ChangeLog =================================================================== --- ChangeLog (revision 39557) +++ ChangeLog (revision 39558) @@ -1,3 +1,10 @@ https://github.com/ruby/ruby/blob/trunk/ChangeLog#L1 +Sun Mar 3 01:14:28 2013 Nobuyoshi Nakada <nobu@r...> + + * lib/rubygems/ext/ext_conf_builder.rb (Gem::Ext::ExtConfBuilder.build): + revert use of temporary directory for build, to work some buggy + extconf.rb which cannot build outside the source directory. + [ruby-core:53056] [Bug #7698] + Sun Mar 3 00:04:20 2013 Nobuyoshi Nakada <nobu@r...> * enc/depend (CPPFLAGS), lib/mkmf.rb (MakeMakefile#create_makefile): Index: lib/rubygems/ext/ext_conf_builder.rb =================================================================== --- lib/rubygems/ext/ext_conf_builder.rb (revision 39557) +++ lib/rubygems/ext/ext_conf_builder.rb (revision 39558) @@ -7,37 +7,30 @@ https://github.com/ruby/ruby/blob/trunk/lib/rubygems/ext/ext_conf_builder.rb#L7 require 'rubygems/ext/builder' require 'rubygems/command' require 'fileutils' -require 'tmpdir' +require 'tempfile' class Gem::Ext::ExtConfBuilder < Gem::Ext::Builder def self.build(extension, directory, dest_path, results, args=[]) - pwd = Dir.pwd - cmd = "#{Gem.ruby} -r./siteconf #{File.join pwd, File.basename(extension)}" - cmd << " #{args.join ' '}" unless args.empty? - - Dir.mktmpdir("gem-install.") do |tmpdir| - Dir.chdir(tmpdir) do - open("siteconf.rb", "w") do |f| - f.puts "require 'rbconfig'" - f.puts "dest_path = #{dest_path.dump}" - %w[sitearchdir sitelibdir].each do |dir| - f.puts "RbConfig::MAKEFILE_CONFIG['#{dir}'] = dest_path" - f.puts "RbConfig::CONFIG['#{dir}'] = dest_path" - end - end - - begin - run cmd, results - - make dest_path, results - ensure - FileUtils.mv("mkmf.log", pwd) if $! and File.exist?("mkmf.log") - end + siteconf = Tempfile.open(%w"siteconf .rb", ".") do |f| + f.puts "require 'rbconfig'" + f.puts "dest_path = #{dest_path.dump}" + %w[sitearchdir sitelibdir].each do |dir| + f.puts "RbConfig::MAKEFILE_CONFIG['#{dir}'] = dest_path" + f.puts "RbConfig::CONFIG['#{dir}'] = dest_path" end + f end + cmd = [Gem.ruby, "-r#{siteconf.path}", File.basename(extension), *args].join ' ' + + run cmd, results + + make dest_path, results + results + ensure + siteconf.close(true) if siteconf end end -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/