cmd/vendor-install: undocumented option to allow setting processor.

This can be useful when testing fetch on a different processor than the
one the user is running on.

While we're here, refactor code run on `source` to need a function call
instead.
This commit is contained in:
Mike McQuaid 2024-01-18 14:38:56 +00:00
parent e9587a5ecc
commit ebfa93c949
No known key found for this signature in database
GPG Key ID: 3338A31AFDB1D829

View File

@ -12,36 +12,37 @@ source "${HOMEBREW_LIBRARY}/Homebrew/utils/lock.sh"
VENDOR_DIR="${HOMEBREW_LIBRARY}/Homebrew/vendor"
# Built from https://github.com/Homebrew/homebrew-portable-ruby.
if [[ -n "${HOMEBREW_MACOS}" ]]
then
if [[ "${HOMEBREW_PHYSICAL_PROCESSOR}" == "x86_64" ]] ||
set_ruby_variables() {
if [[ -n "${HOMEBREW_MACOS}" ]]
then
if [[ "${VENDOR_PHYSICAL_PROCESSOR}" == "x86_64" ]] ||
# Handle the case where /usr/local/bin/brew is run under arm64.
# It's a x86_64 installation there (we refuse to install arm64 binaries) so
# use a x86_64 Portable Ruby.
[[ "${HOMEBREW_PHYSICAL_PROCESSOR}" == "arm64" && "${HOMEBREW_PREFIX}" == "/usr/local" ]]
[[ "${VENDOR_PHYSICAL_PROCESSOR}" == "arm64" && "${HOMEBREW_PREFIX}" == "/usr/local" ]]
then
ruby_FILENAME="portable-ruby-3.1.4.el_capitan.bottle.tar.gz"
ruby_SHA="02180ca8b8295422ae84921bcf034b7ee8ce5575488bd5e6a37a192e53cd5d34"
elif [[ "${HOMEBREW_PHYSICAL_PROCESSOR}" == "arm64" ]]
elif [[ "${VENDOR_PHYSICAL_PROCESSOR}" == "arm64" ]]
then
ruby_FILENAME="portable-ruby-3.1.4.arm64_big_sur.bottle.tar.gz"
ruby_SHA="d783cbeb6e6ef0d71c0b442317b54554370decd6fac66bf2d4938c07a63f67be"
fi
elif [[ -n "${HOMEBREW_LINUX}" ]]
then
case "${HOMEBREW_PROCESSOR}" in
elif [[ -n "${HOMEBREW_LINUX}" ]]
then
case "${VENDOR_PROCESSOR}" in
x86_64)
ruby_FILENAME="portable-ruby-3.1.4.x86_64_linux.bottle.tar.gz"
ruby_SHA="f7be167f7ac4f296b9f4c5874ceeea4aafd9999c3c7f2b0378cae7dd273e2322"
;;
*) ;;
esac
fi
fi
# Dynamic variables can't be detected by shellcheck
# shellcheck disable=SC2034
if [[ -n "${ruby_SHA}" && -n "${ruby_FILENAME}" ]]
then
# Dynamic variables can't be detected by shellcheck
# shellcheck disable=SC2034
if [[ -n "${ruby_SHA}" && -n "${ruby_FILENAME}" ]]
then
ruby_URLs=()
if [[ -n "${HOMEBREW_ARTIFACT_DOMAIN}" ]]
then
@ -56,7 +57,8 @@ then
"https://github.com/Homebrew/homebrew-portable-ruby/releases/download/3.1.4/${ruby_FILENAME}"
)
ruby_URL="${ruby_URLs[0]}"
fi
fi
}
check_linux_glibc_version() {
if [[ -z "${HOMEBREW_LINUX}" || -z "${HOMEBREW_LINUX_MINIMUM_GLIBC_VERSION}" ]]
@ -231,6 +233,13 @@ install() {
safe_cd "${VENDOR_DIR}"
[[ -n "${HOMEBREW_QUIET}" ]] || ohai "Pouring ${VENDOR_FILENAME}" >&2
tar "${tar_args}" "${CACHED_LOCATION}"
if [[ "${VENDOR_PROCESSOR}" != "${HOMEBREW_PROCESSOR}" ]] ||
[[ "${VENDOR_PHYSICAL_PROCESSOR}" != "${HOMEBREW_PHYSICAL_PROCESSOR}" ]]
then
return 0
fi
safe_cd "${VENDOR_DIR}/portable-${VENDOR_NAME}"
if "./${VENDOR_VERSION}/bin/${VENDOR_NAME}" --version >/dev/null
@ -274,7 +283,20 @@ homebrew-vendor-install() {
[[ "${option}" == *d* ]] && HOMEBREW_DEBUG=1
;;
*)
[[ -n "${VENDOR_NAME}" ]] && odie "This command does not take multiple vendor targets!"
if [[ -n "${VENDOR_NAME}" ]]
then
if [[ -n "${HOMEBREW_DEVELOPER}" ]]
then
if [[ -n "${PROCESSOR_TARGET}" ]]
then
odie "This command does not more than vendor and processor targets!"
else
VENDOR_PHYSICAL_PROCESSOR="${option}"
VENDOR_PROCESSOR="${option}"
fi
fi
odie "This command does not take multiple vendor targets!"
fi
VENDOR_NAME="${option}"
;;
esac
@ -282,6 +304,18 @@ homebrew-vendor-install() {
[[ -z "${VENDOR_NAME}" ]] && odie "This command requires a vendor target!"
[[ -n "${HOMEBREW_DEBUG}" ]] && set -x
if [[ -z "${VENDOR_PHYSICAL_PROCESSOR}" ]]
then
VENDOR_PHYSICAL_PROCESSOR="${HOMEBREW_PHYSICAL_PROCESSOR}"
fi
if [[ -z "${VENDOR_PROCESSOR}" ]]
then
VENDOR_PROCESSOR="${HOMEBREW_PROCESSOR}"
fi
set_ruby_variables
check_linux_glibc_version
filename_var="${VENDOR_NAME}_FILENAME"