mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
[rubygems/rubygems] Migrate extension builder to use Open3
Since it works on jruby. https://github.com/rubygems/rubygems/commit/5229e00df4
This commit is contained in:
parent
4e27319c2c
commit
d64cc80b66
2 changed files with 23 additions and 20 deletions
|
@ -6,6 +6,7 @@
|
|||
#++
|
||||
|
||||
require 'rubygems/user_interaction'
|
||||
require "open3"
|
||||
|
||||
class Gem::Ext::Builder
|
||||
|
||||
|
@ -67,13 +68,11 @@ class Gem::Ext::Builder
|
|||
results << "current directory: #{Dir.pwd}"
|
||||
results << (command.respond_to?(:shelljoin) ? command.shelljoin : command)
|
||||
|
||||
redirections = verbose ? {} : {err: [:child, :out]}
|
||||
IO.popen(command, "r", redirections) do |io|
|
||||
if verbose
|
||||
IO.copy_stream(io, $stdout)
|
||||
else
|
||||
results << io.read
|
||||
end
|
||||
output, status = Open3.capture2e(*command)
|
||||
if verbose
|
||||
puts output
|
||||
else
|
||||
results << output
|
||||
end
|
||||
rescue => error
|
||||
raise Gem::InstallError, "#{command_name || class_name} failed#{error.message}"
|
||||
|
@ -81,14 +80,18 @@ class Gem::Ext::Builder
|
|||
ENV['RUBYGEMS_GEMDEPS'] = rubygems_gemdeps
|
||||
end
|
||||
|
||||
unless $?.success?
|
||||
unless status.success?
|
||||
results << "Building has failed. See above output for more information on the failure." if verbose
|
||||
end
|
||||
|
||||
yield(status, results) if block_given?
|
||||
|
||||
unless status.success?
|
||||
exit_reason =
|
||||
if $?.exited?
|
||||
", exit code #{$?.exitstatus}"
|
||||
elsif $?.signaled?
|
||||
", uncaught signal #{$?.termsig}"
|
||||
if status.exited?
|
||||
", exit code #{status.exitstatus}"
|
||||
elsif status.signaled?
|
||||
", uncaught signal #{status.termsig}"
|
||||
end
|
||||
|
||||
raise Gem::InstallError, "#{command_name || class_name} failed#{exit_reason}"
|
||||
|
|
|
@ -45,15 +45,15 @@ class Gem::Ext::ExtConfBuilder < Gem::Ext::Builder
|
|||
cmd.push(*args)
|
||||
|
||||
begin
|
||||
run cmd, results
|
||||
ensure
|
||||
if File.exist? 'mkmf.log'
|
||||
unless $?.success?
|
||||
results << "To see why this extension failed to compile, please check" \
|
||||
" the mkmf.log which can be found here:\n"
|
||||
results << " " + File.join(dest_path, 'mkmf.log') + "\n"
|
||||
run(cmd, results) do |status, results|
|
||||
if File.exist? 'mkmf.log'
|
||||
unless status.success?
|
||||
results << "To see why this extension failed to compile, please check" \
|
||||
" the mkmf.log which can be found here:\n"
|
||||
results << " " + File.join(dest_path, 'mkmf.log') + "\n"
|
||||
end
|
||||
FileUtils.mv 'mkmf.log', dest_path
|
||||
end
|
||||
FileUtils.mv 'mkmf.log', dest_path
|
||||
end
|
||||
siteconf.unlink
|
||||
end
|
||||
|
|
Loading…
Add table
Reference in a new issue