Skip to content

fix(ci): cross-compile macOS x64 desktop build on Apple Silicon runner#597

Merged
bborn merged 1 commit into
mainfrom
fix/desktop-x64-cross-compile
Jun 12, 2026
Merged

fix(ci): cross-compile macOS x64 desktop build on Apple Silicon runner#597
bborn merged 1 commit into
mainfrom
fix/desktop-x64-cross-compile

Conversation

@bborn

@bborn bborn commented Jun 12, 2026

Copy link
Copy Markdown
Owner

Problem

GitHub retired the Intel macos-13 runner image. The macos-x64 bundle job in desktop.yml now queues forever — yesterday's run (27376820607) has had it stuck in queued for ~19h while macos-arm64 and linux-x64 completed. Net effect: v0.3.8 has no Intel DMG (TaskYou-macos-x64.dmg 404s), which also blocks the Intel path of the new install-macos.sh (#595).

Fix

Cross-compile the x64 bundle on an Apple Silicon runner:

  • macos-x64 matrix entry moves macos-13macos-14
  • dtolnay/rust-toolchain gets targets: ${{ matrix.triple }} so x86_64-apple-darwin is installed (tauri build already passes --target)
  • the ty sidecar builds with a new per-entry goarch matrix value (GOARCH=amd64 for the cross entry; native values elsewhere, so arm64/linux builds are unchanged)

Cross-arch Go auto-disables CGO, which is safe here: the sqlite driver is pure Go (modernc.org/sqlite).

Verification

  • GOARCH=amd64 go build ./cmd/task on an arm64 Mac → Mach-O 64-bit executable x86_64
  • Real proof needs a workflow_dispatch run of Desktop after merge — that will also backfill the missing x64 assets (re-tag or dispatch + gh release upload for v0.3.8).

🤖 Generated with Claude Code

GitHub retired the Intel macos-13 runner image, so the macos-x64 bundle
job queues forever and never runs — v0.3.8 shipped with no Intel DMG
(the asset 404s, which the new install-macos.sh script can't work
around).

Move the x64 job to macos-14 and cross-compile: rustup gets the
x86_64-apple-darwin target via dtolnay/rust-toolchain's targets input
(tauri build already passes --target), and the ty sidecar builds with
GOARCH=amd64. Cross-arch Go auto-disables CGO, which is fine because
the sqlite driver is pure Go (modernc.org/sqlite). Verified locally:
GOARCH=amd64 go build ./cmd/task produces a Mach-O x86_64 binary.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@bborn

bborn commented Jun 12, 2026

Copy link
Copy Markdown
Owner Author

QA evidence — real workflow_dispatch run on this branch

Dispatched the Desktop workflow on fix/desktop-x64-cross-compile: run 27424261234. All three jobs green — Bundle (macos-x64) completed in 5m13s on the Apple Silicon runner, vs. queued-forever on the retired macos-13 image (yesterday's run had it stuck in queued for 19+ hours).

597-run-jobs

Artifact verification (cross-compile produced real x86_64 binaries)

Downloaded the taskyou-desktop-macos-x64 artifact from the run, mounted the DMG:

$ file TaskYou.app/Contents/MacOS/*
TaskYou.app/Contents/MacOS/taskyou-desktop: Mach-O 64-bit executable x86_64
TaskYou.app/Contents/MacOS/ty:              Mach-O 64-bit executable x86_64

Both the Tauri shell and the Go ty sidecar are genuine x86_64 (DMG: 15 MB). Since this was a workflow_dispatch (not a tag), the attach-to-release step was skipped by design — after merge, a dispatch + gh release upload v0.3.8 --clobber from the artifacts backfills the missing Intel asset.

🤖 Generated with Claude Code

@bborn bborn merged commit b6cd8bd into main Jun 12, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant