From 41843e63b0b72fdc2331a89a5f757d82ae4c6ab5 Mon Sep 17 00:00:00 2001 From: Stary Date: Mon, 4 May 2026 15:17:58 +0800 Subject: [PATCH] fix(ci): use cargo-zigbuild to lower Linux glibc requirement to 2.28 (#556) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replace `cargo build` with `cargo zigbuild` for Linux release binaries, targeting `x86_64-unknown-linux-gnu.2.28` and `aarch64-unknown-linux-gnu.2.28` so prebuilt binaries run on distributions with glibc ≥ 2.28 (RHEL 8+, CentOS 8+, TencentOS 3, Debian 10+, Ubuntu 20.04+) instead of requiring glibc ≥ 2.39. Fixes #555. Signed-off-by: staryxchen --- .github/workflows/release.yml | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 490f5ca5..db88ba11 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -58,10 +58,12 @@ jobs: # --- deepseek (cli) --- - os: ubuntu-latest target: x86_64-unknown-linux-gnu + target_zig: x86_64-unknown-linux-gnu.2.28 binary: deepseek artifact_name: deepseek-linux-x64 - os: ubuntu-24.04-arm target: aarch64-unknown-linux-gnu + target_zig: aarch64-unknown-linux-gnu.2.28 binary: deepseek artifact_name: deepseek-linux-arm64 - os: macos-latest @@ -79,10 +81,12 @@ jobs: # --- deepseek-tui (TUI) --- - os: ubuntu-latest target: x86_64-unknown-linux-gnu + target_zig: x86_64-unknown-linux-gnu.2.28 binary: deepseek-tui artifact_name: deepseek-tui-linux-x64 - os: ubuntu-24.04-arm target: aarch64-unknown-linux-gnu + target_zig: aarch64-unknown-linux-gnu.2.28 binary: deepseek-tui artifact_name: deepseek-tui-linux-arm64 - os: macos-latest @@ -103,14 +107,31 @@ jobs: - uses: dtolnay/rust-toolchain@stable with: targets: ${{ matrix.target }} + - uses: Swatinem/rust-cache@v2 - name: Install Linux system dependencies if: runner.os == 'Linux' run: sudo apt-get update && sudo apt-get install -y libdbus-1-dev pkg-config - - run: cargo build --release --locked --target ${{ matrix.target }} + - name: Install zig + if: runner.os == 'Linux' + uses: goto-bus-stop/setup-zig@v2 + with: + version: '0.13.0' + - name: Install cargo-zigbuild + if: runner.os == 'Linux' + run: cargo install cargo-zigbuild --locked + - name: Build + shell: bash + run: | + if [ -n "${{ matrix.target_zig }}" ]; then + cargo zigbuild --release --locked --target ${{ matrix.target_zig }} + else + cargo build --release --locked --target ${{ matrix.target }} + fi - name: Rename binary shell: bash run: | - cp target/${{ matrix.target }}/release/${{ matrix.binary }} ${{ matrix.artifact_name }} + TARGET_DIR="${{ matrix.target_zig || matrix.target }}" + cp "target/${TARGET_DIR}/release/${{ matrix.binary }}" ${{ matrix.artifact_name }} - uses: actions/upload-artifact@v4 with: name: ${{ matrix.artifact_name }}