Revert "Revert "shims/mac/super: add ruby shims to set SDKROOT""

This reverts commit fe992cab2b943269e39e8f9f5830f4983c440e8b.
This commit is contained in:
Bo Anderson 2021-03-02 17:06:05 +00:00
parent ee52b19179
commit a3ed481b9e
No known key found for this signature in database
GPG Key ID: 3DB94E204E137D65
6 changed files with 121 additions and 96 deletions

View File

@ -276,7 +276,7 @@ jobs:
- name: Install brew tests dependencies - name: Install brew tests dependencies
run: | run: |
brew install subversion brew install subversion
Library/Homebrew/shims/scm/svn --homebrew=print-path brew sh -c "svn --homebrew=print-path"
which svn which svn
which svnadmin which svnadmin

View File

@ -0,0 +1 @@
ruby

View File

@ -0,0 +1 @@
ruby

View File

@ -0,0 +1,12 @@
#!/bin/bash
# System Ruby's mkmf on Mojave (10.14) and later require SDKROOT set to work correctly.
source "$HOMEBREW_LIBRARY/Homebrew/shims/utils.sh"
try_exec_non_system "$SHIM_FILE" "$@"
if [[ -z "$SDKROOT" && -n "$HOMEBREW_SDKROOT" ]]; then
export SDKROOT=$HOMEBREW_SDKROOT
fi
safe_exec "/usr/bin/$SHIM_FILE" "$@"

View File

@ -3,87 +3,15 @@
# This script because we support $HOMEBREW_GIT, $HOMEBREW_SVN, etc., Xcode-only and # This script because we support $HOMEBREW_GIT, $HOMEBREW_SVN, etc., Xcode-only and
# no Xcode/CLT configurations. Order is careful to be what the user would want. # no Xcode/CLT configurations. Order is careful to be what the user would want.
set +o posix if [ -z "$HOMEBREW_LIBRARY" ]
quiet_safe_cd() {
cd "$1" >/dev/null || { echo "Error: failed to cd to $1" >&2; exit 1; }
}
absdir() {
quiet_safe_cd "${1%/*}/" && pwd -P
}
dirbasepath() {
local dir="$1"
local base="${2##*/}"
echo "$dir/$base"
}
realpath() {
local path="$1"
local dir
local dest
dir="$(absdir "$path")"
path="$(dirbasepath "$dir" "$path")"
while [[ -L "$path" ]]
do
dest="$(readlink "$path")"
if [[ "$dest" = "/"* ]]
then
path="$dest"
else
path="$dir/$dest"
fi
dir="$(absdir "$path")"
path="$(dirbasepath "$dir" "$path")"
done
echo "$path"
}
executable() {
local file="$1"
[[ -f "$file" && -x "$file" ]]
}
lowercase() {
echo "$1" | tr "[:upper:]" "[:lower:]"
}
safe_exec() {
local arg0="$1"
if ! executable "$arg0"
then
return
fi
# prevent fork-bombs
if [[ "$(lowercase "$arg0")" = "$SCM_FILE" || "$(realpath "$arg0")" = "$SCM_REAL" ]]
then
return
fi
if [[ "$HOMEBREW" = "print-path" ]]
then
local dir="$(quiet_safe_cd "${arg0%/*}/" && pwd)"
local path="$(dirbasepath "$dir" "$arg0")"
echo "$path"
exit
fi
exec "$@"
}
SCM_FILE="${0##*/}"
SCM_REAL="$(realpath "$0")"
SCM_DIR="$(quiet_safe_cd "${SCM_REAL%/*}/" && pwd -P)"
if [[ "$1" = --homebrew=* ]]
then then
HOMEBREW="${1:11}" echo "${0##*/}: This shim is internal and must be run via `brew`." >&2
shift exit 1
fi fi
case "$(lowercase "$SCM_FILE")" in source "$HOMEBREW_LIBRARY/Homebrew/shims/utils.sh"
case "$(lowercase "$SHIM_FILE")" in
git) git)
if [[ -n "$HOMEBREW_GIT" && "$HOMEBREW_GIT" != git ]] if [[ -n "$HOMEBREW_GIT" && "$HOMEBREW_GIT" != git ]]
then then
@ -98,21 +26,10 @@ case "$(lowercase "$SCM_FILE")" in
;; ;;
esac esac
brew_prefix_version="$(quiet_safe_cd "$SCM_DIR/../../../../../bin" 2>/dev/null && pwd -P)/$SCM_FILE" brew_prefix_version="$HOMEBREW_PREFIX/bin/$SHIM_FILE"
safe_exec "$brew_prefix_version" "$@" safe_exec "$brew_prefix_version" "$@"
brew_repo_version="$(quiet_safe_cd "$SCM_DIR/../../../../bin" && pwd -P)/$SCM_FILE" try_exec_non_system "$SHIM_FILE" "$@"
safe_exec "$brew_repo_version" "$@"
IFS=$'\n'
for path in $(type -aP "$SCM_FILE")
do
if [[ "$path" != "/usr/bin/$SCM_FILE" ]]
then
safe_exec "$path" "$@"
fi
done
unset IFS
if executable "/usr/bin/xcode-select" if executable "/usr/bin/xcode-select"
then then
@ -129,19 +46,19 @@ then
fi fi
if [[ -z "$popup_stub" && "$xcode_path" != "/" ]] if [[ -z "$popup_stub" && "$xcode_path" != "/" ]]
then then
path="$(/usr/bin/xcrun -find "$SCM_FILE" 2>/dev/null)" path="$(/usr/bin/xcrun -find "$SHIM_FILE" 2>/dev/null)"
safe_exec "$path" "$@" safe_exec "$path" "$@"
fi fi
fi fi
path="/Applications/Xcode.app/Contents/Developer/usr/bin/$SCM_FILE" path="/Applications/Xcode.app/Contents/Developer/usr/bin/$SHIM_FILE"
safe_exec "$path" "$@" safe_exec "$path" "$@"
if [[ -z "$popup_stub" && "$HOMEBREW_MACOS_VERSION_NUMERIC" -lt "101500" ]] if [[ -z "$popup_stub" && "$HOMEBREW_MACOS_VERSION_NUMERIC" -lt "101500" ]]
then then
path="/usr/bin/$SCM_FILE" path="/usr/bin/$SHIM_FILE"
safe_exec "$path" "$@" safe_exec "$path" "$@"
fi fi
echo "You must: brew install $SCM_FILE" >&2 echo "You must: brew install $SHIM_FILE" >&2
exit 1 exit 1

