From 796d8a6da9165986a99c8112bc1d722706046952 Mon Sep 17 00:00:00 2001 From: Henrik Nortamo Date: Tue, 11 Feb 2025 14:35:44 +0200 Subject: [PATCH] Fixes slim update and allows for version selection --- frontends/pip-containerize.py | 9 ++++++++- frontends/script_shared.py | 1 + tests/validate_slim.sh | 17 +++++++++++++++++ 3 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 tests/validate_slim.sh diff --git a/frontends/pip-containerize.py b/frontends/pip-containerize.py index 1f5ad1e..7aaa9a9 100644 --- a/frontends/pip-containerize.py +++ b/frontends/pip-containerize.py @@ -20,6 +20,7 @@ parser_upd.add_argument("-r","--requirements-file", type=lambda x: is_valid_file(parser, x),help="requirements file for pip") add_adv_pars(subparsers) parser_new.add_argument("--slim",action='store_true',help="Use minimal base python container") +parser_new.add_argument("--pyver",help="Docker tag to use for the slim python verison, e.g 3.12.9-bookworm") parser_new.add_argument("--system-site-packages",action='store_true',help="Enable system and user site packages for the created installation") ps=[parser_new,parser_upd] @@ -34,7 +35,7 @@ sys.exit(0) args = parser.parse_args() conf={} -pyver="3.10.0-slim-buster" +pyver="3.12.9-slim-bookworm" @@ -49,8 +50,14 @@ conf["installation_prefix"]=args.prefix conf["mode"]="venv" if args.slim: + if args.pyver: + pyver=args.pyver conf["container_src"]="docker://python:{}".format(pyver) conf["isolate"]="yes" + else: + if args.pyver: + print_warn("Using --pyver without --slim does not have an effect") + elif args.command == "update": conf["mode"]="venv_modify" get_old_conf(args.dir,conf) diff --git a/frontends/script_shared.py b/frontends/script_shared.py index ff6daa9..f906db8 100644 --- a/frontends/script_shared.py +++ b/frontends/script_shared.py @@ -92,5 +92,6 @@ def get_old_conf(d,conf): conf["installation_prefix"]=d conf["sqfs_image"]=old_conf["sqfs_image"] conf["container_image"]=old_conf["container_image"] + conf["isolate"]=old_conf["isolate"] if "wrapper_paths" in old_conf: conf["wrapper_paths"] = old_conf["wrapper_paths"] diff --git a/tests/validate_slim.sh b/tests/validate_slim.sh new file mode 100644 index 0000000..240bb9e --- /dev/null +++ b/tests/validate_slim.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +SCRIPT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )" +source $SCRIPT_DIR/setup.sh + +rm -rf TYKKY_V_TEST +mkdir -p TYKKY_V_TEST + +cd TYKKY_V_TEST +echo "csvkit" > requirements.txt +echo "pip install lxml" > extra.txt + +t_run "pip-containerize new --slim --prefix tykky_test requirements.txt" "Creating slim container works" +t_run "singularity exec tykky_test/container.sif cat /etc/os-release | grep 'Debian'" "Slim container is actually using debian" +t_run "pip-containerize update --post-install extra.txt tykky_test" "Updating a slim container works" +t_run "pip-containerize new --slim --pyver 3.13.2-slim-bullseye --prefix tykky_test2 requirements.txt | grep 'Python 3.13.2'" "--pyver flag does not break" +t_run "tykky_test2/bin/python --version | grep 'Python 3.13.2" "Correct python version used"