21230: Refactor out pip_install_sdist function
authorBrett Smith <brett.smith@curii.com>
Tue, 16 Jan 2024 15:38:42 +0000 (10:38 -0500)
committerBrett Smith <brett.smith@curii.com>
Tue, 16 Jan 2024 16:16:27 +0000 (11:16 -0500)
This can be useful to supporting tooling like test_with_arvbox.sh.

Arvados-DCO-1.1-Signed-off-by: Brett Smith <brett.smith@curii.com>

tools/arvbox/lib/arvbox/docker/common.sh
tools/arvbox/lib/arvbox/docker/service/sdk/run-service

index 81516ef08a5d50bf5bb58a501329edf20d0dd646..54ec9403ad9135179682eca94817b7be6973d6e9 100644 (file)
@@ -100,3 +100,22 @@ bundler_binstubs() {
     fi
     flock $GEMLOCK $BUNDLER binstubs --all
 }
+
+# Usage: Pass any number of directories. Relative directories will be taken as
+# relative to /usr/src/arvados. This function will build an sdist from each,
+# then pip install them all in the arvbox virtualenv.
+pip_install_sdist() {
+    local sdist_dir="$(mktemp --directory --tmpdir py_sdist.XXXXXXXX)"
+    trap 'rm -rf "$sdist_dir"' RETURN
+    local src_dir
+    for src_dir in "$@"; do
+        case "$src_dir" in
+            /*) ;;
+            *) src_dir="/usr/src/arvados/$src_dir" ;;
+        esac
+        env -C "$src_dir" /opt/arvados-py/bin/python3 setup.py sdist --dist-dir="$sdist_dir" \
+            || return
+    done
+    /opt/arvados-py/bin/pip install "$sdist_dir"/* || return
+    return
+}
index 3e00b0ea20ad01fdd3771c0227eaa25608b90be4..216066530ee15ac0fc2a899ec4cfcea7c2769f4c 100755 (executable)
@@ -14,10 +14,4 @@ run_bundler --binstubs=binstubs
 cd /usr/src/arvados/sdk/cli
 run_bundler --binstubs=binstubs
 
-python_srcdir="$(mktemp --directory --tmpdir pysrc.XXXXXXXX)"
-trap 'rm -rf "$python_srcdir"' EXIT INT TERM QUIT
-for subdir in sdk/python services/fuse sdk/cwl; do
-    env -C "/usr/src/arvados/$subdir" \
-        /opt/arvados-py/bin/python3 setup.py sdist --dist-dir="$python_srcdir"
-done
-/opt/arvados-py/bin/pip install "$python_srcdir"/*
+pip_install_sdist sdk/python services/fuse sdk/cwl