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:
@@ -87,8 +87,21 @@ jobs:
|
|||||||
|
|
||||||
# ── Stage 2: Build one binary per target ────────────────────────────
|
# ── Stage 2: Build one binary per target ────────────────────────────
|
||||||
#
|
#
|
||||||
# 4-way matrix — 2 musl-linux (native amd64 + arm64) + 2 macOS
|
# 3-way matrix — 2 musl-linux (native amd64 + arm64) + macOS Apple
|
||||||
# (Apple Silicon + last Intel runner tier). Windows is deferred.
|
# 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
|
# All targets run natively on GitHub-hosted runners with the host's
|
||||||
# glibc + rustup, then cross-compile to their target triple via
|
# glibc + rustup, then cross-compile to their target triple via
|
||||||
@@ -128,9 +141,6 @@ jobs:
|
|||||||
- triple: aarch64-apple-darwin
|
- triple: aarch64-apple-darwin
|
||||||
runner: macos-latest
|
runner: macos-latest
|
||||||
rustflags: "-C target-cpu=apple-m1"
|
rustflags: "-C target-cpu=apple-m1"
|
||||||
- triple: x86_64-apple-darwin
|
|
||||||
runner: macos-13
|
|
||||||
rustflags: "-C target-cpu=x86-64-v2"
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
|
|||||||
+10
-4
@@ -11,21 +11,27 @@ oxicloud` picks the right archive for your host automatically.
|
|||||||
|
|
||||||
## Which tarball do I want?
|
## Which tarball do I want?
|
||||||
|
|
||||||
Every release attaches four tarballs plus a `SHA256SUMS` manifest. Pick
|
Every release attaches three tarballs plus a `SHA256SUMS` manifest.
|
||||||
by your host's architecture and OS:
|
Pick by your host's architecture and OS:
|
||||||
|
|
||||||
| Host | Tarball |
|
| Host | Tarball |
|
||||||
|---|---|
|
|---|---|
|
||||||
| Linux x86-64 (Intel / AMD servers, most VPS, WSL) | `oxicloud-<version>-x86_64-unknown-linux-musl.tar.gz` |
|
| 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` |
|
| 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 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
|
The Linux tarballs link against musl, so they run on ANY glibc version
|
||||||
— Alpine, Debian, Ubuntu, Fedora, Arch, Rocky, and every version in
|
— Alpine, Debian, Ubuntu, Fedora, Arch, Rocky, and every version in
|
||||||
between. You never need to worry about `GLIBC_x.yy not found`.
|
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
|
## Hardware notes
|
||||||
|
|
||||||
|
|||||||
@@ -433,14 +433,28 @@ its cache).
|
|||||||
|
|
||||||
### 3. Target matrix — musl-only Linux
|
### 3. Target matrix — musl-only Linux
|
||||||
|
|
||||||
Four triples cover the practical need:
|
Three triples cover the practical need:
|
||||||
|
|
||||||
| Triple | Runner + toolchain | Notes |
|
| 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. |
|
| `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` 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. |
|
| `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 |
|
| `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**:
|
**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` |
|
| `x86_64-unknown-linux-musl` | `-C target-cpu=x86-64-v2` |
|
||||||
| `aarch64-unknown-linux-musl` | `-C target-cpu=generic` (safe ARMv8-A baseline) |
|
| `aarch64-unknown-linux-musl` | `-C target-cpu=generic` (safe ARMv8-A baseline) |
|
||||||
| `aarch64-apple-darwin` | `-C target-cpu=apple-m1` |
|
| `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
|
`x86-64-v2` covers ~2010+ processors (Nehalem, Bulldozer). Widest
|
||||||
realistic install base for a "runs everywhere" tarball. Notably
|
realistic install base for a "runs everywhere" tarball. Notably
|
||||||
|
|||||||
Reference in New Issue
Block a user