Skip to content

Commit 8179b4a

Browse files
committed
refactor(ci): switch from manual zig wrapper to cargo-zigbuild
Replace the custom Python zig-cc linker wrapper with cargo-zigbuild, which handles target mapping and linker flag filtering automatically. Tested locally with x86_64-gnu, x86_64-musl, aarch64-gnu, and armv7-gnu.
1 parent 85edde0 commit 8179b4a

1 file changed

Lines changed: 3 additions & 33 deletions

File tree

.github/workflows/release.yml

Lines changed: 3 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -18,47 +18,30 @@ jobs:
1818
include:
1919
# ---- GNU targets ----
2020
- target: x86_64-unknown-linux-gnu
21-
zig_target: x86_64-linux-gnu
2221
- target: i686-unknown-linux-gnu
23-
zig_target: x86-linux-gnu
2422
- target: aarch64-unknown-linux-gnu
25-
zig_target: aarch64-linux-gnu
2623
- target: arm-unknown-linux-gnueabihf
27-
zig_target: arm-linux-gnueabihf
2824
- target: armv7-unknown-linux-gnueabihf
29-
zig_target: arm-linux-gnueabihf
3025
- target: riscv64gc-unknown-linux-gnu
31-
zig_target: riscv64-linux-gnu
3226
- target: powerpc64le-unknown-linux-gnu
33-
zig_target: powerpc64le-linux-gnu
3427
- target: s390x-unknown-linux-gnu
35-
zig_target: s390x-linux-gnu
3628
- target: loongarch64-unknown-linux-gnu
37-
zig_target: loongarch64-linux-gnu
3829
# ---- musl targets (static binaries) ----
3930
- target: x86_64-unknown-linux-musl
40-
zig_target: x86_64-linux-musl
4131
musl: true
4232
- target: i686-unknown-linux-musl
43-
zig_target: x86-linux-musl
4433
musl: true
4534
- target: aarch64-unknown-linux-musl
46-
zig_target: aarch64-linux-musl
4735
musl: true
4836
- target: arm-unknown-linux-musleabihf
49-
zig_target: arm-linux-musleabihf
5037
musl: true
5138
- target: armv7-unknown-linux-musleabihf
52-
zig_target: arm-linux-musleabihf
5339
musl: true
5440
- target: riscv64gc-unknown-linux-musl
55-
zig_target: riscv64-linux-musl
5641
musl: true
5742
- target: powerpc64le-unknown-linux-musl
58-
zig_target: powerpc64le-linux-musl
5943
musl: true
6044
- target: loongarch64-unknown-linux-musl
61-
zig_target: loongarch64-linux-musl
6245
musl: true
6346

6447
steps:
@@ -72,21 +55,8 @@ jobs:
7255
- name: Install Zig
7356
uses: mlugg/setup-zig@v2
7457

75-
- name: Configure Zig linker
76-
run: |
77-
# Create zig cc wrapper that filters unsupported linker flags
78-
cat > /usr/local/bin/zig-cc << 'WRAPPER'
79-
#!/usr/bin/env python3
80-
import sys, os
81-
args = [a for a in sys.argv[1:] if not a.startswith("-Wl,-melf_")]
82-
os.execvp("zig", ["zig", "cc", "-target", os.environ["ZIG_TARGET"]] + args)
83-
WRAPPER
84-
chmod +x /usr/local/bin/zig-cc
85-
86-
# Set linker for this matrix target
87-
TARGET_UPPER="$(echo '${{ matrix.target }}' | tr 'a-z-' 'A-Z_')"
88-
echo "CARGO_TARGET_${TARGET_UPPER}_LINKER=zig-cc" >> "$GITHUB_ENV"
89-
echo "ZIG_TARGET=${{ matrix.zig_target }}" >> "$GITHUB_ENV"
58+
- name: Install cargo-zigbuild
59+
run: pip install cargo-zigbuild
9060

9161
- name: Build
9262
run: |
@@ -96,7 +66,7 @@ jobs:
9666
fi
9767
export RUSTFLAGS
9868
99-
cargo +nightly build \
69+
cargo +nightly zigbuild \
10070
-Z build-std=std,panic_abort \
10171
--target ${{ matrix.target }} \
10272
--release

0 commit comments

Comments
 (0)