blob: 8498408e13aa728f642118d2c06b83cf001bbd78 [file] [log] [blame]
Brian Silverman6470f442018-08-05 12:08:16 -07001#!/bin/bash
2
3set -e
4set -u
5set -o pipefail
6
7# We disable writing .pyc files here so that the invocation is more
8# deterministic. If we get a corrupted .pyc file (for some reason) in the
9# .runfiles directory the corresponding Python invocation would crash with an
10# EOFError. You can try this by calling truncate(1) on a .pyc file and running
11# your Python script.
12# In the bazel sandbox none of the .pyc files are preserved anyway.
13# Sandboxing also means that Python's entire standard library got cached which
14# normally doesn't happen. That can lead to higher memory usage during the
15# individual build steps.
16export PYTHONDONTWRITEBYTECODE=1
17
18# Find the path that contains the Python runtime. It's not always obvious. For
19# example in a genrule the Python runtime is in the runfiles folder of the
20# tool, not of the genrule.
21# TODO(philipp): Is there a better way to do this?
Philipp Schrader9e1b9bd2021-12-28 00:15:12 -080022PYTHON_BIN=""
Brian Silverman6470f442018-08-05 12:08:16 -070023for path in ${PYTHONPATH//:/ }; do
Philipp Schrader9e1b9bd2021-12-28 00:15:12 -080024 if [[ "$path" == *.runfiles/python3_9_x86_64-unknown-linux-gnu ]]; then
25 PYTHON_BIN="$path"/bin/python3
Philipp Schrader7520ee62022-12-10 14:04:40 -080026 LD_LIBRARY_PATH=":${path}/lib"
27 LD_LIBRARY_PATH+=":${path}/../gtk_runtime/lib/x86_64-linux-gnu"
28 LD_LIBRARY_PATH+=":${path}/../gtk_runtime/usr/lib/x86_64-linux-gnu"
29 LD_LIBRARY_PATH+=":${path}/../gtk_runtime/usr/lib"
30 export LD_LIBRARY_PATH
Philipp Schrader9e1b9bd2021-12-28 00:15:12 -080031 break
Brian Silverman6470f442018-08-05 12:08:16 -070032 fi
33done
34
Philipp Schrader9e1b9bd2021-12-28 00:15:12 -080035if [[ -z "$PYTHON_BIN" ]]; then
Brian Silverman6470f442018-08-05 12:08:16 -070036 echo "Could not find Python base path." >&2
37 echo "More sophisticated logic may be needed." >&2
38 exit 1
39fi
40
Austin Schuh9327d712024-09-02 13:49:18 -070041export XLA_FLAGS=--xla_gpu_cuda_data_dir=/usr/lib/cuda
42
Philipp Schrader092a62d2021-12-05 23:15:05 -080043# Prevent Python from importing the host's installed packages.
Philipp Schrader9e1b9bd2021-12-28 00:15:12 -080044exec "$PYTHON_BIN" -sS "$@"