cmsis-pack-manager: Add version 0.6.0 - #2149
Merged
Merged
Conversation
Builds the Rust core that parses CMSIS-Pack index and PDSC metadata for riscv64, the way upstream's own ci-build-wheel.yml does: maturin with cffi bindings, so the wheel carries libcmsis_pack_manager.so and cffi's ABI mode dlopens it at import. Upstream publishes no riscv64 wheel. The missing ABI tag is honest rather than a hand-set platform tag - nothing is imported as an extension module - so one py3-none-manylinux_riscv64 wheel serves every interpreter, and the further cibuildwheel identifiers only re-run the test suite under each one. Nothing in the 133-crate graph is architecture-specific, and the only piece of upstream's before-all that riscv64 needs is rustup: reqwest reaches TLS through rustls rather than openssl, and the manylinux image already ships libffi-devel and libatomic. rustup has a riscv64 host toolchain for the 1.71.1 that the repository's rust-toolchain file pins, which is what upstream's wheel job installs too.
Contributor
|
pip resolves a test dependency by version, not by whether a riscv64 wheel exists for the interpreter under test, so the cp314t leg reached for hypothesis 6.168.0's sdist: that release publishes cp310-abi3 riscv64 wheels, which the three GIL-ful legs install happily and a free-threaded interpreter cannot load at all. The source build then died in cargo - the toolchain this port installs is upstream's 1.71.1, and hypothesis ships a version 4 Cargo.lock. PIP_ONLY_BINARY=hypothesis, scoped to the test phase, stops pip at the newest release that actually has a wheel for each interpreter - 6.165.10 from pypi.riseproject.dev covers cp314t - instead of hand-pinning a version that goes stale as the registry builds newer ones. Checked in the manylinux_2_39_riscv64 image on the free-threaded interpreter: hypothesis 6.165.10 installs and all 11 tests pass.
luhenry
added a commit
that referenced
this pull request
Sep 21, 2026
… on each of cp312-cp314t The queue note read the py3 abi tag as a question mark; it is honest. maturin builds the Rust CMSIS-Pack parser as a cdylib and cffi's ABI mode dlopens it, so nothing is imported as an extension module and one wheel serves every interpreter - the same shape as gotchas 81/145, now recorded as 479. Nothing in the 133-crate graph is architecture-specific (rustls, no openssl, no vendored C), and rustup has a riscv64 host toolchain for the 1.71.1 upstream's own wheel job installs. Built once on cp312 in 15 minutes on the riscv64 runner, tested under all four interpreters, publish dry-run clean. The only riscv64-specific adjustment was PIP_ONLY_BINARY=hypothesis for the free-threaded test leg (gotcha 210).
luhenry
marked this pull request as ready for review
September 21, 2026 07:32
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.
cmsis-pack-manager0.6.0Compiles the Rust CMSIS-Pack index/PDSC parser that pyOCD and other embedded tooling reads device metadata through, shipped as
libcmsis_pack_manager.soand dlopened by cffi's ABI mode. Upstream publishes no riscv64 wheel.Mirrors upstream's
ci-build-wheel.yml.Differs from upstream
before-allinstalls only rustup - the image already ships libffi-devel and libatomic, and the crate graph reaches TLS through rustls, not opensslTesting
License: OK
Built once on cp312; 11 passed under each of cp312, cp313, cp314 and cp314t.