Skip to content

ci(linux): build wheels against the prebuilt GHCR deps image - #279

Merged
ofloveandhate merged 2 commits into
ci-single-source-versionsfrom
ci-linux-consumer
Jul 7, 2026
Merged

ci(linux): build wheels against the prebuilt GHCR deps image#279
ofloveandhate merged 2 commits into
ci-single-source-versionsfrom
ci-linux-consumer

Conversation

@ofloveandhate

Copy link
Copy Markdown
Contributor

The Linux half of building against prebuilt deps (macOS already consumes its tarballs; Windows is conda-prebuilt).

  • CIBW_MANYLINUX_X86_64_IMAGEghcr.io/bertiniteam/b2-manylinux-deps:<toolchain-key> (public, verified pullable).
  • BEFORE_ALL_LINUX: install-eigen / download-eigenpy → a fast image sanity assert.
  • BEFORE_BUILD_LINUX: compile-Boost-per-Python → symlink the active Python's prebuilt prefix (/opt/deps/<tag>/opt/deps/current, since CIBW_ENVIRONMENT is static).
  • CIBW_ENVIRONMENT_LINUX/opt/deps/current; mpi4py added (image ships OpenMPI) so the MPI modules run at 1 rank instead of skipping → 0 skiptests; -rs surfaces skips.

Implicit ABI assert: the tag is the single-sourced toolchain key; if that tag isn't built (a version bump without an image rebuild), the image pull fails loudly — no silent mismatch.

Stacked on #278 (needs EIGEN_VERSION for the tag). Base is ci-single-source-versions; merge #278 first, then retarget/merge this. Its PR CI (base != develop → minimal ubuntu-3.11, cheap) is the proof that b2 builds against the image. Held per the merge freeze.

🤖 Generated with Claude Code

ofloveandhate and others added 2 commits July 7, 2026 15:26
Point CIBW_MANYLINUX_X86_64_IMAGE at ghcr.io/bertiniteam/b2-manylinux-deps pinned to the
toolchain-key tag (from the single-sourced versions). BEFORE_ALL_LINUX drops from
install-eigen/download-eigenpy to a fast image sanity assert; BEFORE_BUILD_LINUX drops from
compiling Boost+eigenpy per Python to symlinking the active Python's prebuilt prefix
(/opt/deps/<tag> -> /opt/deps/current, since CIBW_ENVIRONMENT is static). Env points at
/opt/deps/current. Add mpi4py to the test-requires (image ships OpenMPI) so the MPI modules
run at 1 rank instead of skipping; -rs surfaces any remaining skips.

Net: Linux wheels stop recompiling Boost every run, and reach 0 skiptests. If the pinned
tag isn't built (version bump w/o image rebuild), the image pull fails loudly -- the ABI
assert. Stacked on the single-source-versions branch (needs EIGEN_VERSION for the tag).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
test_wheels_linux_macos excludes ubuntu, so an ubuntu-only os matrix (a non-develop PR
base, or -f os=linux / os=windows once the os input lands) expands to zero combinations
and FAILS the run with no job to point at -- exactly what turned the Linux-consumer PR CI
red despite every job passing. Guard it with contains(os, 'macos-14') so it cleanly skips
instead. Also unblocks the os-targeting input.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@ofloveandhate
ofloveandhate merged commit 8229c0b into ci-single-source-versions Jul 7, 2026
5 of 7 checks passed
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