From fe992cab2b943269e39e8f9f5830f4983c440e8b Mon Sep 17 00:00:00 2001 From: Mike McQuaid Date: Tue, 2 Mar 2021 15:11:14 +0000 Subject: [PATCH] Revert "shims/mac/super: add ruby shims to set SDKROOT" --- .github/workflows/tests.yml | 2 +- Library/Homebrew/shims/mac/super/gem | 1 - Library/Homebrew/shims/mac/super/rake | 1 - Library/Homebrew/shims/mac/super/ruby | 12 --- Library/Homebrew/shims/scm/git | 107 +++++++++++++++++++++++--- Library/Homebrew/shims/utils.sh | 94 ---------------------- 6 files changed, 96 insertions(+), 121 deletions(-) delete mode 120000 Library/Homebrew/shims/mac/super/gem delete mode 120000 Library/Homebrew/shims/mac/super/rake delete mode 100755 Library/Homebrew/shims/mac/super/ruby delete mode 100644 Library/Homebrew/shims/utils.sh diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index cd8dd376fe..497e0f7767 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -276,7 +276,7 @@ jobs: - name: Install brew tests dependencies run: | brew install subversion - brew sh -c "svn --homebrew=print-path" + Library/Homebrew/shims/scm/svn --homebrew=print-path which svn which svnadmin diff --git a/Library/Homebrew/shims/mac/super/gem b/Library/Homebrew/shims/mac/super/gem deleted file mode 120000 index a38a43ef7a..0000000000 --- a/Library/Homebrew/shims/mac/super/gem +++ /dev/null @@ -1 +0,0 @@ -ruby \ No newline at end of file diff --git a/Library/Homebrew/shims/mac/super/rake b/Library/Homebrew/shims/mac/super/rake deleted file mode 120000 index a38a43ef7a..0000000000 --- a/Library/Homebrew/shims/mac/super/rake +++ /dev/null @@ -1 +0,0 @@ -ruby \ No newline at end of file diff --git a/Library/Homebrew/shims/mac/super/ruby b/Library/Homebrew/shims/mac/super/ruby deleted file mode 100755 index 91921781ff..0000000000 --- a/Library/Homebrew/shims/mac/super/ruby +++ /dev/null @@ -1,12 +0,0 @@ -#!/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" "$@" diff --git a/Library/Homebrew/shims/scm/git b/Library/Homebrew/shims/scm/git index a33d4ea433..65ecc55237 100755 --- a/Library/Homebrew/shims/scm/git +++ b/Library/Homebrew/shims/scm/git @@ -3,15 +3,87 @@ # 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. -if [ -z "$HOMEBREW_LIBRARY" ] +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")" = "$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 - echo "${0##*/}: This shim is internal and must be run via `brew`." >&2 - exit 1 + HOMEBREW="${1:11}" + shift fi -source "$HOMEBREW_LIBRARY/Homebrew/shims/utils.sh" - -case "$(lowercase "$SHIM_FILE")" in +case "$(lowercase "$SCM_FILE")" in git) if [[ -n "$HOMEBREW_GIT" && "$HOMEBREW_GIT" != git ]] then @@ -26,10 +98,21 @@ case "$(lowercase "$SHIM_FILE")" in ;; esac -brew_prefix_version="$HOMEBREW_PREFIX/bin/$SHIM_FILE" +brew_prefix_version="$(quiet_safe_cd "$SCM_DIR/../../../../../bin" 2>/dev/null && pwd -P)/$SCM_FILE" safe_exec "$brew_prefix_version" "$@" -try_exec_non_system "$SHIM_FILE" "$@" +brew_repo_version="$(quiet_safe_cd "$SCM_DIR/../../../../bin" && pwd -P)/$SCM_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" then @@ -46,19 +129,19 @@ then fi if [[ -z "$popup_stub" && "$xcode_path" != "/" ]] then - path="$(/usr/bin/xcrun -find "$SHIM_FILE" 2>/dev/null)" + path="$(/usr/bin/xcrun -find "$SCM_FILE" 2>/dev/null)" safe_exec "$path" "$@" fi fi -path="/Applications/Xcode.app/Contents/Developer/usr/bin/$SHIM_FILE" +path="/Applications/Xcode.app/Contents/Developer/usr/bin/$SCM_FILE" safe_exec "$path" "$@" if [[ -z "$popup_stub" && "$HOMEBREW_MACOS_VERSION_NUMERIC" -lt "101500" ]] then - path="/usr/bin/$SHIM_FILE" + path="/usr/bin/$SCM_FILE" safe_exec "$path" "$@" fi -echo "You must: brew install $SHIM_FILE" >&2 +echo "You must: brew install $SCM_FILE" >&2 exit 1 diff --git a/Library/Homebrew/shims/utils.sh b/Library/Homebrew/shims/utils.sh deleted file mode 100644 index 7d90d7b697..0000000000 --- a/Library/Homebrew/shims/utils.sh +++ /dev/null @@ -1,94 +0,0 @@ -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