summaryrefslogtreecommitdiff
path: root/lib/rubygems/installer.rb
diff options
context:
space:
mode:
authorryan <ryan@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2011-01-28 23:46:47 +0000
committerryan <ryan@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2011-01-28 23:46:47 +0000
commit934f537b458778f4786716c95b73fc72bc1ce256 (patch)
tree6abdecd9956995a7f82c9f969c80657b4301f6bd /lib/rubygems/installer.rb
parentb511e1bfbe649b938e317e00ad1795f1b9623758 (diff)
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.rb34
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