1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
|
#!/bin/sh
# Run a Python script, setting up PYTHONPATH for access to test/common and the
# python libraries in bots/. Checks out the bots first, if necessary.
# This is intended to be used from the interpreter line of executable Python
# scripts, referring to it with a relative path. The interpreter line should
# look something like so:
#!/usr/bin/python3 -cimport os, sys; os.execv(os.path.dirname(sys.argv[1]) + "/../test/common/pywrap", sys.argv)
# with the `/../test/common/` part determined by the location of the script
# relative to this script.
set -eu
realpath="$(realpath "$0")"
top_srcdir="${realpath%/*}/../.."
# Check out the bots if required
test -d "${top_srcdir}/bots" || "${top_srcdir}/test/common/make-bots"
# Prepend the path
PYTHONPATH="${top_srcdir}/test/common:${top_srcdir}/bots:${PYTHONPATH:+:${PYTHONPATH}}"
export PYTHONPATH
# Run the script
# -B : don't write .pyc files on import; also PYTHONDONTWRITEBYTECODE=x
# -P : don't prepend a potentially unsafe path to sys.path -- but not available in RHEL 8/9 yet, use once we can
exec python3 -B "$@"
|