Skip to content

Extend Python support in CI matrix and update cibuildwheel version#229

Merged
ofloveandhate merged 5 commits into
bertiniteam:developfrom
hkmoon:develop
May 21, 2026
Merged

Extend Python support in CI matrix and update cibuildwheel version#229
ofloveandhate merged 5 commits into
bertiniteam:developfrom
hkmoon:develop

Conversation

@hkmoon
Copy link
Copy Markdown
Contributor

@hkmoon hkmoon commented May 21, 2026

This pull request updates the CI workflow in .github/workflows/build_and_test.yml to expand Python version support and update a key build dependency. The main changes ensure that the project is tested and built against the latest Python releases, including Python 3.14, and that the build process uses a newer version of cibuildwheel.

Python version support:

  • Expanded the test and build matrices to include Python 3.12, 3.13, and 3.14, ensuring compatibility and CI coverage for the latest Python versions. [1] [2] [3]

Build tool update:

  • Upgraded the pypa/cibuildwheel action from version v2.23 to v3.4.1 to take advantage of new features and improved compatibility with recent Python versions.

HongKee Moon added 3 commits May 20, 2026 13:51
….14 on Windows

Add Python 3.14 to the manylinux/macOS wheel matrix and 3.12, 3.13, 3.14
to the Windows wheel + test matrices. fail-fast: false means any version
that doesn't yet have working Boost.Python / eigenpy / conda-forge support
will fail in isolation, leaving the rest of the matrix to report cleanly.
v2.23 lacks `cp314` in its build-identifier table, so the Linux/macOS
3.14 jobs in the matrix exited with "No build identifiers selected"
before any build attempt. cp314 was added in v2.24+; v3 also includes
it and tracks the rolling major tag for ongoing fixes.

Windows isn't affected (uses `python -m build` directly).
The previous bump to `@v3` failed every Linux/macOS wheel job at the
'Set up job' step with 'Unable to resolve action ... unable to find
version v3'. pypa/cibuildwheel ships rolling minor tags (v3.0, v3.4,
...) but no rolling major. Pinning to the latest stable v3.4.1.
@ofloveandhate
Copy link
Copy Markdown
Contributor

I have one additional suggestion for this PR: EigenPy at 3.11 is not available in PyPI. But 3.12 is. Can we increase the version of EigenPy to 3.12?

@ofloveandhate
Copy link
Copy Markdown
Contributor

Fantastic work, btw. 🚀

Updates cache path, both download URLs (release tag + asset name),
and both extract/build paths consistently across Linux and macOS
cibuildwheel steps. Windows isn't affected (uses conda-forge eigenpy).
@hkmoon
Copy link
Copy Markdown
Contributor Author

hkmoon commented May 21, 2026

  • eigenpy 3.12 broke against the system Eigen 3.3.7 that manylinux_2_28 ships (AlmaLinux 8's eigen3-devel). The new LeastSquaresConjugateGradient solver in eigenpy 3.12 calls mat.innerVector(j) on Eigen::Ref, which only exists in Eigen 3.4+. macOS is fine because Homebrew ships Eigen 3.4.x.

So the matrix tells us a clear story:

  • All macOS: ✓ — Eigen 3.4.x via Homebrew
  • All Windows: ✓ — eigenpy from conda-forge (uses its own bundled Eigen)
  • All Linux: ✗ — system Eigen 3.3.7 too old for eigenpy 3.12

Approach: use eigen-3.4.0 from the source codes for the linux builds.

manylinux_2_28 ships eigen3-devel 3.3.7, but eigenpy 3.12 needs Eigen
3.4+ for the LeastSquaresConjugateGradient solver (uses innerVector()
on Eigen::Ref<const Matrix>, added in 3.4). All 6 Linux wheel jobs
were failing inside eigenpy's compile step; macOS works because
Homebrew ships Eigen 3.4.x.

Drops `eigen3-devel` from yum, downloads + installs Eigen 3.4.0 to
/usr/local (header-only, ~2MB). Adds the tarball to the cache.
@hkmoon
Copy link
Copy Markdown
Contributor Author

hkmoon commented May 21, 2026

@ofloveandhate It's done. Please have a look. ;)

@ofloveandhate
Copy link
Copy Markdown
Contributor

this fixes #229 thank you

@ofloveandhate ofloveandhate merged commit a22c083 into bertiniteam:develop May 21, 2026
40 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.

2 participants