Skip to content

ci: refresh Python runners and Pyodide build tooling - #6209

Merged
rwgk merged 2 commits into
pybind:masterfrom
rwgk:ci-refresh-python-build-environments
Oct 23, 2026
Merged

rwgk merged 2 commits into
pybind:masterfrom
rwgk:ci-refresh-python-build-environments

Conversation

@rwgk

@rwgk rwgk commented Oct 23, 2026 •

Copy link
Copy Markdown
Collaborator

Description

Fix CI setup failures exposed by #6208: pin the Python 3.9 Linux jobs to Ubuntu 24.04 and explicitly enable Pyodide cross-compilation so CMake does not try to run the host interpreter through Node. Update cibuildwheel to 4.3.4 for the eMudhra certificate mitigations.

Validation: prek -a --quiet; CMake 4.4.4 cross-compilation probe reproduces the old failure and passes with the setting enabled; local Pyodide 314.0.7 wheel build/tests with CMake 4.4.4 (1,242 passed, 192 skipped, 2 xfailed, 1 xpassed).

Suggested changelog entry:

  • Updated CI runners and cross-compilation tooling, including updated certificate mitigations.

codex GPT-6.1-Sol ultra on behalf of Ralf

@rwgk
rwgk requested a review from henryiii as a code owner October 23, 2026 18:37
Comment thread tests/pyproject.toml

android.environment.ANDROID_API_LEVEL = "24" # Needed to include libc++ in the wheel.
pyodide.test-groups = ["numpy", "scipy"]
pyodide.config-settings = { "cmake.define.PYBIND11_USE_CROSSCOMPILING" = "ON" }

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@henryiii codex GPT-6.1-Sol ultra explained:

This fixes the Pyodide cross-build’s Python discovery failure. The original job stopped during configuration with Could NOT find Python (missing: Interpreter).

The interaction was:

  1. Emscripten sets Node as the cross-compilation emulator.
  2. Without this flag, pybind11 requests both Interpreter and Development.Module.
  3. Under CMake’s CMP0190 policy, that combination makes CMake execute the interpreter through the emulator. Here, it tried to run native Python through Node.

The subtlety is that our automatic cross-compilation default only activates when no emulator is defined, so Pyodide needs the explicit opt-in.

PYBIND11_USE_CROSSCOMPILING=ON activates the existing logic that omits interpreter discovery. The pyodide.config-settings scope applies it specifically to Pyodide wheel builds.

I reproduced configuration failing with OFF and succeeding with ON, then verified the full Pyodide build and test run.

@rwgk rwgk added the bitrot Breakages caused by environment, toolchain, or dependency drift. label Oct 23, 2026
@rwgk

rwgk commented Oct 23, 2026

Copy link
Copy Markdown
Collaborator Author

Merging without a review under the bitrot category.

@rwgk
rwgk merged commit c85ac1b into pybind:master Oct 23, 2026
202 of 217 checks passed
@github-actions github-actions Bot added the needs changelog Possibly needs a changelog entry label Oct 23, 2026
@rwgk
rwgk deleted the ci-refresh-python-build-environments branch October 23, 2026 22:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bitrot Breakages caused by environment, toolchain, or dependency drift. needs changelog Possibly needs a changelog entry

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant