Shaun Jackman 1b688a3a25 Relocate bottles on Linux using patchelf
Ensure patchelf is installed to pour bottles and build bottles.
2018-07-12 10:21:26 -07:00

42 lines
1.1 KiB
Ruby

module Utils
def self.popen_read(*args, **options, &block)
popen(args, "rb", options, &block)
end
def self.safe_popen_read(*args, **options, &block)
output = popen_read(*args, **options, &block)
raise ErrorDuringExecution, args unless $CHILD_STATUS.success?
output
end
def self.popen_write(*args, **options, &block)
popen(args, "wb", options, &block)
end
def self.safe_popen_write(*args, **options, &block)
output = popen_write(args, **options, &block)
raise ErrorDuringExecution, args unless $CHILD_STATUS.success?
output
end
def self.popen(args, mode, options = {})
IO.popen("-", mode) do |pipe|
if pipe
return pipe.read unless block_given?
yield pipe
else
options[:err] ||= :close unless ENV["HOMEBREW_STDERR"]
begin
exec(*args, options)
rescue Errno::ENOENT
$stderr.puts "brew: command not found: #{args[0]}" unless options[:err] == :close
exit! 127
rescue SystemCallError
$stderr.puts "brew: exec failed: #{args[0]}" unless options[:err] == :close
exit! 1
end
end
end
end
end