Skip to content

Cap pixi-build-cmake at 0.3.11 and pixi below 0.71 (restores CPU-only builds) - #105

Merged
joshkamm merged 1 commit into
mainfrom
fix-cap-backend-0311-cpu-builds
Sep 7, 2026
Merged

joshkamm merged 1 commit into
mainfrom
fix-cap-backend-0311-cpu-builds

Conversation

@joshkamm

@joshkamm joshkamm commented Sep 7, 2026

Copy link
Copy Markdown
Member

Why

CPU-only builds are currently broken, silently.

pixi-build-cmake stopped forwarding the ambient build environment in 0.3.12 — 0.3.11 is the last version that still does. Verified across every version in between:

backend MYFLAG=OFF visible to CMake?
0.3.8 – 0.3.11 yes
0.3.12 – 0.3.14 no

CMakeLists.txt reads the toggle via $ENV{USE_ACC} and defaults to ON, so on 0.3.12+ USE_ACC=OFF is ignored and a CPU-only request produces a GPU build that exits 0 with no warning.

Because pixi.lock does not record backend versions, which backend you get depends on when your machine last solved — so this reproduces for some people and not others on the identical commit.

What

  • backend >=0.3.6,<=0.4.5 → >=0.3.6,<=0.3.11
  • requires-pixi >=0.60.0 → >=0.60.0,<0.71

The pixi cap matters for the error message. pixi 0.71 is the first release to drop build-API v4, and without the cap you get a failure deep in the solver that never mentions pixi:

× could not initialize the build-backend
╰─▶ pixi-build-cmake >=0.3.6,<=0.4.5 cannot be installed:
    ├─ 0.4.5 → pixi-build-api-version >=6,<7 — no candidates found
    └─ 0.3.7 … 0.3.14 → api >=4,<5 — no candidates found

With it, pixi refuses before resolving and names the fix:

× this project requires pixi '>=0.60.0,<0.71', but you have pixi 0.80.0
help: install a version of pixi that satisfies '>=0.60.0,<0.71' with
      `pixi self-update --version <version>`

Verification

Full clean CPU build of the ZEST + SlaterGPU stack against this branch, on Perlmutter:

Instantiated backend pixi-build-cmake@0.3.11 (x2)
-- USE_ACC: OFF   (slatergpu)
-- USE_ACC: OFF   (zest)
BUILD_EXIT=0
8 passed, 9 skipped

Temporary

Both caps are stopgaps. They pin the lab off pixi 0.71+ deliberately, and should be lifted once the upstream issues are resolved — the ambient environment is not a supported configuration channel any more, so the real fix is a supported mechanism that can reach a source dependency. Upstream reports to follow; ZEST needs the matching cap (each package resolves its backend independently, so capping one layer alone leaves the other silently GPU).

🤖 Generated with Claude Code

pixi-build-cmake stopped forwarding the ambient build environment in
0.3.12; 0.3.11 is the last version that still does. USE_ACC=OFF is read
via $ENV{USE_ACC} in CMakeLists.txt, so on 0.3.12+ the variable is
silently ignored and a CPU-only build produces GPU code instead.

Also cap requires-pixi below 0.71, which is the first pixi that drops
build-API v4. Without it, a newer pixi fails deep in the solver with
"could not initialize the build-backend ... no candidates were found"
rather than naming pixi as the problem.

Both caps are temporary, pending upstream fixes.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@joshkamm
joshkamm merged commit 1b4c6e7 into main Sep 7, 2026
1 check passed
@joshkamm
joshkamm deleted the fix-cap-backend-0311-cpu-builds branch September 7, 2026 21:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant