diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index 2277d3d7ed991c17fe8e9d9e310473bff9924995..6965a452e033cc596ea94888ff69c5401dec119a 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -510,29 +510,7 @@ class Formula logfn = "#{logd}/%02d.%s" % [@exec_count, File.basename(cmd).split(' ').first] mkdir_p(logd) - pid = fork do - ENV['HOMEBREW_CC_LOG_PATH'] = logfn - - # TODO system "xcodebuild" is deprecated, this should be removed soon. - if cmd.to_s.start_with? "xcodebuild" - ENV.remove_cc_etc - end - - # Turn on argument filtering in the superenv compiler wrapper. - # We should probably have a better mechanism for this than adding - # special cases to this method. - if cmd == "python" && %w[setup.py build.py].include?(args.first) - ENV.refurbish_args - end - - rd.close - $stdout.reopen wr - $stderr.reopen wr - args.collect!{|arg| arg.to_s} - exec(cmd, *args) rescue nil - puts "Failed to execute: #{cmd}" - exit! 1 # never gets here unless exec threw or failed - end + pid = fork { exec_cmd(cmd, args, rd, wr, logfn) } wr.close File.open(logfn, 'w') do |f| @@ -569,6 +547,30 @@ class Formula private + def exec_cmd(cmd, args, rd, wr, logfn) + ENV['HOMEBREW_CC_LOG_PATH'] = logfn + + # TODO system "xcodebuild" is deprecated, this should be removed soon. + if cmd.to_s.start_with? "xcodebuild" + ENV.remove_cc_etc + end + + # Turn on argument filtering in the superenv compiler wrapper. + # We should probably have a better mechanism for this than adding + # special cases to this method. + if cmd == "python" && %w[setup.py build.py].include?(args.first) + ENV.refurbish_args + end + + rd.close + $stdout.reopen wr + $stderr.reopen wr + args.collect!{|arg| arg.to_s} + exec(cmd, *args) rescue nil + puts "Failed to execute: #{cmd}" + exit! 1 # never gets here unless exec threw or failed + end + def stage active_spec.stage do @buildpath = Pathname.pwd