Skip to content

Build arm64 Linux wheels and update dcmqi to v1.5.7 - #48

Merged
fedorov merged 3 commits into
mainfrom
arm64-wheels
Aug 11, 2026
Merged

Build arm64 Linux wheels and update dcmqi to v1.5.7#48
fedorov merged 3 commits into
mainfrom
arm64-wheels

Conversation

@fedorov

@fedorov fedorov commented Aug 11, 2026

Copy link
Copy Markdown
Member

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

  1. Emit the arm64 Linux asset into the generated URL dataupdate-dcmqi.yml probes 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.
  2. Update packaged dcmqi to v1.5.7 — the files the update workflow would have committed, produced by replaying its emitter block against the real assets. binaries.txt and the pyproject scripts are unchanged: v1.5.7 ships the same seven tools.
  3. Build an arm64 Linux wheel — a ubuntu-24.04-arm matrix 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_IMAGE is pinned to manylinux_2_28 because that is the container dcmqi builds its arm64 package in, and the binaries carry a glibc 2.28 floor (verified: the highest versioned symbol in itkimage2segimage is GLIBC_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

  • All five v1.5.7 checksums computed locally; each matches the digest GitHub reports for the asset.
  • Archive selection re-checked against the new data: linux/aarch64 → dcmqi-1.5.7-linux-arm64.tar.gz, linux/x86_64 → dcmqi-1.5.7-linux.tar.gz, macos/arm64, macos/x86_64 and win/x64 all resolve to their own archives. The 16-case selection harness from Select the dcmqi archive by target architecture, not by host #47 still passes.
  • Contents of the upstream arm64 tarball confirmed to be genuinely aarch64: ELF 64-bit LSB executable, ARM aarch64, with the same seven tools as the x86_64 archive.
  • Full wheel build from a clean tree on macOS arm64: the download and URL_HASH check pass, and the resulting binary self-reports revision: 506306a tag: v1.5.7.
  • pre-commit run clean 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.yml on a release or a manual dispatch.

fedorov and others added 3 commits August 11, 2026 14:31
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>

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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_arm64 asset.
  • Teach the update-dcmqi workflow to detect and emit linux_arm64 URL+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.

@fedorov
fedorov merged commit 0880744 into main Aug 11, 2026
11 checks passed
@fedorov
fedorov deleted the arm64-wheels branch August 11, 2026 18:38
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.

Add arm64 Linux whls

2 participants