blob: 95283e0b87363e25d3a925256666f64d066a9798 [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"
justinT21a4fa3e22024-10-12 17:09:50 -070030 if [[ -e "${path}/../pip_deps_nvidia_nccl_cu12" ]]; then
31 LD_LIBRARY_PATH+=":${path}/../pip_deps_nvidia_nccl_cu12/site-packages/nvidia/nccl/lib/"
32 fi
Philipp Schrader7520ee62022-12-10 14:04:40 -080033 export LD_LIBRARY_PATH
Philipp Schrader9e1b9bd2021-12-28 00:15:12 -080034 break
Brian Silverman6470f442018-08-05 12:08:16 -070035 fi
36done
37
Philipp Schrader9e1b9bd2021-12-28 00:15:12 -080038if [[ -z "$PYTHON_BIN" ]]; then
Brian Silverman6470f442018-08-05 12:08:16 -070039 echo "Could not find Python base path." >&2
40 echo "More sophisticated logic may be needed." >&2
41 exit 1
42fi
43
Austin Schuh9327d712024-09-02 13:49:18 -070044export XLA_FLAGS=--xla_gpu_cuda_data_dir=/usr/lib/cuda
45
Philipp Schrader092a62d2021-12-05 23:15:05 -080046# Prevent Python from importing the host's installed packages.
Philipp Schrader9e1b9bd2021-12-28 00:15:12 -080047exec "$PYTHON_BIN" -sS "$@"