method
build_extensions
v1_9_3_392 -
Show latest stable
- Class:
Gem::Installer
build_extensions()public
Builds extensions. Valid types of extensions are extconf.rb files, configure scripts and rakefiles or mkrf_conf files.
# File lib/rubygems/installer.rb, line 509
def build_extensions
return if spec.extensions.empty?
say "Building native extensions. This could take a while..."
dest_path = File.join gem_dir, spec.require_paths.first
ran_rake = false # only run rake once
spec.extensions.each do |extension|
break if ran_rake
results = []
builder = case extension
when /extconf/ then
Gem::Ext::ExtConfBuilder
when /configure/ then
Gem::Ext::ConfigureBuilder
when /rakefile/, /mkrf_conf/ then
ran_rake = true
Gem::Ext::RakeBuilder
else
results = ["No builder for extension '#{extension}'"]
nil
end
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"
gem_make_out = File.join extension_dir, 'gem_make.out'
open gem_make_out, 'wb' do |io| io.puts results end
message = ERROR: Failed to build gem native extension. #{results}Gem files will remain installed in #{gem_dir} for inspection.Results logged to #{gem_make_out}
raise ExtensionBuildError, message
end
end
end Related methods
- Instance methods
- app_script_text
- build_extensions
- check_that_user_bin_dir_is_in_path
- dir
- ensure_dependencies_met
- ensure_dependency
- ensure_required_ruby_version_met
- ensure_required_rubygems_version_met
- extract_files
- format
- formatted_program_filename
- gem_dir
- generate_bin
- generate_bin_script
- generate_bin_symlink
- generate_windows_script
- install
- installation_satisfies_dependency?
- process_options
- shebang
- spec
- unpack
- verify_gem_home
- windows_stub_script
- write_spec
- Class methods
- exec_format
- new