Don't hang if xcode-select -print-path is "/"

Introducing MacOS.xctools_fucked?.

Refs Homebrew/homebrew#10293.
This commit is contained in:
Max Howell 2012-02-21 10:32:48 +00:00
parent a7ade739dc
commit 61a8bd9ca0
3 changed files with 12 additions and 4 deletions

View File

@ -18,7 +18,7 @@ module Homebrew extend self
value = env[k]
if value
results = value
if value =~ /^[^\s]*xcrun (.*)/
if value =~ %r{/usr/bin/xcrun (.*)}
path = `/usr/bin/xcrun -find #{$1}`
results += " => #{path}"
elsif File.exists? value and File.symlink? value

View File

@ -94,7 +94,7 @@ module HomebrewEnvExtension
def xcrun tool
if File.executable? "/usr/bin/#{tool}"
"/usr/bin/#{tool}"
elsif system "/usr/bin/xcrun -find #{tool} 2>1 1>/dev/null"
elsif not MacOS.xctools_fucked? and system "/usr/bin/xcrun -find #{tool} 2>1 1>/dev/null"
# xcrun was provided first with Xcode 4.3 and allows us to proxy
# tool usage thus avoiding various bugs
"/usr/bin/xcrun #{tool}"

View File

@ -266,9 +266,17 @@ module MacOS extend self
end
end
def xctools_fucked?
# Xcode 4.3 tools hang if "/" is set
`/usr/bin/xcode-select -print-path 2>/dev/null`.chomp == "/"
end
def default_cc
cc = `/usr/bin/xcrun -find cc 2> /dev/null`.chomp
cc = "#{dev_tools_path}/cc" if cc.empty? or not $?.success?
cc = unless xctools_fucked?
out = `/usr/bin/xcrun -find cc 2> /dev/null`.chomp
out if $?.success?
end
cc = "#{dev_tools_path}/cc" if cc.nil? or cc.empty?
unless File.executable? cc
# If xcode-select isn't setup then xcrun fails and on Xcode 4.3