i915: rework shader compile failures reporting
[mesa.git] / bin / python-venv.sh
blobb394bbcd061baa1448b426ebfbdf102bb8d29edf
1 #!/usr/bin/env bash
2 set -eu
4 readonly requirements_file=$1
5 shift
7 venv_dir="$(dirname "$requirements_file")"/.venv
8 readonly venv_dir
9 readonly venv_req=$venv_dir/requirements.txt
10 readonly venv_python_version=$venv_dir/python-version.txt
12 if [ -d "$venv_dir" ]
13 then
14 if [ ! -r "$venv_python_version" ]
15 then
16 echo "Python environment predates Python version checks."
17 echo "It might be invalid and needs to be regenerated."
18 rm -rf "$venv_dir"
19 elif ! cmp --quiet <(python --version) "$venv_python_version"
20 then
21 old=$(cat "$venv_python_version")
22 new=$(python --version)
23 echo "Python version has changed ($old -> $new)."
24 echo "Python environment needs to be regenerated."
25 unset old new
26 rm -rf "$venv_dir"
30 if ! [ -r "$venv_dir/bin/activate" ]
31 then
32 echo "Creating Python environment..."
33 python -m venv "$venv_dir"
34 python --version > "$venv_python_version"
37 # shellcheck disable=1091
38 source "$venv_dir/bin/activate"
40 if ! cmp --quiet "$requirements_file" "$venv_req"
41 then
42 echo "$(realpath --relative-to="$PWD" "$requirements_file") has changed, re-installing..."
43 pip --disable-pip-version-check install --requirement "$requirements_file"
44 cp "$requirements_file" "$venv_req"
47 python "$@"