Repository navigation
Bump cibuildwheel to 4.2.0 to fix musllinux riscv64 wheels - #1146
Merged
sobolevn merged 2 commits intoAug 11, 2026
Merged
Conversation
Signed-off-by: Bruno Verachten <[email protected]>
Closed
sobolevn
added this pull request to the merge queue
Aug 11, 2026
Brohammad
pushed a commit
to Brohammad/msgspec
that referenced
this pull request
Sep 4, 2026
The 0.21.1 to 0.22.0 changelog batch (msgspec#1112) landed on 2026-07-03. Four user-visible changes merged between then and the 0.22.0 release on 2026-08-11 never got an entry: - msgspec#700, overloads on the `Meta` stub, so type checkers reject mixing `gt` with `ge` and `lt` with `le` - msgspec#1028, `null` placed last in the `anyOf` generated for optional unions - msgspec#1114, `__struct_encode_fields__` added to `src/msgspec/__init__.pyi` (its companion msgspec#813 only touched `tests/typing`, so it needs no entry of its own) - msgspec#1118, `json.encode` raising `TypeError` for a `dict` keyed by a plain `str`-valued `enum.Enum` I went over every PR merged in that window. The rest need no entry: msgspec#813 and msgspec#1117 are tests only, msgspec#1121 fixes an unreleased regression from msgspec#1028, msgspec#1145 is an unused variable under free-threaded builds, and msgspec#1146 and msgspec#1148 are CI and tooling. msgspec#1127, msgspec#1135 and msgspec#1080 already have entries. Docs build clean with `--fail-on-warning`. Note for whoever retries the release: the section is still headed `Version 0.22.0 (2026-08-11)`, and that date will need updating, since the tag was deleted after the upload failed. Refs msgspec#1134. Co-authored-by: Siyet <[email protected]>
edgarrmondragon
pushed a commit
to edgarrmondragon/msgspec
that referenced
this pull request
Sep 11, 2026
`build-wheels.yml` skips every musllinux wheel unless `build-all` is true, and `ci.yml` only passes `build-all` on release. So no musllinux wheel, on any architecture, is built outside a release, and the first run that can show a musllinux breakage is the one meant to publish. msgspec#1134 hit exactly that when `cp310-musllinux_riscv64` failed on the 0.22.0 release build, and msgspec#1146 could not be exercised by its own CI for the same reason. **Change.** `ci.yml` gains a weekly `schedule` trigger (Monday 04:17 UTC) and passes `build-all` on `schedule` as well as on `release`, so the complete matrix, musllinux and riscv64 included, runs on a timer between releases. Pull request and push runs are unchanged, and so is the `build-riscv64` label gate. Five lines, no new jobs. **What proves it.** A workflow cannot run locally; the file parses as YAML. The first scheduled run showing the musllinux and riscv64 legs outside a release is the proof. If PR-time coverage is wanted as well, a single `cp312-musllinux_x86_64` smoke build gated on changes to the wheel workflow, `setup.py`, `pyproject.toml` or `src/` is a small follow-up; I left it out of this change so the schedule can land on its own. One question for the reviewer: is weekly the right cadence for the project's CI budget, or would you rather tie the full build to a pre-release tag? Closes msgspec#1150
pull Bot
pushed a commit
to Mu-L/msgspec
that referenced
this pull request
Sep 12, 2026
msgspec#1146 bumped cibuildwheel to 4.2.0, which adds CPython 3.15 wheels by default, but this project uses a build list in `.cibuildwheel.toml` so they need to be selected explicitly. Signed-off-by: Edgar Ramírez Mondragón <[email protected]>
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.
The 0.22.0 release run died on
cp310-musllinux_riscv64withCommand ['which', 'uv'] failed with code 1, from my riscv64 matrix entry. All six manylinux riscv64 wheels in that same job built, repaired and tested fine, so it is specific to the musllinux image.pypa/manylinux used to skip installing uv in the musllinux riscv64 image. At the commit the pinned image was built from (
8dbfa8e, 4 June),docker/build_scripts/finalize.shhad:That was removed by pypa/manylinux#1969 on 11 July, and their image test suite now runs
uv venv/uv pip installinside musllinux riscv64. The comment was already out of date when it was written: uv has published amanylinux_2_31_riscv64.musllinux_1_1_riscv64wheel since 0.11.18 (1 June).The pins differ across cibuildwheel releases:
musllinux_1_2_riscv64image2026.06.04-12026.08.04-1So
build-frontend = "build[uv]"has nothing to find on 4.1.0. This bumps bothuvx --frompins to 4.2.0.4.2.0 builds CPython 3.15 by default, but
.cibuildwheel.tomlsets an explicitbuild = "cp310-* cp311-* cp312-* cp313-* cp314-* cp314t-*"list, so no new target appears. The rest of that release is Pyodide 314.0.4, a GraalPy pip hold, and download retries.I have not run this. The reasoning is from the failing job log and the manylinux source, not from a green build. CI here will not test it either unless someone adds the
build-riscv64label, since the riscv64 job is excluded on unlabelled PRs, and even thenCIBW_SKIPdrops musllinux outside a release build. So the honest state is that only a release run proves it. If you would rather not move cibuildwheel right before a release,musllinux-riscv64-imagein.cibuildwheel.tomlpins just that one image and leaves everything else alone.Two things worth knowing either way:
The riscv64 job is gated behind the
build-riscv64label on PRs, andCIBW_SKIPdrops musllinux unlessbuild-allis set. So nothing had ever exercised musllinux riscv64 until the release turnedbuild-allon. Whatever you decide here, that combination will keep hiding riscv64 musllinux breakage until release day.Dependabot covers
github-actionsanduv, but the cibuildwheel version is an inlineuvx --fromargument rather than a tracked dependency, which is why it sat at 4.1.0. Moving it into the uv ecosystem somehow would stop the next one, though I do not have a clean suggestion for how.Refs #1134, #987