From 35e2e4b975b2ca43771211aa0c1829a9e2ddf791 Mon Sep 17 00:00:00 2001 From: Steve Dignam Date: Wed, 25 Feb 2026 20:07:10 -0500 Subject: [PATCH 1/6] ci: fix arm musl build --- .github/workflows/rust.yml | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index b94f1d3f..f07b5bbd 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -86,11 +86,11 @@ jobs: uses: actions/checkout@v4 - name: Update apt repositories - if: matrix.target == 'aarch64-unknown-linux-gnu' || matrix.target == 'x86_64-unknown-linux-musl' + if: matrix.target == 'aarch64-unknown-linux-gnu' || matrix.target == 'aarch64-unknown-linux-musl' || matrix.target == 'x86_64-unknown-linux-musl' run: sudo apt-get update - name: Install AArch64 target toolchain - if: matrix.target == 'aarch64-unknown-linux-gnu' + if: matrix.target == 'aarch64-unknown-linux-gnu' || matrix.target == 'aarch64-unknown-linux-musl' run: sudo apt-get install gcc-aarch64-linux-gnu - name: Install x86_64-musl target toolchain @@ -107,7 +107,13 @@ jobs: uses: Swatinem/rust-cache@9d47c6ad4b02e050fd481d890b2ea34778fd09d6 # pin@v2 - name: Build - run: RUSTFLAGS="${{ matrix.rustflags }}" cargo build --target ${{ matrix.target }} --release + run: | + if [ "${{ matrix.target }}" = "aarch64-unknown-linux-musl" ]; then + export CC_aarch64_unknown_linux_musl=aarch64-linux-gnu-gcc + export AR_aarch64_unknown_linux_musl=aarch64-linux-gnu-ar + fi + + RUSTFLAGS="${{ matrix.rustflags }}" cargo build --target ${{ matrix.target }} --release shell: bash - name: Rename artifact (windows) From efc2981d6bde1f060942a3ff10a4adce9e6fc50f Mon Sep 17 00:00:00 2001 From: Steve Dignam Date: Thu, 26 Feb 2026 19:13:18 -0500 Subject: [PATCH 2/6] another attempt --- .github/workflows/rust.yml | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index f07b5bbd..4b0bf65e 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -97,6 +97,12 @@ jobs: if: matrix.target == 'x86_64-unknown-linux-musl' run: sudo apt-get install musl-tools + - name: Install Zig + if: matrix.target == 'aarch64-unknown-linux-musl' + run: | + python3 -m pip install --user ziglang==0.11.0 + echo "$HOME/.local/bin" >> "$GITHUB_PATH" + - name: Install Toolchain uses: dtolnay/rust-toolchain@4305c38b25d97ef35a8ad1f985ccf2d2242004f2 # stable with: @@ -109,8 +115,9 @@ jobs: - name: Build run: | if [ "${{ matrix.target }}" = "aarch64-unknown-linux-musl" ]; then - export CC_aarch64_unknown_linux_musl=aarch64-linux-gnu-gcc - export AR_aarch64_unknown_linux_musl=aarch64-linux-gnu-ar + export CC_aarch64_unknown_linux_musl="zig cc -target aarch64-linux-musl" + export AR_aarch64_unknown_linux_musl="zig ar" + export RANLIB_aarch64_unknown_linux_musl="zig ranlib" fi RUSTFLAGS="${{ matrix.rustflags }}" cargo build --target ${{ matrix.target }} --release From f09af3d9a88472329fe78aa557eef5904f898043 Mon Sep 17 00:00:00 2001 From: Steve Dignam Date: Thu, 26 Feb 2026 19:19:55 -0500 Subject: [PATCH 3/6] fix build? --- .github/workflows/rust.yml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 4b0bf65e..c90c99b7 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -90,7 +90,7 @@ jobs: run: sudo apt-get update - name: Install AArch64 target toolchain - if: matrix.target == 'aarch64-unknown-linux-gnu' || matrix.target == 'aarch64-unknown-linux-musl' + if: matrix.target == 'aarch64-unknown-linux-gnu' run: sudo apt-get install gcc-aarch64-linux-gnu - name: Install x86_64-musl target toolchain @@ -99,9 +99,9 @@ jobs: - name: Install Zig if: matrix.target == 'aarch64-unknown-linux-musl' - run: | - python3 -m pip install --user ziglang==0.11.0 - echo "$HOME/.local/bin" >> "$GITHUB_PATH" + uses: mlugg/setup-zig@v2 + with: + version: 0.11.0 - name: Install Toolchain uses: dtolnay/rust-toolchain@4305c38b25d97ef35a8ad1f985ccf2d2242004f2 # stable @@ -115,7 +115,8 @@ jobs: - name: Build run: | if [ "${{ matrix.target }}" = "aarch64-unknown-linux-musl" ]; then - export CC_aarch64_unknown_linux_musl="zig cc -target aarch64-linux-musl" + export CC_aarch64_unknown_linux_musl=zig + export CFLAGS_aarch64_unknown_linux_musl=--target=aarch64-linux-musl export AR_aarch64_unknown_linux_musl="zig ar" export RANLIB_aarch64_unknown_linux_musl="zig ranlib" fi From f5a5f1149ffc3ebb65adcaef7af472f2c1c938a1 Mon Sep 17 00:00:00 2001 From: Steve Dignam Date: Thu, 26 Feb 2026 19:43:39 -0500 Subject: [PATCH 4/6] try again --- .github/workflows/rust.yml | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index c90c99b7..b99c223a 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -115,10 +115,29 @@ jobs: - name: Build run: | if [ "${{ matrix.target }}" = "aarch64-unknown-linux-musl" ]; then - export CC_aarch64_unknown_linux_musl=zig - export CFLAGS_aarch64_unknown_linux_musl=--target=aarch64-linux-musl - export AR_aarch64_unknown_linux_musl="zig ar" - export RANLIB_aarch64_unknown_linux_musl="zig ranlib" + mkdir -p "$RUNNER_TEMP/bin" + + cat > "$RUNNER_TEMP/bin/aarch64-linux-musl-gcc" << 'EOF' + #!/usr/bin/env bash + exec zig cc --target=aarch64-linux-musl "$@" + EOF + + cat > "$RUNNER_TEMP/bin/aarch64-linux-musl-ar" << 'EOF' + #!/usr/bin/env bash + exec zig ar "$@" + EOF + + cat > "$RUNNER_TEMP/bin/aarch64-linux-musl-ranlib" << 'EOF' + #!/usr/bin/env bash + exec zig ranlib "$@" + EOF + + chmod +x "$RUNNER_TEMP/bin/aarch64-linux-musl-gcc" "$RUNNER_TEMP/bin/aarch64-linux-musl-ar" "$RUNNER_TEMP/bin/aarch64-linux-musl-ranlib" + + export PATH="$RUNNER_TEMP/bin:$PATH" + export CC_aarch64_unknown_linux_musl=aarch64-linux-musl-gcc + export AR_aarch64_unknown_linux_musl=aarch64-linux-musl-ar + export RANLIB_aarch64_unknown_linux_musl=aarch64-linux-musl-ranlib fi RUSTFLAGS="${{ matrix.rustflags }}" cargo build --target ${{ matrix.target }} --release From 84560a7c5f11fc0f146b7092fdfceefec65f4665 Mon Sep 17 00:00:00 2001 From: Steve Dignam Date: Thu, 26 Feb 2026 19:45:35 -0500 Subject: [PATCH 5/6] another attempt --- .github/workflows/rust.yml | 17 +++-------------- 1 file changed, 3 insertions(+), 14 deletions(-) diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index b99c223a..f1c7c0cb 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -117,20 +117,9 @@ jobs: if [ "${{ matrix.target }}" = "aarch64-unknown-linux-musl" ]; then mkdir -p "$RUNNER_TEMP/bin" - cat > "$RUNNER_TEMP/bin/aarch64-linux-musl-gcc" << 'EOF' - #!/usr/bin/env bash - exec zig cc --target=aarch64-linux-musl "$@" - EOF - - cat > "$RUNNER_TEMP/bin/aarch64-linux-musl-ar" << 'EOF' - #!/usr/bin/env bash - exec zig ar "$@" - EOF - - cat > "$RUNNER_TEMP/bin/aarch64-linux-musl-ranlib" << 'EOF' - #!/usr/bin/env bash - exec zig ranlib "$@" - EOF + printf '%s\n' '#!/usr/bin/env bash' 'exec zig cc --target=aarch64-linux-musl "$@"' > "$RUNNER_TEMP/bin/aarch64-linux-musl-gcc" + printf '%s\n' '#!/usr/bin/env bash' 'exec zig ar "$@"' > "$RUNNER_TEMP/bin/aarch64-linux-musl-ar" + printf '%s\n' '#!/usr/bin/env bash' 'exec zig ranlib "$@"' > "$RUNNER_TEMP/bin/aarch64-linux-musl-ranlib" chmod +x "$RUNNER_TEMP/bin/aarch64-linux-musl-gcc" "$RUNNER_TEMP/bin/aarch64-linux-musl-ar" "$RUNNER_TEMP/bin/aarch64-linux-musl-ranlib" From 475dd5a7baf006fe3670b0bcf34cacb4e741d118 Mon Sep 17 00:00:00 2001 From: Steve Dignam Date: Thu, 26 Feb 2026 19:49:31 -0500 Subject: [PATCH 6/6] another attempt --- .github/workflows/rust.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index f1c7c0cb..9e228f72 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -117,7 +117,7 @@ jobs: if [ "${{ matrix.target }}" = "aarch64-unknown-linux-musl" ]; then mkdir -p "$RUNNER_TEMP/bin" - printf '%s\n' '#!/usr/bin/env bash' 'exec zig cc --target=aarch64-linux-musl "$@"' > "$RUNNER_TEMP/bin/aarch64-linux-musl-gcc" + 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" printf '%s\n' '#!/usr/bin/env bash' 'exec zig ar "$@"' > "$RUNNER_TEMP/bin/aarch64-linux-musl-ar" printf '%s\n' '#!/usr/bin/env bash' 'exec zig ranlib "$@"' > "$RUNNER_TEMP/bin/aarch64-linux-musl-ranlib"