diff options
author | ryan <ryan@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2011-01-28 23:46:47 +0000 |
---|---|---|
committer | ryan <ryan@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2011-01-28 23:46:47 +0000 |
commit | 934f537b458778f4786716c95b73fc72bc1ce256 (patch) | |
tree | 6abdecd9956995a7f82c9f969c80657b4301f6bd /lib/rubygems/installer.rb | |
parent | b511e1bfbe649b938e317e00ad1795f1b9623758 (diff) | |
download | ruby-934f537b458778f4786716c95b73fc72bc1ce256.tar.gz |
Import rubygems 1.5.0 (release candidate @ 09893d9)
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30717 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/rubygems/installer.rb')
-rw-r--r-- | lib/rubygems/installer.rb | 34 |
1 files changed, 21 insertions, 13 deletions
diff --git a/lib/rubygems/installer.rb b/lib/rubygems/installer.rb index 7321d2e2e5..09d260dfb8 100644 --- a/lib/rubygems/installer.rb +++ b/lib/rubygems/installer.rb @@ -14,6 +14,7 @@ require 'rubygems/format' require 'rubygems/exceptions' require 'rubygems/ext' require 'rubygems/require_paths_builder' +require 'rubygems/user_interaction' ## # The installer class processes RubyGem .gem files and installs the files @@ -44,7 +45,7 @@ class Gem::Installer include Gem::UserInteraction - include Gem::RequirePathsBuilder if QUICKLOADER_SUCKAGE + include Gem::RequirePathsBuilder if Gem::QUICKLOADER_SUCKAGE ## # The directory a gem's executables will be installed into @@ -176,7 +177,7 @@ class Gem::Installer generate_bin write_spec - write_require_paths_file_if_needed if QUICKLOADER_SUCKAGE + write_require_paths_file_if_needed if Gem::QUICKLOADER_SUCKAGE # HACK remove? Isn't this done in multiple places? cached_gem = File.join @gem_home, "cache", @gem.split(/\//).pop @@ -481,7 +482,6 @@ TEXT def build_extensions return if @spec.extensions.empty? say "Building native extensions. This could take a while..." - start_dir = Dir.pwd dest_path = File.join @gem_dir, @spec.require_paths.first ran_rake = false # only run rake once @@ -502,29 +502,37 @@ TEXT nil end - begin - Dir.chdir File.join(@gem_dir, File.dirname(extension)) - results = builder.build(extension, @gem_dir, dest_path, results) - say results.join("\n") if Gem.configuration.really_verbose + extension_dir = begin + File.join @gem_dir, File.dirname(extension) + rescue TypeError # extension == nil + @gem_dir + end + + + begin + Dir.chdir extension_dir do + results = builder.build(extension, @gem_dir, dest_path, results) + say results.join("\n") if Gem.configuration.really_verbose + end rescue results = results.join "\n" - File.open('gem_make.out', 'wb') { |f| f.puts results } + gem_make_out = File.join extension_dir, 'gem_make.out' + + open gem_make_out, 'wb' do |io| io.puts results end message = <<-EOF ERROR: Failed to build gem native extension. -#{results} + #{results} Gem files will remain installed in #{@gem_dir} for inspection. -Results logged to #{File.join(Dir.pwd, 'gem_make.out')} - EOF +Results logged to #{gem_make_out} +EOF raise ExtensionBuildError, message - ensure - Dir.chdir start_dir end end end |