fix(ci): keep JupyterLite wasm build on JSPI-safe cp312 - #626
Merged
Conversation
…heel's new cp313 default cibuildwheel's 3.4.1->4.1.1 bump silently moved the pyodide platform's default build target from cp312/Pyodide 0.27.7 to cp313/Pyodide 0.29.4, breaking docs-build once a real release exercised it. Adapting to the new default (and its PyPI-accepted pyemscripten_* tag) was tried and reverted same-day: Pyodide only gained cp313 support at 0.28.0a1, by which point WebAssembly JSPI was already on by default, and Safari has no JSPI support (Firefox only behind a flag) -- so cp312/0.27.x is the newest JSPI-safe line, matching MVTB's and bdsim's existing pins. Forces CIBW_BUILD: cp312-pyodide_wasm32 explicitly, restores the GitHub-Release-asset delivery mechanism (PyPI still rejects the old pyodide_* tag this produces), and fetches spatialgeometry's equivalent cp312 wheel from its own GitHub Release too, since RTB 1.4.0 stopped vendoring spatialgeometry as a pure-Python copy. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…dide target cibuildwheel 4.1.1 considers cp312/Pyodide 0.27.x "end of life" now that cp313/0.29.x is its new default, and refuses to build it at all without this explicit opt-in. Confirmed directly via a real workflow_dispatch run: without this, the job fails immediately with "Invalid build selector: 'cp312-pyodide_wasm32'. This selector matches a group that wasn't enabled." Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
The tag format pyodide-build emits (pyemscripten_* vs the old pyodide_*) turns out to be a property of the pyodide-build tool version bundled with cibuildwheel, not of which Pyodide version is targeted. Confirmed directly: cibuildwheel 4.1.1 forced onto cp312/Pyodide 0.27.7 still produces a pyemscripten_*-tagged wheel, which Pyodide 0.27.6's micropip (like every pre-PEP-783 release) hard-rejects as an unrecognized tag -- there is no pyodide-version override that fixes this on 4.1.1. cibuildwheel 3.4.1 predates the tag-format change and defaults to cp312/0.27.7 unprompted, producing the old pyodide_* tag that Pyodide 0.27.6 actually understands -- matches spatialgeometry's own pyodide build (same cibuildwheel version, same underlying reason). Drops the now-unnecessary CIBW_BUILD/CIBW_ENABLE overrides. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
… 3.4.1 self-resolve Confirmed via a real build failure: cibuildwheel 3.4.1's bundled pyodide-build (0.33.0) rejects an explicit pyodide-version = "0.27.7" override as "not compatible", even though 0.27.7 is that same tool's own documented default for cp312. Matches spatialgeometry's own pyproject.toml, which never overrides this either. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #626 +/- ##
=====================================
Coverage 0.00% 0.00%
=====================================
Files 142 142
Lines 13938 13938
=====================================
Misses 13938 13938 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
cibuildwheel3.4.1→4.1.1 bump silently moved the pyodide platform's default build target from cp312/Pyodide 0.27.7 to cp313/Pyodide 0.29.4, which brokedocs-build's JupyterLite ("Try it Now") step once the v1.4.0 release actually exercised it.CIBW_BUILD: cp312-pyodide_wasm32explicitly rather than adapting to the new default: Pyodide only gained cp313 support at0.28.0a1, by which point WebAssembly JSPI ("stack switching") was already on by default (>=0.27.7) — and Safari has no JSPI support, Firefox only behind a flag. cp312/0.27.x is the newest JSPI-safe line, matching MVTB's and bdsim's existingjupyterlite-pyodide-kernel==0.6.1pins.pyodide_*tag this cp312 build produces) and adds a matching fetch ofspatialgeometry's own cp312 wasm wheel from its GitHub Release, since RTB 1.4.0 stopped vendoring a pure-Python copy of it.skip_existing:→skip-existing:(deprecated alias) inrelease.ymlwhile in the file.Test plan
pyodidenpm package, not just a successful build) thatspatialgeometry's cp312/old-tag wheel installs cleanly — matches the combination this fix relies on.docs-buildgoes green without waiting for the next version bump (in progress).🤖 Generated with Claude Code