summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
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.patch104
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