diff options
Diffstat (limited to 'dev-ruby/rubygems/files/rubygems-0.9.0-build-c-extensions.patch')
-rw-r--r-- | dev-ruby/rubygems/files/rubygems-0.9.0-build-c-extensions.patch | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/dev-ruby/rubygems/files/rubygems-0.9.0-build-c-extensions.patch b/dev-ruby/rubygems/files/rubygems-0.9.0-build-c-extensions.patch new file mode 100644 index 0000000..5ab5872 --- /dev/null +++ b/dev-ruby/rubygems/files/rubygems-0.9.0-build-c-extensions.patch @@ -0,0 +1,104 @@ +--- trunk/lib/rubygems/installer.rb 2006/08/10 18:06:59 1060 ++++ trunk/lib/rubygems/installer.rb 2006/08/10 18:15:28 1062 +@@ -292,9 +292,12 @@ + say "Building native extensions. This could take a while..." + start_dir = Dir.pwd + dest_path = File.join(directory, spec.require_paths[0]) ++ ran_rake = false # only run rake once + +- results = [] + spec.extensions.each do |extension| ++ break if ran_rake ++ results = [] ++ + case extension + when /extconf/ then + builder = ExtExtConfBuilder +@@ -302,6 +305,7 @@ + builder = ExtConfigureBuilder + when /rakefile/i then + builder = ExtRakeBuilder ++ ran_rake = true + else + builder = nil + results = ["No builder for extension '#{extension}'"] +@@ -310,7 +314,7 @@ + begin + err = false + Dir.chdir File.join(directory, File.dirname(extension)) +- results = builder.build(extension, directory, dest_path) ++ results = builder.build(extension, directory, dest_path, results) + rescue => ex + err = true + end +@@ -551,29 +555,27 @@ + end # class Uninstaller + + class ExtConfigureBuilder +- def self.build(extension, directory, dest_path) +- results = [] ++ def self.build(extension, directory, dest_path, results) + unless File.exist?('Makefile') then + cmd = "sh ./configure --prefix=#{dest_path}" + results << cmd + results << `#{cmd}` + end + +- results.push(*ExtExtConfBuilder.make(dest_path)) ++ ExtExtConfBuilder.make(dest_path, results) + results + end + end + + class ExtExtConfBuilder +- def self.build(extension, directory, dest_path) +- results = ["#{Gem.ruby} #{File.basename(extension)} #{ARGV.join(" ")}"] ++ def self.build(extension, directory, dest_path, results) ++ results << "#{Gem.ruby} #{File.basename(extension)} #{ARGV.join(" ")}" + results << `#{Gem.ruby} #{File.basename(extension)} #{ARGV.join(" ")}` +- results.push(*make(dest_path)) ++ make(dest_path, results) + results + end + +- def self.make(dest_path) +- results = [] ++ def self.make(dest_path, results) + raise unless File.exist?('Makefile') + mf = File.read('Makefile') + mf = mf.gsub(/^RUBYARCHDIR\s*=\s*\$[^$]*/, "RUBYARCHDIR = #{dest_path}") +@@ -585,27 +587,25 @@ + make_program = (/mswin/ =~ RUBY_PLATFORM) ? 'nmake' : 'make' + end + +- ['', 'install', 'clean'].each do |target| ++ ['', 'install'].each do |target| + results << "#{make_program} #{target}".strip + results << `#{make_program} #{target}` +- end + +- results ++ raise unless $?.exitstatus.zero? ++ end + end + + end + + class ExtRakeBuilder +- def ExtRakeBuilder.build(ext, directory, dest_path) ++ def ExtRakeBuilder.build(ext, directory, dest_path, results) + make_program = ENV['rake'] || 'rake' + make_program += " RUBYARCHDIR=#{dest_path} RUBYLIBDIR=#{dest_path}" + +- results = [] ++ results << "#{make_program} extension".strip ++ results << `#{make_program} extension` + +- ['', 'install', 'clean'].each do |target| +- results << "#{make_program} #{target}".strip +- results << `#{make_program} #{target}` +- end ++ raise unless $?.exitstatus.zero? + + results + end |