Skip to content

ci: build arm64 prebuilds on native ARM runners (drop QEMU + 32-bit arm)#37

Merged
arv merged 1 commit into
mainfrom
arv/native-arm64-prebuilds
Jun 3, 2026
Merged

ci: build arm64 prebuilds on native ARM runners (drop QEMU + 32-bit arm)#37
arv merged 1 commit into
mainfrom
arv/native-arm64-prebuilds

Conversation

@arv
Copy link
Copy Markdown
Contributor

@arv arv commented Jun 3, 2026

First step toward fixing the ICU linking situation: get the arm64 builders onto solid ground.

What

Replace the QEMU-emulated arm prebuilds with native ubuntu-24.04-arm container jobs (free for public repos), arm64-only.

  • prebuild-alpine-arm64, prebuild-linux-arm64, prebuild-linux-arm64-node-modern now run on ubuntu-24.04-arm as ordinary container jobs — identical to the x64 jobs except the runner. No docker/setup-qemu-action, no docker run --platform wrapper.
  • Drop arm/v7 (32-bit ARM) — not supported by Zero.
  • Updated publish needs: to the renamed jobs.

Why

  • Speed: native arm64 builds instead of QEMU emulation (minutes vs. the ~hour we just watched).
  • Reliability: kills the qemu: uncaught target signal 4 (Illegal instruction) crash we hit on emulated musl/arm64.
  • Sets up the ICU fix: whatever we land for ICU (static-from-source -fPIC, or dropping ICU), the arm64 jobs will build it natively — no more 30–60 min QEMU ICU compiles.

Validation

Prebuild jobs only run on release, so this PR's CI won't exercise them. They mirror the working x64 jobs, so risk is low — they'll be validated when we cut the next release (1.1.1). Happy to do a throwaway test release first if you'd prefer to confirm the native runners before the real one.

🤖 Generated with Claude Code

The arm prebuilds ran node containers under QEMU emulation, which is slow and
hit "qemu: uncaught target signal 4 (Illegal instruction)" crashes on musl/arm64.
GitHub now offers free native ARM runners for public repos.

- alpine/glibc arm64 now run on `ubuntu-24.04-arm` as ordinary container jobs,
  mirroring the x64 jobs (no docker/setup-qemu-action, no `docker run` wrapper).
- Drop the 32-bit `arm/v7` prebuilds — Zero does not support 32-bit ARM.
- Rename + update publish `needs` accordingly.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@arv arv requested a review from tantaman June 3, 2026 14:29
@arv arv merged commit 000daaa into main Jun 3, 2026
37 checks passed
@arv arv deleted the arv/native-arm64-prebuilds branch June 3, 2026 14:29
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