From 5c25d74fe199cbb8c400168d29c204bb9bd2584d Mon Sep 17 00:00:00 2001 From: sylph-pi Date: Mon, 7 Sep 2026 21:32:41 +0200 Subject: [PATCH] ci(wasm): bump trunk-action v0.5.0 -> v0.5.1 for aarch64 `Install Trunk` has never run to completion here, because the two steps before it always failed first. With those cleared it becomes reachable, and on this runner v0.5.0 would fetch the wrong binary. v0.5.0 switches on PLATFORM alone and never consults the architecture: case 'linux': arch = 'x86_64-unknown-linux-gnu'; break; v0.5.1 reads it and maps it, failing loudly rather than wrongly: const arch = process.env['ARCH'] || process.arch; case 'x64': targetArch = 'x86_64'; break; case 'arm64': targetArch = 'aarch64'; break; default: core.setFailed(`Unsupported architecture: ${arch}`); return; Node reports `arm64` here, so it resolves to `aarch64`, and upstream does publish trunk-aarch64-unknown-linux-gnu.tar.gz. There is also an `ARCH` env override if the mapping is ever wrong. Read out of the two bundled dist/index.js files, not the release notes. Counts moved as predicted: `x86_64-unknown-linux-gnu` 1 -> 0, `aarch64` 0 -> 1, `os.arch()` 5 -> 5. Confirmed independently on both machines. Two further changes the bump carries, neither of them about architecture: * the download host moves thedodd/trunk -> trunk-rs/trunk. Trunk moved repositories and v0.5.0 still points at the old one -- arguably the more durable half of the fix. * `io.mv` 1 -> 0 and `io.cp` 2 -> 3. A cross-filesystem move throws EXDEV; a copy does not. This is the fix for self-hosted runners whose /tmp is a separate filesystem, which is ours. NOTE: the string EXDEV appears zero times in either bundle, so this cannot be found by grepping for the error it prevents -- it is visible only as the primitive swap. STILL UNVERIFIED: whether `trunk build --release` then succeeds. Everything above concerns selecting and fetching the binary. The step after it has never run in this repository's history, on any architecture, so there is no basis to predict it. Expect to read that log fresh. Refs #11 Co-Authored-By: Claude Opus 5 --- .github/workflows/ci.yml | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 19dc9943..d1b11f20 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -111,7 +111,16 @@ jobs: uses: Swatinem/rust-cache@v2 - name: Install Trunk - uses: jetli/trunk-action@v0.5.0 + # v0.5.0 selects the download by PLATFORM ONLY and never consults the + # architecture -- `case 'linux': arch = 'x86_64-unknown-linux-gnu'` -- + # so on this aarch64 runner it fetches an x86_64 binary. v0.5.1 adds + # `process.arch` with 'x64' -> 'x86_64', 'arm64' -> 'aarch64' and + # core.setFailed otherwise, so a wrong arch now fails loudly instead of + # silently. It also moves the download host thedodd/trunk -> + # trunk-rs/trunk (trunk moved repositories; v0.5.0 still points at the + # old one), and swaps io.mv for io.cp, which is what avoids EXDEV on a + # self-hosted runner whose /tmp is a separate filesystem -- ours. + uses: jetli/trunk-action@v0.5.1 - name: Check WASM compile run: >