name: keccak on: pull_request: paths: - ".github/workflows/keccak.yml" - "keccak/**" - "Cargo.*" push: branches: master defaults: run: working-directory: keccak env: RUSTFLAGS: "-Dwarnings" CARGO_INCREMENTAL: 0 jobs: set-msrv: uses: RustCrypto/actions/.github/workflows/set-msrv.yml@master with: msrv: 1.85.0 build: needs: set-msrv runs-on: ubuntu-latest strategy: matrix: rust: - ${{needs.set-msrv.outputs.msrv}} - stable target: - thumbv7em-none-eabi - wasm32-unknown-unknown steps: - uses: actions/checkout@v4 - uses: RustCrypto/actions/cargo-cache@master - uses: dtolnay/rust-toolchain@master with: toolchain: ${{ matrix.rust }} targets: ${{ matrix.target }} - run: cargo build --no-default-features --target ${{ matrix.target }} minimal-versions: uses: RustCrypto/actions/.github/workflows/minimal-versions.yml@master with: working-directory: ${{ github.workflow }} stable-cmd: cargo hack test --release --feature-powerset --skip simd # `simd` requires nightly test: needs: set-msrv runs-on: ubuntu-latest strategy: matrix: rust: - ${{needs.set-msrv.outputs.msrv}} - stable steps: - uses: actions/checkout@v4 - uses: RustCrypto/actions/cargo-cache@master - uses: dtolnay/rust-toolchain@master with: toolchain: ${{ matrix.rust }} - run: cargo check --no-default-features - run: cargo check - run: cargo check --features no_unroll - run: cargo test --no-default-features - run: cargo test - run: cargo test --features no_unroll test-simd: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: RustCrypto/actions/cargo-cache@master - uses: dtolnay/rust-toolchain@master with: toolchain: nightly - run: cargo check --features simd - run: cargo test --features simd miri: runs-on: ubuntu-latest env: MIRIFLAGS: "-Zmiri-symbolic-alignment-check -Zmiri-strict-provenance" strategy: matrix: target: - x86_64-unknown-linux-gnu - s390x-unknown-linux-gnu steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@master with: toolchain: nightly - name: Install Miri run: | rustup component add miri cargo miri setup - name: Test with Miri run: | cargo miri test --target ${{ matrix.target }} --no-default-features cargo miri test --target ${{ matrix.target }} cargo miri test --target ${{ matrix.target }} --features no_unroll cargo miri test --target ${{ matrix.target }} --features simd aarch64-sha3: needs: set-msrv runs-on: ubuntu-latest defaults: run: # Cross mounts only current package, i.e. by default it ignores workspace's Cargo.toml working-directory: . strategy: matrix: rust: - ${{needs.set-msrv.outputs.msrv}} - stable steps: - uses: actions/checkout@v4 - uses: RustCrypto/actions/cargo-cache@master - uses: dtolnay/rust-toolchain@master with: toolchain: ${{ matrix.rust }} targets: aarch64-unknown-linux-gnu - name: Install pre-compiled cross run: | # We need a recent version for RUSTFLAGS to work. wget -O /tmp/binaries.tar.gz https://github.com/cross-rs/cross/releases/download/v0.2.4/cross-x86_64-unknown-linux-gnu.tar.gz tar -C /tmp -xzf /tmp/binaries.tar.gz mv /tmp/cross ~/.cargo/bin shell: bash - name: cross test run: | cd keccak # Cross doesn't enable `sha3` by default, but QEMU supports it. export RUSTFLAGS="-C target-feature=+sha3" cross test --target aarch64-unknown-linux-gnu --no-default-features