Build arm64 Linux wheels and update dcmqi to v1.5.7 - #48
Merged
Conversation
dcmqi v1.5.7 publishes dcmqi-<version>-linux-arm64.tar.gz. The generator probes for it rather than assuming it, the same way it already probes for the per-architecture macOS split, so this workflow keeps working against releases that predate either asset. dcmqiArchive.cmake already resolves linux_arm64; this only supplies the data. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Same set of files the update-dcmqi workflow would touch, generated by replaying its emitter against the real v1.5.7 assets; binaries.txt and the pyproject scripts are unchanged, since the release ships the same seven tools. v1.5.7 is the first release with an arm64 Linux package, so the generated data now carries linux_arm64_filename/_sha256 as well. All five checksums were computed locally and agree with the digests GitHub reports for the assets. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Closes the last gap in issue #44: dcmqi v1.5.7 publishes an arm64 Linux package, so there is finally an archive to wrap. The job runs on a native arm64 runner rather than QEMU, which nothing here needs -- no code is compiled, the wheel only repackages the upstream archive. The manylinux image is pinned to manylinux_2_28 for aarch64 because that is the container dcmqi builds its arm64 package in, and its binaries need glibc 2.28. An older image would fail the auditwheel repair rather than mistag the wheel, but pinning ties the wheel's floor to how the binaries were actually built. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
This PR updates the wrapped upstream dcmqi release to v1.5.7 and extends the packaging/CI automation to produce and publish Linux arm64 (aarch64) manylinux wheels, leveraging the newly published upstream arm64 Linux archive.
Changes:
- Bump packaged dcmqi release metadata and asset checksums to v1.5.7, including the new
linux_arm64asset. - Teach the
update-dcmqiworkflow to detect and emitlinux_arm64URL+SHA data when that asset exists. - Add an arm64 Linux wheel build job using a native ARM runner and pin the aarch64 manylinux image to
manylinux_2_28.
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
| README.md | Updates packaged version link and documents Linux arm64 wheel support. |
| dcmqiUrls.cmake | Updates version/asset filenames+SHA256s and adds linux_arm64 entries for v1.5.7. |
| .github/workflows/update-dcmqi.yml | Detects presence of *-linux-arm64* assets and emits corresponding URL data. |
| .github/workflows/cd.yml | Adds ubuntu-24.04-arm wheel build entry for aarch64 and pins the manylinux image floor for aarch64. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
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.
Summary
dcmqi v1.5.7 is the first release to publish an arm64 Linux package, so there is finally an archive to wrap. This adds the wheel, updates the packaged version, and teaches the update workflow to keep emitting the new asset.
Builds on #47, whose selection logic already resolves
linux_arm64— this is data plus one matrix entry.Closes #44.
Commits
update-dcmqi.ymlprobes for*-linux-arm64*the same way it already probes for the per-architecture macOS split (which arrived in dcmqi v1.5.1), so the workflow keeps working against older releases.binaries.txtand the pyproject scripts are unchanged: v1.5.7 ships the same seven tools.ubuntu-24.04-armmatrix entry,CIBW_ARCHS: aarch64, musllinux skipped as for x86_64 since the dcmqi binaries are glibc-linked.Why a native arm runner, and why the image is pinned
Nothing is compiled here — the wheel repackages a prebuilt archive — so QEMU emulation would cost build time for no benefit.
CIBW_MANYLINUX_AARCH64_IMAGEis pinned tomanylinux_2_28because that is the container dcmqi builds its arm64 package in, and the binaries carry a glibc 2.28 floor (verified: the highest versioned symbol initkimage2segimageisGLIBC_2.28). An older image would fail the auditwheel repair rather than silently mistag the wheel, but pinning ties the wheel's floor to how the binaries were actually built rather than to whatever cibuildwheel currently defaults to.Verification
linux/aarch64 → dcmqi-1.5.7-linux-arm64.tar.gz,linux/x86_64 → dcmqi-1.5.7-linux.tar.gz,macos/arm64,macos/x86_64andwin/x64all resolve to their own archives. The 16-case selection harness from Select the dcmqi archive by target architecture, not by host #47 still passes.ELF 64-bit LSB executable, ARM aarch64, with the same seven tools as the x86_64 archive.URL_HASHcheck pass, and the resulting binary self-reportsrevision: 506306a tag: v1.5.7.pre-commit runclean on every changed file.The arm64 Linux wheel itself cannot be built locally (no arm64 Linux container runtime available here); it will first run in
cd.ymlon a release or a manual dispatch.