Skip to content

Commit f21b19f

Browse files
BenLocalclaude
andcommitted
ci(build): run linux/arm64 on native runner, drop QEMU
The multi-arch build emulated arm64 via QEMU, whose user-mode emulation segfaulted glibc ldconfig during the libc-bin trigger ("qemu: uncaught target signal 11"), deterministically failing the arm64 leg. Pair each linux arch with a native runner via a matrix include (amd64 -> ubuntu-latest, arm64 -> ubuntu-24.04-arm), set runs-on to ${{ matrix.runner }}, and drop the Set up QEMU step. Native runners build each arch with no emulation, so the segfault can't occur and builds are faster. ubuntu-24.04-arm is GA and free for public repos. Signed-off-by: benshi <807629978@qq.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent 878e429 commit f21b19f

1 file changed

Lines changed: 10 additions & 3 deletions

File tree

.github/workflows/build.yml

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,19 @@ jobs:
2828
matrix:
2929
platform: [linux/amd64, linux/arm64]
3030
branch: [master, feature/transcode2]
31-
runs-on: ubuntu-latest
31+
# Build each arch on a native runner so docker buildx never emulates:
32+
# foreign-arch QEMU segfaults glibc ldconfig (libc-bin trigger -> "qemu:
33+
# uncaught target signal 11"), which broke the arm64 leg. ubuntu-24.04-arm
34+
# is GA and free for public repos.
35+
include:
36+
- platform: linux/amd64
37+
runner: ubuntu-latest
38+
- platform: linux/arm64
39+
runner: ubuntu-24.04-arm
40+
runs-on: ${{ matrix.runner }}
3241
steps:
3342
- name: Checkout
3443
uses: actions/checkout@v5
35-
- name: Set up QEMU
36-
uses: docker/setup-qemu-action@v3
3744
- name: Set up Docker Buildx
3845
uses: docker/setup-buildx-action@v3
3946
- name: prepare

0 commit comments

Comments
 (0)