Skip to content

Commit 6105c79

Browse files
authored
ci: fix arm musl build (#966)
it ain't pretty, but the build passes
1 parent c466665 commit 6105c79

1 file changed

Lines changed: 24 additions & 2 deletions

File tree

.github/workflows/rust.yml

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ jobs:
8686
uses: actions/checkout@v4
8787

8888
- name: Update apt repositories
89-
if: matrix.target == 'aarch64-unknown-linux-gnu' || matrix.target == 'x86_64-unknown-linux-musl'
89+
if: matrix.target == 'aarch64-unknown-linux-gnu' || matrix.target == 'aarch64-unknown-linux-musl' || matrix.target == 'x86_64-unknown-linux-musl'
9090
run: sudo apt-get update
9191

9292
- name: Install AArch64 target toolchain
@@ -97,6 +97,12 @@ jobs:
9797
if: matrix.target == 'x86_64-unknown-linux-musl'
9898
run: sudo apt-get install musl-tools
9999

100+
- name: Install Zig
101+
if: matrix.target == 'aarch64-unknown-linux-musl'
102+
uses: mlugg/setup-zig@v2
103+
with:
104+
version: 0.11.0
105+
100106
- name: Install Toolchain
101107
uses: dtolnay/rust-toolchain@4305c38b25d97ef35a8ad1f985ccf2d2242004f2 # stable
102108
with:
@@ -107,7 +113,23 @@ jobs:
107113
uses: Swatinem/rust-cache@9d47c6ad4b02e050fd481d890b2ea34778fd09d6 # pin@v2
108114

109115
- name: Build
110-
run: RUSTFLAGS="${{ matrix.rustflags }}" cargo build --target ${{ matrix.target }} --release
116+
run: |
117+
if [ "${{ matrix.target }}" = "aarch64-unknown-linux-musl" ]; then
118+
mkdir -p "$RUNNER_TEMP/bin"
119+
120+
printf '%s\n' '#!/usr/bin/env bash' 'args=()' 'skip_next=0' 'for arg in "$@"; do' ' if [ "$skip_next" = "1" ]; then' ' skip_next=0' ' continue' ' fi' ' case "$arg" in' ' --target=*|-target=*) continue ;;' ' --target|-target) skip_next=1; continue ;;' ' esac' ' args+=("$arg")' 'done' 'exec zig cc -target aarch64-linux-musl "${args[@]}"' > "$RUNNER_TEMP/bin/aarch64-linux-musl-gcc"
121+
printf '%s\n' '#!/usr/bin/env bash' 'exec zig ar "$@"' > "$RUNNER_TEMP/bin/aarch64-linux-musl-ar"
122+
printf '%s\n' '#!/usr/bin/env bash' 'exec zig ranlib "$@"' > "$RUNNER_TEMP/bin/aarch64-linux-musl-ranlib"
123+
124+
chmod +x "$RUNNER_TEMP/bin/aarch64-linux-musl-gcc" "$RUNNER_TEMP/bin/aarch64-linux-musl-ar" "$RUNNER_TEMP/bin/aarch64-linux-musl-ranlib"
125+
126+
export PATH="$RUNNER_TEMP/bin:$PATH"
127+
export CC_aarch64_unknown_linux_musl=aarch64-linux-musl-gcc
128+
export AR_aarch64_unknown_linux_musl=aarch64-linux-musl-ar
129+
export RANLIB_aarch64_unknown_linux_musl=aarch64-linux-musl-ranlib
130+
fi
131+
132+
RUSTFLAGS="${{ matrix.rustflags }}" cargo build --target ${{ matrix.target }} --release
111133
shell: bash
112134

113135
- name: Rename artifact (windows)

0 commit comments

Comments
 (0)