Skip to content

ormsgpack: add build-ormsgpack.yml for riscv64 wheels - #409

Merged
luhenry merged 1 commit into
mainfrom
ormsgpack
Aug 26, 2026
Merged

ormsgpack: add build-ormsgpack.yml for riscv64 wheels#409
luhenry merged 1 commit into
mainfrom
ormsgpack

Conversation

@luhenry

@luhenry luhenry commented Aug 26, 2026

Copy link
Copy Markdown
Member

Adds .github/workflows/build-ormsgpack.yml, building ormsgpack 1.12.2 riscv64 wheels for cp312/cp313/cp314/cp314t.

Shape

ormsgpack is a PyO3/maturin extension. Upstream's release.yml drives PyO3/maturin-action, which has no riscv64 path, so this is the standard build-from-checkout cibuildwheel shape: check out ormsgpack/ormsgpack at the tag, install the Rust toolchain in the manylinux container via CIBW_BEFORE_ALL_LINUX, and pass --features unstable-simd to the maturin PEP 517 backend through MATURIN_PEP517_ARGS.

The toolchain is pinned to nightly-2025-11-28, the RUST_TOOLCHAIN upstream releases 1.12.2 with. Nightly is required by unstable-simd, which turns on feature(core_intrinsics) in src/lib.rs and bytecount/generic-simd (feature(portable_simd)). Both are architecture agnostic, so — unlike upstream's armv7 job, which drops the feature — riscv64 keeps it. rustup publishes a riscv64gc-unknown-linux-gnu host toolchain for that date.

musllinux is dropped: rustup's nightly manifest has rust-std but no rustc/cargo for riscv64gc-unknown-linux-musl, so there is no host toolchain to build with inside a musl container (same reason as tiktoken and fastuuid).

Tests mirror upstream's uv run --no-sync pytest, with the dev/numpy dependency groups reduced to what tests/ actually imports (the rest are lint and typing tools). numpy has no riscv64 wheel on public PyPI, so PIP_EXTRA_INDEX_URL points the container at pypi.riseproject.dev.

Local validation

actionlint clean apart from the expected ubuntu-24.04-riscv label warning. Full build + test cycle run under QEMU riscv64 in quay.io/pypa/manylinux_2_39_riscv64:

  • cargo check --features unstable-simd compiles on rustc 1.93.0-nightly (c86564c41 2025-11-27), host riscv64gc-unknown-linux-gnu.
  • python -m build --wheel with MATURIN_PEP517_ARGS="--features unstable-simd" produces ormsgpack-1.12.2-cp312-cp312-linux_riscv64.whl; auditwheel repair retags it manylinux_2_34_riscv64.manylinux_2_39_riscv64 and it carries ormsgpack/ormsgpack.cpython-312-riscv64-linux-gnu.so plus dist-info/licenses/LICENSE-APACHE and LICENSE-MIT (licensing check: the wheel ships both of upstream's licences, no patch needed).
  • Installing that wheel into an empty test cwd staged like test-sources does and running python -m pytest tests: 516 passed, 1 skipped.

ormsgpack is a PyO3/maturin msgpack serializer. Upstream's release workflow
drives maturin-action, which has no riscv64 path, so this is the standard
build-from-checkout cibuildwheel shape with the Rust toolchain installed in
the manylinux container, on the same pinned nightly upstream releases with:
the `unstable-simd` feature needs `feature(core_intrinsics)` plus bytecount's
portable-SIMD backend, both nightly-only. Both are architecture agnostic, so
unlike upstream's armv7 job riscv64 keeps `unstable-simd` enabled.

musllinux is dropped: rustup publishes rust-std but no rustc/cargo host
toolchain for riscv64gc-unknown-linux-musl.

Tests mirror `uv run --no-sync pytest` from upstream's build jobs, with the
dev/numpy dependency groups reduced to what tests/ actually imports; numpy
resolves from pypi.riseproject.dev.

Validated under QEMU riscv64 in quay.io/pypa/manylinux_2_39_riscv64: the
cp312 wheel builds with `--features unstable-simd`, auditwheel-repairs to
manylinux_2_39_riscv64 carrying LICENSE-APACHE/LICENSE-MIT, and the suite
runs 516 passed, 1 skipped.
@luhenry
luhenry merged commit e39ce8f into main Aug 26, 2026
9 checks passed
@luhenry
luhenry deleted the ormsgpack branch August 26, 2026 12:25
@luhenry luhenry linked an issue Aug 26, 2026 that may be closed by this pull request
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.

ormsgpack riscv64 support

1 participant