Summary
Installing with pixi 0.71.0 fails at dependency resolution, before any compilation:
Cannot solve the request because of: pixi-build-cmake >=0.3.6,<=0.3.8 cannot be installed:
├─ 0.3.7 | 0.3.8 require pixi-build-api-version >=4,<5 → no candidates
└─ 0.3.6 requires pixi-build-api-version >=2,<3 → no candidates
pixi 0.71 provides a build-API version that none of the pinned backends (0.3.6–0.3.8) satisfy, and the <=0.3.8 upper cap stops pixi from selecting a newer backend that would.
Confirmed reproduction (Perlmutter login node)
- pixi 0.71.0 → fails at the solve above.
- pixi 0.70.0 → resolves
pixi-build-cmake@0.3.8, negotiates API v4, builds normally (SlaterGPU compiles fully, libcint found via conda-forge).
This is the recurring tax of the bounded-pin strategy
We pin the build backend on purpose — backend/tooling updates have broken our builds several times:
pixi 0.71 is the next instance: this time the upper cap of that range is what breaks.
Blast radius — all four repos share the identical pin
pixi-build-cmake = ">=0.3.6,<=0.3.8", requires-pixi = ">=0.60.0":
- ZimmermanGroup/SlaterGPU
- ZimmermanGroup/ZEST (pulls SlaterGPU as a source dependency)
- ZimmermanGroup/XCtera (pulls SlaterGPU as a source dependency)
- ZimmermanGroup/molecularGSM
A coordinated bump is needed; ZEST/XCtera also need SlaterGPU bumped because they build it from source.
Proposed fix — keep the bounded pin, bump the cap to a tested version
We should not drop the upper cap (history shows backend updates do break us). Instead:
- Identify the newest
pixi-build-cmake that negotiates with pixi 0.71's build-API version (likely 0.3.9+/0.4.x).
- Verify a clean
pixi install on pixi 0.71 (and confirm a still-supported floor on an older pixi).
- Bump all four repos to
>=0.3.6,<=<new tested version> (keeping a bounded range), updating requires-pixi only if a higher floor is actually required.
Reducing the future maintenance burden
Context
- Surfaced while doing the local build verification for the exact-4c work (ZimmermanGroup/ZEST#99).
Summary
Installing with pixi 0.71.0 fails at dependency resolution, before any compilation:
pixi 0.71 provides a build-API version that none of the pinned backends (
0.3.6–0.3.8) satisfy, and the<=0.3.8upper cap stops pixi from selecting a newer backend that would.Confirmed reproduction (Perlmutter login node)
pixi-build-cmake@0.3.8, negotiates API v4, builds normally (SlaterGPU compiles fully, libcint found via conda-forge).This is the recurring tax of the bounded-pin strategy
We pin the build backend on purpose — backend/tooling updates have broken our builds several times:
==0.3.4pin; fixed by moving to the range>=0.3.6,<=0.3.8.pixi 0.71 is the next instance: this time the upper cap of that range is what breaks.
Blast radius — all four repos share the identical pin
pixi-build-cmake = ">=0.3.6,<=0.3.8",requires-pixi = ">=0.60.0":A coordinated bump is needed; ZEST/XCtera also need SlaterGPU bumped because they build it from source.
Proposed fix — keep the bounded pin, bump the cap to a tested version
We should not drop the upper cap (history shows backend updates do break us). Instead:
pixi-build-cmakethat negotiates with pixi 0.71's build-API version (likely0.3.9+/0.4.x).pixi installon pixi 0.71 (and confirm a still-supported floor on an older pixi).>=0.3.6,<=<new tested version>(keeping a bounded range), updatingrequires-pixionly if a higher floor is actually required.Reducing the future maintenance burden
use-latest-pixiCI added in Support multiple pixi versions via build backend version range #71 is meant to catch exactly this — confirm whether it already flagged 0.71, and treat its failure as the trigger to bump the cap (turning a user-facing break into a scheduled maintenance task).Context