diff options
author | 2023-08-19 16:10:59 -0700 | |
---|---|---|
committer | 2023-08-19 20:42:56 -0700 | |
commit | 0db60fc25bb48d2c139b91e78b7bcfe7b98475b4 (patch) | |
tree | c7be500ffe0ca2a8acbd603395cb13fe331d39f2 /scripts | |
parent | Use buildpack-deps as the builder base image (diff) |
Install multiple Python versions in image
Separate snekbox's Python interpreter from the interpreter used by
NsJail. This allows for the interpreters to be updated on different
cadences and provides better isolation of packages.
Each Python interpreter adds about 70 MB to the built image.
Diffstat (limited to 'scripts')
-rwxr-xr-x | scripts/build_python.sh | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/scripts/build_python.sh b/scripts/build_python.sh new file mode 100755 index 0000000..da937c2 --- /dev/null +++ b/scripts/build_python.sh @@ -0,0 +1,22 @@ +#!/usr/bin/env bash +set -euxo pipefail +shopt -s inherit_errexit + +py_version="${1}" + +# Install Python interpreter under e.g. /lang/python/3.11/ (no patch version). +"${PYENV_ROOT}/plugins/python-build/bin/python-build" \ + "${py_version}" \ + "/lang/python/${py_version%.*}" +"/lang/python/${py_version%.*}/bin/python" -m pip install -U pip + +# Clean up some unnecessary files to reduce image size bloat. +find /lang/python/ -depth \ +\( \ + \( -type d -a \( \ + -name test -o -name tests -o -name idle_test \ + \) \) \ + -o \( -type f -a \( \ + -name '*.pyc' -o -name '*.pyo' -o -name 'libpython*.a' \ + \) \) \ +\) -exec rm -rf '{}' + |