From fa8b6b9d689d8bd7bef306b07de03b555d573018 Mon Sep 17 00:00:00 2001 From: NotAShelf Date: Sun, 30 Nov 2025 16:54:35 +0300 Subject: [PATCH] ci: set up cross comp for Rust builds Signed-off-by: NotAShelf Change-Id: I154d2afb05088e22882985bcd4536f026a6a6964 --- .github/workflows/rust.yml | 43 +++++++++++++++++++++++++++++++++----- 1 file changed, 38 insertions(+), 5 deletions(-) diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index e87e1da..b742a24 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -10,12 +10,45 @@ env: CARGO_TERM_COLOR: always jobs: - build: - - runs-on: ubuntu-latest + test: + name: Test on ${{ matrix.target }} + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + include: + - os: ubuntu-latest + target: x86_64-unknown-linux-gnu + - os: ubuntu-latest + target: aarch64-unknown-linux-gnu steps: - name: "Checkout" uses: actions/checkout@v4 - - name: "Build with Cargo" - run: cargo build --verbose + + - name: "Setup Rust toolchain" + uses: actions-rust-lang/setup-rust-toolchain@v1 + with: + target: ${{ matrix.target }} + + - name: "Install cross-compilation tools" + if: matrix.target == 'aarch64-unknown-linux-gnu' + run: | + sudo apt-get update + sudo apt-get install -y gcc-aarch64-linux-gnu + + - name: "Configure linker for aarch64" + if: matrix.target == 'aarch64-unknown-linux-gnu' + run: | + mkdir -p .cargo + cat >> .cargo/config.toml << EOF + [target.aarch64-unknown-linux-gnu] + linker = "aarch64-linux-gnu-gcc" + EOF + + - name: "Build" + run: cargo build --verbose --target ${{ matrix.target }} + + - name: "Run tests" + if: matrix.target == 'x86_64-unknown-linux-gnu' + run: cargo test --verbose --target ${{ matrix.target }}