View File

@ -0,0 +1,94 @@
set +o posix
quiet_safe_cd() {
cd "$1" >/dev/null || { echo "Error: failed to cd to $1" >&2; exit 1; }
}
absdir() {
quiet_safe_cd "${1%/*}/" && pwd -P
}
dirbasepath() {
local dir="$1"
local base="${2##*/}"
echo "$dir/$base"
}
realpath() {
local path="$1"
local dir
local dest
dir="$(absdir "$path")"
path="$(dirbasepath "$dir" "$path")"
while [[ -L "$path" ]]
do
dest="$(readlink "$path")"
if [[ "$dest" = "/"* ]]
then
path="$dest"
else
path="$dir/$dest"
fi
dir="$(absdir "$path")"
path="$(dirbasepath "$dir" "$path")"
done
echo "$path"
}
executable() {
local file="$1"
[[ -f "$file" && -x "$file" ]]
}
lowercase() {
echo "$1" | tr "[:upper:]" "[:lower:]"
}
safe_exec() {
local arg0="$1"
if ! executable "$arg0"
then
return
fi
# prevent fork-bombs
if [[ "$(lowercase "$arg0")" = "$SHIM_FILE" || "$(realpath "$arg0")" = "$SHIM_REAL" ]]
then
return
fi
if [[ "$HOMEBREW" = "print-path" ]]
then
local dir="$(quiet_safe_cd "${arg0%/*}/" && pwd)"
local path="$(dirbasepath "$dir" "$arg0")"
echo "$path"
exit
fi
exec "$@"
}
try_exec_non_system() {
local file="$1"
shift
IFS=$'\n'
for path in $(type -aP "$file")
do
if [[ "$path" != "/usr/bin/$file" ]]
then
safe_exec "$path" "$@"
fi
done
unset IFS
}
SHIM_FILE="${0##*/}"
SHIM_REAL="$(realpath "$0")"
if [[ "$1" = --homebrew=* ]]
then
HOMEBREW="${1:11}"
shift
fi