name: Rust on: push: branches: [ "main" ] pull_request: branches: [ "main" ] env: CARGO_TERM_COLOR: always # Make sure CI fails on all warnings, including Clippy lints RUSTFLAGS: "-Dwarnings" jobs: clippy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Update repos run: sudo apt-get update -qq - name: Install toolchain run: sudo apt-get install -qy cargo rust-clippy liblzma-dev gcc make pkgconf - name: Run Clippy run: cargo clippy - name: generate bindings run: ./generate-binding.sh - name: check that generated files did not change run: output=$(git status --porcelain) && [ -z "$output" ] build-stable: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Update repos run: sudo apt-get update -qq - name: Install toolchain run: sudo apt-get install -qy cargo rust-clippy liblzma-dev gcc make pkgconf - name: build run: cargo build - name: build example -- glibc release run: cd example && make clean && make TARGET=aarch64-unknown-linux-gnu PROFILE=release - name: build example -- glibc debug run: cd example && make clean && make TARGET=aarch64-unknown-linux-gnu PROFILE=debug build-musl: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Update repos run: sudo apt-get update -qq - name: Install toolchain run: sudo apt-get install -qy liblzma-dev gcc make pkgconf musl-dev musl-tools rustup - name: install musl rust target run: rustup toolchain install aarch64-unknown-linux-musl --no-self-update - name: build example -- musl release run: cd example && make clean && make TARGET=aarch64-unknown-linux-musl PROFILE=release MUSL=1 CARGO="rustup run stable cargo" - name: build example -- musl debug run: cd example && make clean && make TARGET=aarch64-unknown-linux-musl PROFILE=debug MUSL=1 CARGO="rustup run stable cargo" build-size: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Update repos run: sudo apt-get update -qq - name: Install toolchain run: sudo apt-get install -qy liblzma-dev gcc make pkgconf musl-dev musl-tools rustup - name: install rust nightly run: rustup default nightly - name: install musl rust target run: rustup toolchain install aarch64-unknown-linux-musl --no-self-update - name: install gnu rust target run: rustup toolchain install aarch64-unknown-linux-gnu --no-self-update - name: build example -- glibc size-optimized run: cd example && make clean && make TARGET=aarch64-unknown-linux-gnu PROFILE=size-optimized CARGO="rustup run nightly cargo" - name: build example -- musl size-optimized run: cd example && make clean && make TARGET=aarch64-unknown-linux-musl PROFILE=size-optimized MUSL=1 LTO=1 CARGO="rustup run nightly cargo"