From 562b041c672c256b71131754cba41bd4ae37ebbf Mon Sep 17 00:00:00 2001 From: "rearden-grok[bot]" <317016512+rearden-grok[bot]@users.noreply.github.com> Date: Fri, 16 Oct 2026 13:37:10 -0700 Subject: [PATCH] ci: pin Darwin runners to macos-26 GitHub retires the macos-14 image on 2 November 2026. The required PR smoke job and the Darwin release zip stay on a concrete arm64 label, the same way Windows stays on windows-2022. --- .github/workflows/ci.yml | 4 ++-- .github/workflows/release.yml | 2 +- CONTRIBUTING.md | 4 ++-- changelog.d/macos-26-runner.md | 3 +++ docs/reproducible-builds.md | 2 +- 5 files changed, 9 insertions(+), 6 deletions(-) create mode 100644 changelog.d/macos-26-runner.md diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index cd4f0d075..289ea6d08 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -164,7 +164,7 @@ jobs: # Darwin pool IO + mmap fuse + query confirm + --smoke. Required. Not a notarized / operator zip. macos: name: macos - runs-on: macos-14 + runs-on: macos-26 timeout-minutes: 30 env: CARGO_TARGET_DIR: target/dev @@ -174,7 +174,7 @@ jobs: - uses: dtolnay/rust-toolchain@a5f673d0ba8626c3977bb416a1612774bc82181b # rustc 1.95.0 - uses: Swatinem/rust-cache@6323deb102c322ba6fcbdcafc7e3dddab59af2b6 # v2.9.2 with: - shared-key: ci-macos + shared-key: ci-macos-26 workspaces: ". -> target/dev" - name: store + node smoke run: ./scripts/ci-os-smoke.sh diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b5c0cff5c..df9bbf3de 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -157,7 +157,7 @@ jobs: macos: name: macos - runs-on: macos-14 + runs-on: macos-26 timeout-minutes: 120 env: CARGO_TERM_COLOR: always diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b49c509e4..7e39fe4ff 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -75,7 +75,7 @@ IO on Windows and Darwin. | `nix develop` / `nix-shell` | optional pin (below) | optional pin (below) — `aarch64-darwin` | no | **macOS Intel vs Apple Silicon:** rustup installs a native toolchain. CI `macos` is -`macos-14` (aarch64). You can develop on either; Release Darwin zips are **aarch64 +`macos-26` (aarch64). You can develop on either; Release Darwin zips are **aarch64 only** and ad-hoc signed ([`OPERATOR.md`](./OPERATOR.md)). **WSL2:** treat it as Linux. Install rustup *inside* the distro (not the Windows @@ -147,7 +147,7 @@ That is **not** the operator binary (`nix build .#rbitcoin-musl`). Details: **Release `packages` stay Linux-only** (`nix build` has no `aarch64-darwin` attribute). The dev shell pins tool versions and builds nothing that ships, so the static-musl constraint that excludes Darwin from `packages` does not apply -to it. Darwin operator binaries come from the `macos-14` release job, not Nix. +to it. Darwin operator binaries come from the `macos-26` release job, not Nix. ## Principles diff --git a/changelog.d/macos-26-runner.md b/changelog.d/macos-26-runner.md new file mode 100644 index 000000000..219f638db --- /dev/null +++ b/changelog.d/macos-26-runner.md @@ -0,0 +1,3 @@ +Changed + +- **Darwin CI and release run on `macos-26`.** The required PR `macos` job and the Darwin operator zip use that image. GitHub retires `macos-14` on 2 November 2026. diff --git a/docs/reproducible-builds.md b/docs/reproducible-builds.md index b1eba51dd..7f035d6b1 100644 --- a/docs/reproducible-builds.md +++ b/docs/reproducible-builds.md @@ -88,7 +88,7 @@ Windows operator binary the same way: | OS | Why not Nix `pkgsStatic` | What ships / what PR CI runs | |----|--------------------------|----------------| | **Windows** | No musl-style fully static PE from this flake; mingw cross is a different CRT than operators run | **Release:** `windows-2022` + rustc **1.95** + `-C target-feature=+crt-static`. Stage script refuses VC++ / MinGW runtime DLLs. **PR `ci`:** `./scripts/ci-os-smoke.sh` (store IO + mmap fuse + query confirm + `--smoke`) | -| **Darwin** | Apple forbids a static `libSystem` link. `nix build` on a Mac is store-rpath (not portable) | **Release:** `macos-14` + rustc **1.95**. Stage script allows only `/usr/lib` and `/System/Library` dylibs. Ad-hoc `codesign -s -` (not notarized). **aarch64 only**. **PR `ci`:** `./scripts/ci-os-smoke.sh` | +| **Darwin** | Apple forbids a static `libSystem` link. `nix build` on a Mac is store-rpath (not portable) | **Release:** `macos-26` + rustc **1.95**. Stage script allows only `/usr/lib` and `/System/Library` dylibs. Ad-hoc `codesign -s -` (not notarized). **aarch64 only**. **PR `ci`:** `./scripts/ci-os-smoke.sh` | Staging for Releases: `scripts/stage-native-artifacts.sh`. Not byte-identical with the musl package. Windows IoRing is not supported.