fix(release-binaries): drop x86_64-apple-darwin target

macos-13 runner tier is being phased out by GitHub — queues persistently
exceeded 1 h during v0.9.0-rc1 build. Intel Mac users fall back to
'cargo install --features bundled-assets' from source, Docker
--platform linux/amd64, or a Linux VM.
This commit is contained in:
Edouard Vanbelle
2026-08-29 14:28:08 +02:00
parent c5dfb389f2
commit 724e6bec36
3 changed files with 43 additions and 14 deletions
+15 -5
View File
@@ -87,8 +87,21 @@ jobs:
# ── Stage 2: Build one binary per target ────────────────────────────
#
# 4-way matrix — 2 musl-linux (native amd64 + arm64) + 2 macOS
# (Apple Silicon + last Intel runner tier). Windows is deferred.
# 3-way matrix — 2 musl-linux (native amd64 + arm64) + macOS Apple
# Silicon. Windows and Intel macOS are deferred:
#
# * Intel macOS (`x86_64-apple-darwin` / macos-13 runner) — dropped
# 2026-08-29. Apple is phasing out Intel Macs from GitHub's hosted
# runners; the `macos-13` tier is scheduled for deprecation and
# queues stretched past 1 h during v0.9.0-rc1 build. Intel Mac
# users have three fallbacks: (1) `cargo install oxicloud
# --locked --features bundled-assets` from source, (2) `docker
# pull --platform linux/amd64 ghcr.io/atalayalabs/oxicloud`,
# (3) any of the two Linux musl tarballs via a Linux VM. The
# Intel-Mac install base is small and shrinking (Apple Silicon
# >90% of new sales) so first-class shipping isn't worth the
# CI-availability tax.
# * Windows — separate work when demand appears.
#
# All targets run natively on GitHub-hosted runners with the host's
# glibc + rustup, then cross-compile to their target triple via
@@ -128,9 +141,6 @@ jobs:
- triple: aarch64-apple-darwin
runner: macos-latest
rustflags: "-C target-cpu=apple-m1"
- triple: x86_64-apple-darwin
runner: macos-13
rustflags: "-C target-cpu=x86-64-v2"
steps:
- uses: actions/checkout@v4
with:
+10 -4
View File
@@ -11,21 +11,27 @@ oxicloud` picks the right archive for your host automatically.
## Which tarball do I want?
Every release attaches four tarballs plus a `SHA256SUMS` manifest. Pick
by your host's architecture and OS:
Every release attaches three tarballs plus a `SHA256SUMS` manifest.
Pick by your host's architecture and OS:
| Host | Tarball |
|---|---|
| Linux x86-64 (Intel / AMD servers, most VPS, WSL) | `oxicloud-<version>-x86_64-unknown-linux-musl.tar.gz` |
| Linux ARM64 (Raspberry Pi 4/5, Ampere, Graviton, ARM servers) | `oxicloud-<version>-aarch64-unknown-linux-musl.tar.gz` |
| macOS Apple Silicon (M-series) | `oxicloud-<version>-aarch64-apple-darwin.tar.gz` |
| macOS Intel | `oxicloud-<version>-x86_64-apple-darwin.tar.gz` |
The Linux tarballs link against musl, so they run on ANY glibc version
— Alpine, Debian, Ubuntu, Fedora, Arch, Rocky, and every version in
between. You never need to worry about `GLIBC_x.yy not found`.
Windows and 32-bit ARM are not currently shipped.
**Intel macOS, Windows, and 32-bit ARM are not currently shipped as
prebuilt tarballs.** Intel Mac users have three fallbacks:
1. `cargo install oxicloud --locked --features bundled-assets` from
source (needs the Rust toolchain).
2. Docker: `docker pull --platform linux/amd64 ghcr.io/atalayalabs/oxicloud`.
3. Run one of the two Linux musl tarballs inside a Linux VM
(Multipass, Lima, UTM, etc.).
## Hardware notes
+18 -5
View File
@@ -433,14 +433,28 @@ its cache).
### 3. Target matrix — musl-only Linux
Four triples cover the practical need:
Three triples cover the practical need:
| Triple | Runner + toolchain | Notes |
|---|---|---|
| `x86_64-unknown-linux-musl` | `ubuntu-22.04` running `rust:1.96-alpine3.24` container | Static, no glibc dep, runs on ANY Linux distro from Alpine to CentOS 7 to Debian 10 to Ubuntu 25.04. Parity with existing Docker image. |
| `aarch64-unknown-linux-musl` | `ubuntu-22.04-arm` running `rust:1.96-alpine3.24` container | Native ARM64 runner (no QEMU), same container as amd64 for byte-for-byte parity. Pi 4/5, ARM servers, Graviton. |
| `x86_64-unknown-linux-musl` | `ubuntu-22.04` + `musl-tools` + `rustup target add` | Static, no glibc dep, runs on ANY Linux distro from Alpine to CentOS 7 to Debian 10 to Ubuntu 25.04. Cross-compiled natively with glibc host + musl target; produces same output as the alpine-container path we originally planned. |
| `aarch64-unknown-linux-musl` | `ubuntu-22.04-arm` + `musl-tools` + `rustup target add` | Same shape as the amd64 twin. Native ARM64 runner (no QEMU). Pi 4/5, ARM servers, Graviton. |
| `aarch64-apple-darwin` | `macos-latest` | Apple Silicon, native |
| `x86_64-apple-darwin` | `macos-13` | last Intel-runner tier |
**Historical note — Intel macOS dropped 2026-08-29** (Apple phasing
out `macos-13`; runner-availability tax exceeded value). Intel Mac
users fall back to `cargo install`, Docker `--platform linux/amd64`,
or one of the Linux musl tarballs inside a Linux VM.
**Historical note — Alpine-container approach abandoned 2026-08-29**
in favour of native cross-compile. Original plan built inside the
Dockerfile's `rust:1.96-alpine3.24` for byte-for-byte parity with
Docker; broke on `ubuntu-22.04-arm` because JS-based GitHub Actions
(checkout, artifact steps, setup-node) can't run inside Alpine on
ARM64 (Node.js binary requires glibc; the x64-Alpine workaround
doesn't extend to arm64). Native `ubuntu-22.04` + `musl-tools` +
`rustup target add` produces the same `--target *-musl` output
without the container gymnastics.
**Rationale for musl-only Linux**:
@@ -524,7 +538,6 @@ Per-target baseline for `release-binaries.yml`:
| `x86_64-unknown-linux-musl` | `-C target-cpu=x86-64-v2` |
| `aarch64-unknown-linux-musl` | `-C target-cpu=generic` (safe ARMv8-A baseline) |
| `aarch64-apple-darwin` | `-C target-cpu=apple-m1` |
| `x86_64-apple-darwin` | `-C target-cpu=x86-64-v2` |
`x86-64-v2` covers ~2010+ processors (Nehalem, Bulldozer). Widest
realistic install base for a "runs everywhere" tarball. Notably