Merge pull request #3151 from ChristianFredrikJohnsen/fix/conda-rehash

Do not execute conda-specific code if conda is not installed
This commit is contained in:
native-api 2025-02-13 08:48:57 +03:00 committed by GitHub
commit 1c2a7658f0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 58 additions and 44 deletions

View File

@ -11,18 +11,32 @@ conda_exists() {
[ -n "${condas}" ] [ -n "${condas}" ]
} }
if conda_exists; then
# Reads the list of `blacklisted` conda binaries
# from `conda.d/default.list` and creates a function
# `conda_shim` to skip creating shims for those binaries.
build_conda_exclusion_list() {
shims=() shims=()
shopt -s nullglob for shim in $(sed 's/#.*$//; /^[[:space:]]*$/d' "${BASH_SOURCE%/*}/conda.d/default.list"); do
for shim in $(cat "${BASH_SOURCE%/*}/conda.d/"*".list" | sort | uniq | sed -e 's/#.*$//' | sed -e '/^[[:space:]]*$/d'); do
if [ -n "${shim##*/}" ]; then if [ -n "${shim##*/}" ]; then
shims[${#shims[*]}]="${shim})return 0;;" shims[${#shims[*]}]="${shim})return 0;;"
fi fi
done done
shopt -u nullglob eval \
eval "conda_shim(){ case \"\${1##*/}\" in ${shims[@]} *)return 1;;esac;}" "conda_shim() {
case \"\${1##*/}\" in
${shims[@]}
*) return 1;;
esac
}"
}
# override `make_shims` to avoid conflict between pyenv-virtualenv's `envs.bash` # override `make_shims` to avoid conflict between pyenv-virtualenv's `envs.bash`
# https://github.com/pyenv/pyenv-virtualenv/blob/v20160716/etc/pyenv.d/rehash/envs.bash # https://github.com/pyenv/pyenv-virtualenv/blob/v20160716/etc/pyenv.d/rehash/envs.bash
# The only difference between this `make_shims` and the `make_shims` defined
# in `libexec/pyenv-rehash` is that this one calls `conda_shim` to check
# if shim is blacklisted. If blacklisted -> skip creating shim.
make_shims() { make_shims() {
local file shim local file shim
for file do for file do
@ -53,6 +67,6 @@ deregister_conda_shims() {
fi fi
} }
if conda_exists; then build_conda_exclusion_list
deregister_conda_shims deregister_conda_shims
fi fi

View File

@ -117,6 +117,7 @@ factor
false false
fmt fmt
fold fold
greadlink
groups groups
head head
hostid hostid
@ -192,4 +193,3 @@ who
whoami whoami
yes yes
# --- end exclusions from coreutils # --- end exclusions from coreutils
greadlink