0
0
mirror of https://github.com/mongodb/mongo.git synced 2024-12-01 09:32:32 +01:00
mongodb/evergreen/prelude.sh
2021-04-28 15:17:48 +00:00

107 lines
3.1 KiB
Bash
Executable File

if [[ "$0" == *"/evergreen/prelude.sh" ]]; then
echo "ERROR: do not execute this script. source it instead. ie: . prelude.sh"
exit 1
fi
# path the directory that contains this script.
evergreen_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"
# bootstrapping python assumes that the user has not cd'd before the prelude.
# Ensure that here.
calculated_workdir=$(cd "$evergreen_dir/../.." && echo $PWD)
if [ "$PWD" != "$calculated_workdir" ]; then
echo "ERROR: Your script changed directory before loading prelude.sh. Don't do that"
echo "\$PWD: $PWD"
echo "\$calculated_workdir: $calculated_workdir"
exit 1
fi
function activate_venv {
set -e
# check if virtualenv is set up
if [ -d "${workdir}/venv" ]; then
if [ "Windows_NT" = "$OS" ]; then
# Need to quote the path on Windows to preserve the separator.
. "${workdir}/venv/Scripts/activate" 2>/tmp/activate_error.log
else
. ${workdir}/venv/bin/activate 2>/tmp/activate_error.log
fi
if [ $? -ne 0 ]; then
echo "Failed to activate virtualenv: $(cat /tmp/activate_error.log)"
fi
python=python
else
python=${python:-/opt/mongodbtoolchain/v3/bin/python3}
fi
if [ "Windows_NT" = "$OS" ]; then
export PYTHONPATH="$PYTHONPATH;$(cygpath -w ${workdir}/src)"
else
export PYTHONPATH="$PYTHONPATH:${workdir}/src"
fi
echo "python set to $(which $python)"
set +e
}
expansions_yaml="$evergreen_dir/../../expansions.yml"
expansions_default_yaml="$evergreen_dir/../etc/expansions.default.yml"
script="$evergreen_dir/../buildscripts/evergreen_expansions2bash.py"
if [ "Windows_NT" = "$OS" ]; then
expansions_yaml=$(cygpath -w "$expansions_yaml")
expansions_default_yaml=$(cygpath -w "$expansions_default_yaml")
script=$(cygpath -w "$script")
fi
eval $(activate_venv >/dev/null && $python "$script" "$expansions_yaml" "$expansions_default_yaml")
if [ -n "$___expansions_error" ]; then
echo $___expansions_error
exit 1
fi
unset expansions_yaml
unset expansions_default_yaml
unset script
unset evergreen_dir
function add_nodejs_to_path {
# Add node and npm binaries to PATH
if [ "Windows_NT" = "$OS" ]; then
# An "npm" directory might not have been created in %APPDATA% by the Windows installer.
# Work around the issue by specifying a different %APPDATA% path.
# See: https://github.com/nodejs/node-v0.x-archive/issues/8141
export APPDATA=${workdir}/npm-app-data
export PATH="$PATH:/cygdrive/c/Program Files (x86)/nodejs" # Windows location
# TODO: this is to work around BUILD-8652
cd "$(pwd -P | sed 's,cygdrive/c/,cygdrive/z/,')"
else
export PATH="$PATH:/opt/node/bin"
fi
}
function posix_workdir {
if [ "Windows_NT" = "$OS" ]; then
echo $(cygpath -u "${workdir}")
else
echo ${workdir}
fi
}
function set_sudo {
set -o >/tmp/settings.log
set +o errexit
grep errexit /tmp/settings.log | grep on
errexit_on=$?
# Set errexit "off".
set +o errexit
sudo=
# Use sudo, if it is supported.
sudo date >/dev/null 2>&1
if [ $? -eq 0 ]; then
sudo=sudo
fi
# Set errexit "on", if previously enabled.
if [ $errexit_on -eq 0 ]; then
set -o errexit
fi
}