mirror of
https://github.com/Homebrew/brew.git
synced 2025-07-14 16:09:03 +08:00
81 lines
1.7 KiB
Bash
Executable File
81 lines
1.7 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# 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.
|
|
|
|
# These could be used in conjunction with `--sdk` which ignores SDKROOT.
|
|
# HOMEBREW_DEVELOPER_DIR, HOMEBREW_SDKROOT and HOMEBREW_PREFER_CLT_PROXIES are set by extend/ENV/super.rb
|
|
# shellcheck disable=SC2154
|
|
if [[ "$*" =~ (^| )-?-show-sdk-(path|version|build) && -n "${HOMEBREW_DEVELOPER_DIR}" ]]
|
|
then
|
|
export DEVELOPER_DIR="${HOMEBREW_DEVELOPER_DIR}"
|
|
else
|
|
# Some build tools set DEVELOPER_DIR, so discard it
|
|
unset DEVELOPER_DIR
|
|
fi
|
|
|
|
if [[ -z "${SDKROOT}" && -n "${HOMEBREW_SDKROOT}" ]]
|
|
then
|
|
export SDKROOT="${HOMEBREW_SDKROOT}"
|
|
fi
|
|
|
|
if [[ $# -eq 0 ]]
|
|
then
|
|
exec /usr/bin/xcrun "$@"
|
|
fi
|
|
|
|
# shellcheck disable=SC2249
|
|
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}" || ! -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}" && "${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
|
|
"
|
|
exit 1
|