Skip to content

ci(pyodide): build wheels for Pyodide 0.29.5 and 314.0.7 - #1

Merged
schloerke merged 5 commits into
gadenbuie:devfrom
schloerke:pyodide-0.29-and-314
Nov 9, 2026
Merged

schloerke merged 5 commits into
gadenbuie:devfrom
schloerke:pyodide-0.29-and-314

Conversation

@schloerke

@schloerke schloerke commented Nov 9, 2026 •

Copy link
Copy Markdown
Collaborator

shinylive is moving off Pyodide 0.27.7 (posit-dev/shinylive#254). The upgrade PR, posit-dev/shinylive#263, needs a libsass wheel built for the new Pyodide. shiny themes and shinychat (which now requires libsass>=0.23.0) both load it.

This only changes .github/workflows/pyodide.yml. No source changes are needed.

  • A matrix builds one wheel for each Pyodide ABI:
    • Pyodide 0.26.3 (Python 3.12, Emscripten 3.1.58) → libsass-0.23.0-cp312-abi3-pyodide_2024_0_wasm32.whl, the wheel released shinylive uses today. It keeps pyodide-build 0.26.3 because newer versions name it pyemscripten_2024_0. That old version needs wheel<0.46.
    • Pyodide 0.29.5 (Python 3.13, Emscripten 4.0.9) → libsass-0.23.0-cp313-abi3-pyemscripten_2025_0_wasm32.whl
    • Pyodide 314.0.7 (Python 3.14, Emscripten 5.0.3) → libsass-0.23.0-cp314-abi3-pyemscripten_2026_0_wasm32.whl
  • The two new entries use pyodide-build 0.39.3 with pyodide xbuildenv install <version>, so the Pyodide version is set directly instead of through the pyodide-build version.
  • Pull requests to dev now run the build too, so the wheels can be downloaded and checked from the run. The deploy job only runs on pushes to dev.
  • The build runs on macos-15-intel. GitHub is short on macOS arm64 runners, and jobs waiting for one were cancelled. Linux doesn't work: setup.py passes -std=gnu++0x to the C file there, which Emscripten rejects.
  • The deploy job collects the wheels and publishes them with keep_files: true. That keeps any other wheels already on gh-pages.

To add a Pyodide version later, add a matrix entry. pyodide xbuildenv search --all lists the Python and Emscripten versions for each release.

Build one wheel per Pyodide ABI with a matrix, and keep the wheels that
are already published so older shinylive releases can still download
them.
Released versions of shinylive download it. It needs the old
pyodide-build, since newer versions name the wheel pyemscripten_2024_0
instead of pyodide_2024_0.
@schloerke
schloerke force-pushed the pyodide-0.29-and-314 branch 2 times, most recently from df11fba to 4170cde Compare November 9, 2026 19:35
GitHub is short on macOS arm64 runners, and matrix jobs waiting for one
were cancelled. Linux isn't an option: setup.py passes -std=gnu++0x to
the C file there, which Emscripten rejects.
@schloerke
schloerke merged commit 27b1f6a into gadenbuie:dev Nov 9, 2026
15 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