Skip to content

Commit 4e7b164

Browse files
committed
ci(release): add aarch64 Linux wheel targets
Mirror the atomr workspace's release.yml — add native aarch64 Linux wheel builds on `ubuntu-22.04-arm` runners for both manylinux (glibc) and musllinux. Previously ARM Linux users had to install from the sdist; they now get prebuilt wheels matching the x86_64 coverage. README + RELEASING.md updated to reflect the expanded wheel matrix.
1 parent b94b77b commit 4e7b164

3 files changed

Lines changed: 27 additions & 10 deletions

File tree

.github/workflows/release.yml

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,10 @@ name: Release
77
#
88
# This workflow:
99
# 1. Runs the local release-pipeline gate (`cargo xtask verify`).
10-
# 2. Builds Python wheels (manylinux x86_64, musllinux x86_64,
11-
# macOS universal2, Windows x86_64) and an sdist.
10+
# 2. Builds Python wheels (manylinux x86_64 + aarch64, musllinux
11+
# x86_64 + aarch64, macOS universal2, Windows x86_64) and an
12+
# sdist. aarch64 Linux wheels are built natively on
13+
# `ubuntu-22.04-arm` runners.
1214
# 3. Creates the GitHub Release with the artifacts attached.
1315
# 4. Publishes every publishable Rust crate to crates.io in
1416
# dependency order (with rate-limit retry).
@@ -78,15 +80,30 @@ jobs:
7880
fail-fast: false
7981
matrix:
8082
include:
81-
# Linux glibc + musl, x86_64. ARM Linux users install from sdist.
83+
# Linux glibc + musl, x86_64 + aarch64. maturin uses
84+
# manylinux/musllinux containers under the hood; the
85+
# `manylinux: auto` flag picks the right base image.
8286
- os: ubuntu-latest
8387
target: x86_64-unknown-linux-gnu
8488
python-target: x86_64
8589
manylinux: auto
90+
# aarch64 Linux glibc — built natively on a GitHub-hosted
91+
# ARM runner so we don't have to cross-compile inside the
92+
# x86_64 manylinux container. Mirrors the atomr workspace.
93+
- os: ubuntu-22.04-arm
94+
target: aarch64-unknown-linux-gnu
95+
python-target: aarch64
96+
manylinux: auto
8697
- os: ubuntu-latest
8798
target: x86_64-unknown-linux-musl
8899
python-target: x86_64
89100
manylinux: musllinux_1_2
101+
# aarch64 Linux musl — also built natively on the ARM
102+
# runner, mirroring the glibc coverage.
103+
- os: ubuntu-22.04-arm
104+
target: aarch64-unknown-linux-musl
105+
python-target: aarch64
106+
manylinux: musllinux_1_2
90107
# macOS — universal2 yields a single fat wheel covering
91108
# both x86_64 and arm64.
92109
- os: macos-latest

README.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -431,12 +431,12 @@ and the rationale for keeping it out of CI.
431431
## Releasing
432432

433433
`v*.*.*` git tags trigger a single `release.yml` pipeline that runs
434-
the verify gate, builds Python wheels (manylinux x86_64, musllinux
435-
x86_64, macOS universal2, Windows x86_64) + an sdist, creates a
436-
GitHub Release, publishes the workspace crates to crates.io in
437-
topological order, and uploads wheels + sdist to PyPI via trusted
438-
publishing. See [`RELEASING.md`](RELEASING.md) for the end-to-end
439-
flow.
434+
the verify gate, builds Python wheels (manylinux x86_64 + aarch64,
435+
musllinux x86_64 + aarch64, macOS universal2, Windows x86_64) + an
436+
sdist, creates a GitHub Release, publishes the workspace crates to
437+
crates.io in topological order, and uploads wheels + sdist to PyPI
438+
via trusted publishing. See [`RELEASING.md`](RELEASING.md) for the
439+
end-to-end flow.
440440

441441
## Learn more
442442

RELEASING.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ path-dep version pins inside `[workspace.dependencies]`, refreshes
4343
|----------------------------------|-------------------------------|--------------|
4444
| `ci.yml` | PRs + pushes to `main` | fmt + clippy + test (8 feature configs) + verify gate + semver-checks (PR-only) + Python build/test + doc upload |
4545
| `version-bump.yml` | Push to `main` | Conventional-Commits → `cargo xtask bump` → commit `chore(release)` → tag `vX.Y.Z` |
46-
| `release.yml` | Tag `v*` push | xtask verify → build wheels (manylinux/macOS/Windows) + sdist → GitHub Release with auto-notes → publish-crates → publish-pypi |
46+
| `release.yml` | Tag `v*` push | xtask verify → build wheels (manylinux x86_64 + aarch64 / musllinux x86_64 + aarch64 / macOS universal2 / Windows x86_64) + sdist → GitHub Release with auto-notes → publish-crates → publish-pypi |
4747
| `docs.yml` | Push to `main`, tag `v*` | rustdoc → GitHub Pages |
4848

4949
`release.yml` honors three `workflow_dispatch` inputs for testing:

0 commit comments

Comments
 (0)