mongo/evergreen/functions/venv_adjust.sh
Nick Jefferies 5a6518600b SERVER-117434: Fix venv_adjust.sh sed for BSD sed compatibility (#46630)
GitOrigin-RevId: b5e71e2e312f0e48f7dc3ea65bd63e1c0aa7dd70
2026-01-21 17:28:57 +00:00

60 lines
2.0 KiB
Bash

DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"
. "$DIR/../prelude_python.sh"
set -o errexit
set -o verbose
python_loc=$(which ${python})
pushd venv
venv_dir=$(pwd)
popd
ARCH=$(uname -m)
if [[ "$ARCH" == "arm64" || "$ARCH" == "aarch64" ]]; then
ARCH="arm64"
elif [[ "$ARCH" == "ppc64le" || "$ARCH" == "ppc64" || "$ARCH" == "ppc" || "$ARCH" == "ppcle" ]]; then
ARCH="ppc64le"
elif [[ "$ARCH" == "s390x" || "$ARCH" == "s390" ]]; then
ARCH="s390x"
else
ARCH="x86_64"
fi
# TODO SERVER-105520
# try using downloaded venv once more reliability has been built into venv upload/download
if [[ "$ARCH" == "ppc64le" ]]; then
rm -rf $venv_dir
source "$DIR/venv_setup.sh"
else
# Update virtual env directory in activate script
if [ "Windows_NT" = "$OS" ]; then
# Update VIRTUAL_ENV paths in activate script
# Python 3.10 format: VIRTUAL_ENV="C:\path\to\venv"
# Python 3.13 format: VIRTUAL_ENV=$(cygpath 'C:\path\to\venv') and export VIRTUAL_ENV='C:\path\to\venv'
# Use multiple sed patterns to handle both formats
sed -i -e "s:VIRTUAL_ENV=\".*\":VIRTUAL_ENV=\"$venv_dir\":" \
-e "s:VIRTUAL_ENV='.*':VIRTUAL_ENV='$venv_dir':" \
-e "s:VIRTUAL_ENV=\$(cygpath ['\"].*['\"])$:VIRTUAL_ENV=\$(cygpath '$venv_dir'):" \
"$venv_dir/Scripts/activate"
else
# Update VIRTUAL_ENV paths in activate script
# Python 3.10 format: VIRTUAL_ENV="/path" (double quoted)
# Python 3.13 format: export VIRTUAL_ENV=/path (unquoted with export)
sed -e "s:VIRTUAL_ENV=\".*\":VIRTUAL_ENV=\"$venv_dir\":" \
-e "s:export VIRTUAL_ENV=/.*:export VIRTUAL_ENV=$venv_dir:" \
"$venv_dir/bin/activate" >"$venv_dir/bin/activate.tmp"
mv "$venv_dir/bin/activate.tmp" "$venv_dir/bin/activate"
fi
# Add back python symlinks on linux platforms
if [ "Windows_NT" = "$OS" ]; then
exit 0
fi
cd "$venv_dir/bin"
rm python python3
ln -s "$python_loc" python3
ln -s python3 python
fi