From 82ff454e0f54bfce5bf0a7b3cdc391457c2e40ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gabriel=20Fr=C3=B3es=20Franco?= Date: Thu, 14 May 2026 22:29:36 +0000 Subject: [PATCH] ci(release): drop cross, use rustup targets + native linkers cross spawns Docker containers per target, but the Gitea Actions runner doesn't expose /var/run/docker.sock, so every cross-compile step died with "Cannot connect to the Docker daemon". Replace with rustup-installed targets plus per-target linker setup: - x86_64-gnu: native (no extra deps) - aarch64-gnu: gcc-aarch64-linux-gnu from apt - x86_64-musl: musl-tools from apt - aarch64-musl: rust-lld + link-self-contained (rust-std bundles musl libc.a + crt, no apt deps needed) Verified aarch64-musl path locally: produces a statically linked ARM aarch64 ELF. Co-Authored-By: Claude Opus 4.7 (1M context) --- .gitea/workflows/release.yaml | 42 +++++++++++++++++++++++------------ 1 file changed, 28 insertions(+), 14 deletions(-) diff --git a/.gitea/workflows/release.yaml b/.gitea/workflows/release.yaml index b6861d8..d3ca39c 100644 --- a/.gitea/workflows/release.yaml +++ b/.gitea/workflows/release.yaml @@ -19,11 +19,19 @@ jobs: strategy: fail-fast: false matrix: - target: - - x86_64-unknown-linux-gnu - - aarch64-unknown-linux-gnu - - x86_64-unknown-linux-musl - - aarch64-unknown-linux-musl + include: + - target: x86_64-unknown-linux-gnu + apt: "" + rustflags: "" + - target: aarch64-unknown-linux-gnu + apt: "gcc-aarch64-linux-gnu" + rustflags: "" + - target: x86_64-unknown-linux-musl + apt: "musl-tools" + rustflags: "" + - target: aarch64-unknown-linux-musl + apt: "" + rustflags: "-C linker=rust-lld -C link-self-contained=yes" steps: - uses: actions/checkout@v4 @@ -31,11 +39,16 @@ jobs: with: targets: ${{ matrix.target }} + - name: Install cross toolchain + if: matrix.apt != '' + run: | + sudo apt-get update -qq + sudo apt-get install -y --no-install-recommends ${{ matrix.apt }} + - name: Cache cargo state uses: actions/cache@v4 with: path: | - ~/.cargo/bin ~/.cargo/registry ~/.cargo/git target @@ -43,14 +56,15 @@ jobs: restore-keys: | ${{ runner.os }}-cargo-release-${{ matrix.target }}- - - name: Install cross - run: | - if ! command -v cross >/dev/null 2>&1; then - cargo install cross --locked --version 0.2.5 - fi - - - name: Cross-compile nuwiki-ls - run: cross build --release --target ${{ matrix.target }} -p nuwiki-ls + - name: Build nuwiki-ls + env: + # Per-target linker overrides. Cargo ignores the entries that + # don't match the current target, so setting all of them here + # keeps the matrix declarative. + CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER: aarch64-linux-gnu-gcc + CARGO_TARGET_X86_64_UNKNOWN_LINUX_MUSL_LINKER: musl-gcc + RUSTFLAGS: ${{ matrix.rustflags }} + run: cargo build --release --target ${{ matrix.target }} -p nuwiki-ls - name: Package archive id: package