Reduce effective scope of pipe variables

This commit is contained in:
Jack Nagel 2014-09-05 15:13:52 -05:00
parent 659896fda2
commit 479ad0265b

View File

@ -493,8 +493,6 @@ class Formula
# Pretty titles the command and buffers stdout/stderr
# Throws if there's an error
def system cmd, *args
rd, wr = IO.pipe
# remove "boring" arguments so that the important ones are more likely to
# be shown considering that we trim long ohai lines to the terminal width
pretty_args = args.dup
@ -510,39 +508,43 @@ class Formula
logfn = "#{logd}/%02d.%s" % [@exec_count, File.basename(cmd).split(' ').first]
mkdir_p(logd)
pid = fork { exec_cmd(cmd, args, rd, wr, logfn) }
wr.close
rd, wr = IO.pipe
File.open(logfn, 'w') do |f|
f.puts Time.now, "", cmd, args, ""
begin
pid = fork { exec_cmd(cmd, args, rd, wr, logfn) }
wr.close
if ARGV.verbose?
while buf = rd.gets
f.puts buf
puts buf
File.open(logfn, 'w') do |f|
f.puts Time.now, "", cmd, args, ""
if ARGV.verbose?
while buf = rd.gets
f.puts buf
puts buf
end
elsif IO.respond_to?(:copy_stream)
IO.copy_stream(rd, f)
else
buf = ""
f.write(buf) while rd.read(1024, buf)
end
Process.wait(pid)
$stdout.flush
unless $?.success?
f.flush
Kernel.system "/usr/bin/tail", "-n", "5", logfn unless ARGV.verbose?
f.puts
require 'cmd/config'
Homebrew.dump_build_config(f)
raise BuildError.new(self, cmd, args)
end
elsif IO.respond_to?(:copy_stream)
IO.copy_stream(rd, f)
else
buf = ""
f.write(buf) while rd.read(1024, buf)
end
Process.wait(pid)
$stdout.flush
unless $?.success?
f.flush
Kernel.system "/usr/bin/tail", "-n", "5", logfn unless ARGV.verbose?
f.puts
require 'cmd/config'
Homebrew.dump_build_config(f)
raise BuildError.new(self, cmd, args)
end
ensure
rd.close unless rd.closed?
end
ensure
rd.close unless rd.closed?
end
private