diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index 9cfba59..bf7648e 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -92,6 +92,14 @@ jobs: skip: "*musllinux*" arch: "x86_64" + # Native arm64 runner rather than QEMU on an x86_64 one: nothing is compiled here + # -- the wheel just repackages an upstream archive -- so emulation would buy + # nothing and cost a lot. musllinux is skipped for the same reason as above: the + # dcmqi binaries are linked against glibc. + - os: ubuntu-24.04-arm + skip: "*musllinux*" + arch: "aarch64" + # cibuildwheel's "auto" on Windows means AMD64 *and* x86, but dcmqi publishes no # 32-bit binaries. The win32 wheel it produced could therefore only ever contain # the 64-bit ones, so the architecture is pinned rather than probed. @@ -122,6 +130,11 @@ jobs: CIBW_ARCHS: "${{ matrix.arch }}" CIBW_SKIP: ${{ matrix.skip }} CIBW_ENVIRONMENT_MACOS: "MACOSX_DEPLOYMENT_TARGET=13.0" + # dcmqi builds its arm64 Linux package in manylinux_2_28_aarch64, and its binaries + # need glibc 2.28. Repairing them against an older image would fail rather than + # mistag, but pinning keeps the wheel's floor tied to how the binaries were built + # instead of to whatever cibuildwheel currently defaults to. + CIBW_MANYLINUX_AARCH64_IMAGE: "manylinux_2_28" - name: Upload wheels uses: actions/upload-artifact@v7 diff --git a/.github/workflows/update-dcmqi.yml b/.github/workflows/update-dcmqi.yml index 4d1058b..fa63545 100644 --- a/.github/workflows/update-dcmqi.yml +++ b/.github/workflows/update-dcmqi.yml @@ -76,11 +76,15 @@ jobs: exit 1 fi - # Determine macOS asset pattern + # Which optional assets does this release publish? Both are probed rather than + # assumed, so this workflow keeps working against older releases: the macOS split + # into per-architecture archives arrived in dcmqi v1.5.1, arm64 Linux in v1.5.7. has_mac_split=false + has_linux_arm64=false for asset in $assets; do case "$asset" in *-mac-arm64*) has_mac_split=true ;; + *-linux-arm64*) has_linux_arm64=true ;; esac done @@ -104,6 +108,13 @@ jobs: echo "set(linux_sha256 \"${checksums[$linux_file]}\")" echo '' + if [ "$has_linux_arm64" = true ]; then + linux_arm64_file="dcmqi-${latest_version}-linux-arm64.tar.gz" + echo "set(linux_arm64_filename \"$linux_arm64_file\")" + echo "set(linux_arm64_sha256 \"${checksums[$linux_arm64_file]}\")" + echo '' + fi + # macOS if [ "$has_mac_split" = true ]; then mac_arm64_file="dcmqi-${latest_version}-mac-arm64.tar.gz" diff --git a/README.md b/README.md index b9c808a..64f6d1f 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ configuration defined in the `pyproject.toml` file. ## Packaged dcmqi version This package wraps the official -[dcmqi v1.5.6](https://github.com/QIICR/dcmqi/releases/tag/v1.5.6) release. +[dcmqi v1.5.7](https://github.com/QIICR/dcmqi/releases/tag/v1.5.7) release. ## Platforms @@ -41,6 +41,7 @@ The following platforms are supported by the binary wheels: | OS | Arch | | ----------- | ---------------- | | Linux Intel | manylinux 64-bit | +| Linux Arm | manylinux arm64 | | macOS 13+ | Apple Silicon | | macOS 15+ | Intel | | Windows | 64-bit | diff --git a/dcmqiUrls.cmake b/dcmqiUrls.cmake index 506df90..3a4f997 100644 --- a/dcmqiUrls.cmake +++ b/dcmqiUrls.cmake @@ -3,16 +3,19 @@ # Generated by .github/workflows/update-dcmqi.yml -- do not edit by hand. # Which of these assets a build uses is decided in dcmqiArchive.cmake. -set(version "1.5.6") +set(version "1.5.7") -set(linux_filename "dcmqi-1.5.6-linux.tar.gz") -set(linux_sha256 "eb2743e5c24dec38aafe06612b18d200516f39b8f0d62592a926ca6e8cfb5187") +set(linux_filename "dcmqi-1.5.7-linux.tar.gz") +set(linux_sha256 "7c4f525a122ae5782b1cf7730d8deb9f7d43e218af13104377b615adbced2ddd") -set(macos_arm64_filename "dcmqi-1.5.6-mac-arm64.tar.gz") -set(macos_arm64_sha256 "20965b3afcd1d2a878fd3e09e3ee44de655e350d6fe43f9663c93348610f662e") +set(linux_arm64_filename "dcmqi-1.5.7-linux-arm64.tar.gz") +set(linux_arm64_sha256 "dcc605e05eafd6fc92981a16f5ca755f10b1ccceaad0cb2f4343930054ebe3ad") -set(macos_x86_64_filename "dcmqi-1.5.6-mac-x86_64.tar.gz") -set(macos_x86_64_sha256 "6678f2a60547c3a14a9f0376932217c3faee28158b6805c3b89d303df0640747") +set(macos_arm64_filename "dcmqi-1.5.7-mac-arm64.tar.gz") +set(macos_arm64_sha256 "ec17425d3eaa7b58db0924138569508c833e9774ef48052ca85d3e5a1b6cf9b9") -set(win64_filename "dcmqi-1.5.6-win64.zip") -set(win64_sha256 "72f4bf6bc6b265e5843c42436267fb59a8079ca765095f218300d019f9e15e3d") +set(macos_x86_64_filename "dcmqi-1.5.7-mac-x86_64.tar.gz") +set(macos_x86_64_sha256 "3d9b88d3e628c3fbcb78f704d08cf438835e248c00601c234002d103c94410ca") + +set(win64_filename "dcmqi-1.5.7-win64.zip") +set(win64_sha256 "dfa86a419ab1ef4af1fbac20720d498a7ffd9f5a7f7f7dd1ad4ac9c138c6b791")