Merge pull request #3174 from sjackman/popen-options

popen: Do not suppress stderr when HOMEBREW_STDERR
This commit is contained in:
Mike McQuaid 2017-09-23 16:31:52 +01:00 committed by GitHub
commit 6b3bb666e8
3 changed files with 9 additions and 9 deletions

View File

@ -9,7 +9,7 @@ class DevelopmentTools
@locate[key] = if (located_tool = original_locate(tool)) @locate[key] = if (located_tool = original_locate(tool))
located_tool located_tool
elsif MacOS.version > :tiger elsif MacOS.version > :tiger
path = Utils.popen_read("/usr/bin/xcrun", "-no-cache", "-find", tool).chomp path = Utils.popen_read("/usr/bin/xcrun", "-no-cache", "-find", tool, err: :close).chomp
Pathname.new(path) if File.executable?(path) Pathname.new(path) if File.executable?(path)
end end
end end

View File

@ -134,7 +134,7 @@ class SystemConfig
# java_home doesn't exist on all macOSs; it might be missing on older versions. # java_home doesn't exist on all macOSs; it might be missing on older versions.
return "N/A" unless File.executable? "/usr/libexec/java_home" return "N/A" unless File.executable? "/usr/libexec/java_home"
java_xml = Utils.popen_read("/usr/libexec/java_home", "--xml", "--failfast") java_xml = Utils.popen_read("/usr/libexec/java_home", "--xml", "--failfast", err: :close)
return "N/A" unless $CHILD_STATUS.success? return "N/A" unless $CHILD_STATUS.success?
javas = [] javas = []
REXML::XPath.each(REXML::Document.new(java_xml), "//key[text()='JVMVersion']/following-sibling::string") do |item| REXML::XPath.each(REXML::Document.new(java_xml), "//key[text()='JVMVersion']/following-sibling::string") do |item|

View File

@ -1,20 +1,20 @@
module Utils module Utils
def self.popen_read(*args, &block) def self.popen_read(*args, **options, &block)
popen(args, "rb", &block) popen(args, "rb", options, &block)
end end
def self.popen_write(*args, &block) def self.popen_write(*args, **options, &block)
popen(args, "wb", &block) popen(args, "wb", options, &block)
end end
def self.popen(args, mode) def self.popen(args, mode, options = {})
IO.popen("-", mode) do |pipe| IO.popen("-", mode) do |pipe|
if pipe if pipe
return pipe.read unless block_given? return pipe.read unless block_given?
yield pipe yield pipe
else else
$stderr.reopen("/dev/null", "w") options[:err] ||= :close unless ENV["HOMEBREW_STDERR"]
exec(*args) exec(*args, options)
end end
end end
end end