Skip to content

stream-unzip: add build-stream-unzip.yml for riscv64 wheels - #1214

Merged
luhenry merged 2 commits into
mainfrom
stream-unzip
Sep 7, 2026
Merged

stream-unzip: add build-stream-unzip.yml for riscv64 wheels#1214
luhenry merged 2 commits into
mainfrom
stream-unzip

Conversation

@luhenry

@luhenry luhenry commented Sep 7, 2026

Copy link
Copy Markdown
Member

Compiles a PyO3 extension module (stream_unzip._zipcrypto) for ZipCrypto decryption. Upstream publishes no riscv64 wheel, despite the per-CPython-version wheel tags on PyPI looking pure-Python at a glance.

Mirrors upstream's build-source-package-and-wheels.yml.

Differs from upstream

  • cibuildwheel + in-container rustup, not upstream's raw docker/auditwheel loop - matches this repo's other maturin ports
  • musllinux dropped - rustup ships no riscv64 musl toolchain

Matrix: cp312/cp313/cp314 - upstream doesn't build a 3.14t wheel yet

Testing

  • same as upstream

License: OK

Built on cp312/cp313/cp314; CI running.

stream-unzip ships a real PyO3/maturin extension module
(stream_unzip._zipcrypto, built from src/lib.rs + Cargo.toml), not the
pure-Python package its many per-CPython PyPI wheel tags might suggest -
confirmed by unzipping a released wheel (_zipcrypto.cpython-3XX-*.so ships
alongside the Python source). Mirrors upstream's own release workflow:
maturin sdist build with the 0.0.0.dev0 version placeholder substituted,
then a per-interpreter cibuildwheel build (cp312/cp313/cp314, no abi3, no
musllinux since rustup ships no riscv64 musl toolchain) with rustup
installed in-container. Runtime deps pycryptodome (already on our
registry) and stream-inflate (no riscv64 wheel yet, but its own build
deps - setuptools + Cython>=3.0.0 - resolve from our registry and public
PyPI, so pip builds it from its public sdist) are pulled in automatically
when cibuildwheel installs the built wheel for testing.
luhenry added a commit that referenced this pull request Sep 7, 2026
manylinux_2_39_riscv64 has no dedicated zlib build step, so CPython's
zlib module links against the image's system zlib-ng-compat. It decodes
this test's single-byte-corrupted raw DEFLATE stream without raising,
where upstream's zlib raises a decode error - so the corruption only
surfaces once the decompressed bytes fail the trailing CRC-32 check
(CRC32IntegrityError), not the DeflateError the test asserts. Confirmed
on all three interpreters (cp312/cp313/cp314): 9 errors, all this one
subTest-parametrized method, nothing else.
@luhenry
luhenry merged commit 37ed3af into main Sep 7, 2026
9 checks passed
@luhenry
luhenry deleted the stream-unzip branch September 7, 2026 08:18
@luhenry luhenry linked an issue Sep 7, 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.

stream-unzip riscv64 support

1 participant