From 93653068b6744c01d2cbaa8ea1b92fdea3c69d46 Mon Sep 17 00:00:00 2001 From: Mariia Zueva Date: Thu, 13 Aug 2026 14:22:46 +0200 Subject: [PATCH] MILABL-6766 Fix rapids env issues for non docker envs --- .changeset/fix-rapids-path-expression.md | 11 +++++++++++ python-3.12.10-rapids/config.json | 1 + python-3.12.10-rapids/package.json | 2 +- 3 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 .changeset/fix-rapids-path-expression.md diff --git a/.changeset/fix-rapids-path-expression.md b/.changeset/fix-rapids-path-expression.md new file mode 100644 index 0000000..82d99ee --- /dev/null +++ b/.changeset/fix-rapids-path-expression.md @@ -0,0 +1,11 @@ +--- +'@platforma-open/milaboratories.runenv-python-3.12.10-rapids': patch +--- + +Fix the RAPIDS runenv `PATH` env var breaking every non-docker run: use `$PATH` instead of `${PATH}`. +`envVars` feeds two consumers with different syntaxes. The Dockerfile generator emits each entry as an `ENV` line, where Docker expands both `${PATH}` and `$PATH` at build time. The native (venv) path renders each entry through the backend's expr-lang renderer, whose scanner regex `{.*?[^\\]}` matches the `{PATH}` inside `${PATH}` and fails with `cannot evaluate expression: "PATH" (variable is not defined)` — rejecting the venv-creation RunCommand, so any block on this runenv failed on a local/desktop backend while docker-backed backends were fine. +`$PATH` carries no braces, so it expands correctly in the Dockerfile and is passed through literally on the native path, where the backend already appends the host `PATH` after any `PATH` entry in `envVars`. + +Add `pyarrow==19.0.1` to the RAPIDS runenv. +Blocks on this runenv install their `requirements.txt` with `pip --no-index --find-links `, so a requirement the runenv does not ship cannot resolve. `pyarrow` was never declared here (every sibling runenv declares it), so any block importing it failed with `No matching distribution found for pyarrow` on every platform where the `cu12` packages are skipped — macOS, Windows and linux-aarch64. On linux-x64 it resolved only incidentally, as a transitive dependency of `cudf-cu12`. +Version is capped by RAPIDS: `cudf-cu12==25.4.0` requires `pyarrow>=14.0.0,<20.0.0a0` (plus `!=17.0.0` on aarch64), making 19.0.1 the highest usable release. That is why it differs from the 21.0.0 / 24.0.0 pinned by the non-RAPIDS runenvs. cp312 wheels exist for all five target platforms. diff --git a/python-3.12.10-rapids/config.json b/python-3.12.10-rapids/config.json index 0c32a1a..5840b68 100644 --- a/python-3.12.10-rapids/config.json +++ b/python-3.12.10-rapids/config.json @@ -12,6 +12,7 @@ "numpy==2.0.2", "scikit-learn==1.7.2", "scipy==1.16.2", + "pyarrow==19.0.1", "umap-learn==0.5.7", "torch==2.7.0", "cudf-cu12==25.4.0", diff --git a/python-3.12.10-rapids/package.json b/python-3.12.10-rapids/package.json index fc48d95..2826674 100644 --- a/python-3.12.10-rapids/package.json +++ b/python-3.12.10-rapids/package.json @@ -26,7 +26,7 @@ "NVIDIA_VISIBLE_DEVICES=all", "NVIDIA_DRIVER_CAPABILITIES=compute,utility", "LD_LIBRARY_PATH=/usr/local/nvidia/lib64:/usr/local/nvidia/lib", - "PATH=/usr/local/nvidia/bin:${PATH}", + "PATH=/usr/local/nvidia/bin:$PATH", "PTXCOMPILER_CHECK_NUMBA_CODEGEN_PATCH_NEEDED=0" ], "roots": {