0
0
mirror of https://github.com/mongodb/mongo.git synced 2024-12-01 09:32:32 +01:00
mongodb/evergreen/functions/venv_setup.sh

44 lines
1.3 KiB
Bash

# exit immediately if virtualenv is not found
set -o errexit
evergreen_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"
. "$evergreen_dir/../prelude_python.sh"
python_loc=$(which ${python:-/opt/mongodbtoolchain/v3/bin/python3})
venv_dir="${workdir}/venv"
if [ -d "$venv_dir" ]; then
exit 0
fi
"$python_loc" -m venv "$venv_dir"
# venv creates its Scripts/activate file with CLRF endings, which
# cygwin bash does not like. dos2unix it
# (See https://bugs.python.org/issue32451)
if [ "Windows_NT" = "$OS" ]; then
dos2unix "${workdir}/venv/Scripts/activate"
fi
export VIRTUAL_ENV_DISABLE_PROMPT=yes
# Not all git get project calls clone into ${workdir}/src so we allow
# callers to tell us where the pip requirements files are.
pip_dir="${pip_dir}"
if [[ -z $pip_dir ]]; then
# Default to most common location
pip_dir="${workdir}/src/etc/pip"
fi
# Same as above we have to use quotes to preserve the
# Windows path separator
toolchain_txt="$pip_dir/toolchain-requirements.txt"
# the whole prelude cannot be imported because it requires pyyaml to be
# installed, which happens just below.
. "$evergreen_dir/../prelude_venv.sh"
activate_venv
echo "Upgrading pip to 21.0.1"
python -m pip install "pip==21.0.1"
python -m pip install -r "$toolchain_txt" -q
python -m pip freeze >pip-requirements.txt