Skip to content

Commit 010424d

Browse files
committed
ci: pin torch in build/test requirements to match the wheel range
Both `env/build_requirements.txt` and `env/test_requirements.txt` left `torch` unpinned, so `uv pip install --extra-index-url https://download.pytorch.org/whl/cu130 ...` resolved it to whatever was newest on the CUDA index. That worked while the newest cu130 torch matched `pyproject.toml`'s declared wheel range (`torch>=2.8,<2.12`). Once torch `2.12.0+cu130` was published, the build env started installing 2.12.0+cu130 (so fvdb's `.so` was compiled against the 2.12 ABI, which includes `at::TensorBase::const_data_ptr<int8_t>`), but the *test* env's install of the resulting wheel hit pyproject's `<2.12` ceiling and pip downgraded torch to the CPU-only `2.11.0` from PyPI (which is missing those CUDA-side template symbols). The CUDA 13.0 unit-test pipeline then surfaces: ImportError: .../libfvdb.so: undefined symbol: _ZNK2at10TensorBase14const_data_ptrIaEEPKT_v at `import fvdb` time. Every CUDA 13.0 PR since 2026-05-16 has been red on this; the CUDA 12.8 pipeline isn't affected (its index still serves a wheel in-range). Pinning `torch>=2.10,<2.12` in both files brings build and test back onto the same wheel and reflects the wheel's declared range directly. A follow-up PR can drop the upper bound once the rest of fvdb has been verified against torch 2.12. Signed-off-by: Francis Williams <francis@fwilliams.info>
1 parent bedf87e commit 010424d

2 files changed

Lines changed: 15 additions & 2 deletions

File tree

env/build_requirements.txt

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,14 @@ scikit_build_core
33
wheel
44
ninja
55
numpy
6-
torch
6+
# Pin torch to the range pyproject.toml declares for the wheel
7+
# (`torch>=2.8,<2.12`). Without an explicit pin here `uv pip install`
8+
# resolves `torch` to the latest version on the CUDA index; once
9+
# torch 2.12 was published, the build env started installing
10+
# 2.12.0+cu130, fvdb's `.so` ended up compiled against the 2.12 ABI,
11+
# and then the test step's install of the resulting wheel hit
12+
# pyproject's `<2.12` ceiling and downgraded torch to the CPU-only
13+
# 2.11.0 from PyPI -- which is missing those CUDA-side template
14+
# symbols and surfaces as `ImportError: undefined symbol` at
15+
# `import fvdb` time on the CUDA 13.0 pipeline.
16+
torch>=2.10,<2.12

env/test_requirements.txt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,10 @@ wheel
44
ninja
55
tqdm
66
numpy
7-
torch
7+
# Pin must match env/build_requirements.txt so the test env loads
8+
# the same torch ABI the wheel was compiled against. See the longer
9+
# comment in build_requirements.txt for the failure mode this avoids.
10+
torch>=2.10,<2.12
811
GitPython
912
pandas
1013
pytest

0 commit comments

Comments
 (0)