diff options
| -rwxr-xr-x | Library/ENV/4.3/xcrun | 89 | 
1 files changed, 48 insertions, 41 deletions
diff --git a/Library/ENV/4.3/xcrun b/Library/ENV/4.3/xcrun index 7443cec17..128f40ba2 100755 --- a/Library/ENV/4.3/xcrun +++ b/Library/ENV/4.3/xcrun @@ -1,50 +1,57 @@ -#!/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby -W0 - +#!/bin/sh  # Historically, xcrun has had various bugs, and in some cases it didn't  # work at all (e.g. CLT-only in the Xcode 4.3 era). This script emulates  # it and attempts to avoid these issues.  # Some build tools set DEVELOPER_DIR, so discard it -ENV.delete "DEVELOPER_DIR" - -if ARGV.empty? || ARGV[0][0..0] == "-" -  exec "/usr/bin/xcrun", *ARGV -end - -arg0 = ARGV.shift - -exe = "/usr/bin/#{arg0}" -if File.executable?(exe) -  exec(exe, *ARGV) if ENV["HOMEBREW_PREFER_CLT_PROXIES"] -  sdkroot = ENV["HOMEBREW_SDKROOT"] -  exec(exe, *ARGV) unless sdkroot && File.directory?(sdkroot) -end - -$:.unshift "/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8" -require "pathname" - -def canonical_dirname path -  Pathname.new(path).dirname.realpath.to_s -end - -SUPERBIN = canonical_dirname(__FILE__) - -exe = `/usr/bin/xcrun --find #{arg0} 2>/dev/null`.chomp -if File.executable?(exe) && canonical_dirname(exe) != SUPERBIN -  exec(exe, *ARGV) -end - -paths = ENV["PATH"].split(File::PATH_SEPARATOR) -paths.delete(SUPERBIN) -paths.each do |path| -  exe = File.join(path, arg0) -  exec(exe, *ARGV) if File.executable?(exe) -end - -abort <<-EOS -Failed to execute: #{arg0} #{ARGV.join(" ")} +unset DEVELOPER_DIR + +if [ $# -eq 0 ]; then +  exec /usr/bin/xcrun "$@" +fi + +case "$1" in +  -*) exec /usr/bin/xcrun "$@" ;; +esac + +arg0=$1 +shift + +exe="/usr/bin/${arg0}" +if [ -x "$exe" ]; then +  if [ -n "$HOMEBREW_PREFER_CLT_PROXIES" ]; then +    exec "$exe" "$@" +  elif [ -z "$HOMEBREW_SDKROOT" -o ! -d "$HOMEBREW_SDKROOT" ]; then +    exec "$exe" "$@" +  fi +fi + +SUPERBIN=$(cd "${0%/*}" && pwd -P) + +exe=$(/usr/bin/xcrun --find "$arg0" 2>/dev/null) +if [ -x "$exe" -a "${exe%/*}" != "$SUPERBIN" ]; then +  exec "$exe" "$@" +fi + +old_IFS=$IFS +IFS=: +for path in $PATH; do +  if [ "$path" = "$SUPERBIN" ]; then +    continue +  fi + +  exe="${path}/${arg0}" +  if [ -x "$exe" ]; then +    exec "$exe" "$@" +  fi +done +IFS=$old_IFS + +echo >&2 " +Failed to execute $arg0 $@  Xcode and/or the CLT appear to be misconfigured. Try one or both of the following:    xcodebuild -license    sudo xcode-select -switch /path/to/Xcode.app -EOS +" +exit 1  | 
