Handle spaces in source/build paths #1148
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: cross | |
on: | |
push: | |
branches: | |
- '*' | |
- '!generate/aws-lc-*' | |
pull_request: | |
branches: | |
- '*' | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref_name }} | |
cancel-in-progress: true | |
env: | |
RUST_BACKTRACE: 1 | |
# We can pin the version if nightly is too unstable. | |
# Otherwise, we test against the latest version. | |
RUST_NIGHTLY_TOOLCHAIN: nightly | |
jobs: | |
aws-lc-rs-cross-test: | |
if: github.repository_owner == 'aws' | |
name: cross tests ${{ matrix.target }} | |
runs-on: ubuntu-22.04 | |
strategy: | |
fail-fast: false | |
matrix: | |
target: | |
- aarch64-linux-android | |
- aarch64-unknown-linux-gnu | |
- aarch64-unknown-linux-musl | |
- arm-linux-androideabi | |
- arm-unknown-linux-gnueabihf | |
- armv7-linux-androideabi | |
- armv7-unknown-linux-gnueabihf | |
- i686-unknown-linux-gnu | |
- powerpc-unknown-linux-gnu | |
- powerpc64-unknown-linux-gnu | |
- powerpc64le-unknown-linux-gnu | |
- riscv64gc-unknown-linux-gnu | |
- s390x-unknown-linux-gnu | |
- x86_64-pc-windows-gnu | |
- x86_64-unknown-linux-musl | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
submodules: 'recursive' | |
- uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: 'stable' | |
- name: Install cross | |
run: cargo install cross --git https://github.com/cross-rs/cross | |
- uses: dtolnay/rust-toolchain@master | |
id: toolchain | |
with: | |
toolchain: 'stable' | |
target: ${{ matrix.target }} | |
- name: Set Rust toolchain override | |
run: rustup override set ${{ steps.toolchain.outputs.name }} | |
# The flag below is set to avoid the following error with GCC 11.4.0 on the riscv64 platform: | |
# /home/runner/work/aws-lc-rs/aws-lc-rs/aws-lc-sys/aws-lc/crypto/pem/pem_lib.c:707:11: error: 'strncmp' of strings of length 1 and 9 and bound of 9 evaluates to nonzero [-Werror=string-compare] | |
# 707 | if (strncmp(buf, "-----END ", 9) == 0) { | |
# | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
- if: ${{ matrix.target == 'riscv64gc-unknown-linux-gnu' }} | |
run: | | |
echo 'AWS_LC_SYS_CFLAGS="-Wno-string-compare"' >> "$GITHUB_ENV" | |
- name: Cross-compilation (build debug) | |
run: cross build -p aws-lc-rs --features unstable --target ${{ matrix.target }} | |
- name: Cross-compilation (test release) | |
run: cross test -p aws-lc-rs --release --features unstable --target ${{ matrix.target }} | |
aws-lc-rs-cross-0_2_5-test: | |
if: github.repository_owner == 'aws' | |
name: cross tests ${{ matrix.target }} | |
runs-on: ubuntu-latest | |
env: | |
CROSS_CONFIG: './Cross.toml.x86_64-unknown-linux-gnu' | |
strategy: | |
fail-fast: false | |
matrix: | |
target: | |
- x86_64-unknown-linux-gnu | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
submodules: 'recursive' | |
- uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: 'stable' | |
- name: Install cross | |
run: cargo install cross --locked --version 0.2.5 | |
- uses: dtolnay/rust-toolchain@master | |
id: toolchain | |
with: | |
toolchain: 'stable' | |
target: ${{ matrix.target }} | |
- name: Set Rust toolchain override | |
run: rustup override set ${{ steps.toolchain.outputs.name }} | |
- name: Cross-compilation (build debug) | |
run: cross build -p aws-lc-rs --features unstable --target ${{ matrix.target }} | |
- name: Cross-compilation (test release) | |
run: cross test -p aws-lc-rs --release --features unstable --target ${{ matrix.target }} | |
aws-lc-rs-ios-aarch64: | |
if: github.repository_owner == 'aws' | |
name: iOS aarch64 cross-platform build | |
runs-on: macos-14-xlarge | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
submodules: 'recursive' | |
- run: | | |
brew install llvm | |
echo 'export PATH="/opt/homebrew/opt/llvm/bin:$PATH"' | |
echo 'export LIBCLANG_PATH=/opt/homebrew/opt/llvm' >> "$GITHUB_ENV" | |
- uses: dtolnay/rust-toolchain@master | |
id: toolchain | |
with: | |
toolchain: stable | |
target: aarch64-apple-ios-sim | |
- name: Install bash | |
run: brew install bash | |
- name: iOS Simulator Runner | |
run: ./scripts/ci/ios-simulator-runner.sh | |
aws-lc-rs-ios-x86_64: | |
if: github.repository_owner == 'aws' | |
name: iOS x86-64 cross-platform build | |
runs-on: macos-14-xlarge | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
submodules: 'recursive' | |
- run: | | |
brew install llvm | |
echo 'export PATH="/opt/homebrew/opt/llvm/bin:$PATH"' | |
echo 'export LIBCLANG_PATH=/opt/homebrew/opt/llvm' >> "$GITHUB_ENV" | |
- uses: dtolnay/rust-toolchain@master | |
id: toolchain | |
with: | |
toolchain: stable | |
target: x86_64-apple-ios | |
- name: Debug build for `x86_64-apple-ios` | |
run: cargo build -p aws-lc-rs --target x86_64-apple-ios --features bindgen | |
- name: Release build for `x86_64-apple-ios` | |
run: cargo build -p aws-lc-rs --release --target x86_64-apple-ios --features bindgen | |
cargo-xwin: | |
if: github.repository_owner == 'aws' | |
runs-on: ubuntu-latest | |
steps: | |
- name: Install build dependencies | |
# cargo-xwin apparently require ninja-build | |
run: | | |
sudo apt-get update && sudo apt-get install --assume-yes nasm clang ninja-build llvm | |
- uses: actions/checkout@v3 | |
with: | |
submodules: 'recursive' | |
- uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: stable | |
target: x86_64-pc-windows-msvc | |
- uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: stable | |
target: aarch64-pc-windows-msvc | |
- name: Install cargo-xwin and bindgen-cli | |
run: cargo install --locked cargo-xwin bindgen-cli | |
- name: cargo xwin build for `x86_64-pc-windows-msvc` | |
run: cargo xwin build -p aws-lc-rs --release --all-targets --target x86_64-pc-windows-msvc | |
- name: cargo xwin build for `aarch64-pc-windows-msvc` | |
run: cargo xwin build -p aws-lc-rs --release --all-targets --target aarch64-pc-windows-msvc | |
aws-lc-rs-windows-gnu: | |
if: github.repository_owner == 'aws' | |
name: ${{ matrix.target }} | |
runs-on: windows-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
target: | |
- 'x86_64-pc-windows-gnu' | |
# TODO: Fails in GitHub CI. Appears to be related to bindgen. | |
# .../base.h:61:10: fatal error: 'stdlib.h' file not found | |
# - 'i686-pc-windows-gnu' | |
steps: | |
- uses: ilammy/setup-nasm@v1 | |
- uses: actions/checkout@v4 | |
with: | |
submodules: 'recursive' | |
- uses: dtolnay/rust-toolchain@master | |
id: toolchain | |
with: | |
toolchain: stable | |
target: ${{ matrix.target }} | |
- name: Debug Test on `${{ matrix.target }}` | |
run: cargo test -p aws-lc-rs --target ${{ matrix.target }} --features bindgen | |
- name: Release test on `${{ matrix.target }}` | |
run: cargo test -p aws-lc-rs --release --target ${{ matrix.target }} --features bindgen | |
aws-lc-rs-windows-msvc: | |
if: ${{ github.repository_owner == 'aws' }} | |
name: ${{ matrix.target }} - ${{ (matrix.crt_static == '1' && 'crt-static and /WX') || '/WX' }} | |
runs-on: windows-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
target: | |
- 'x86_64-pc-windows-msvc' | |
- 'i686-pc-windows-msvc' | |
- 'aarch64-pc-windows-msvc' | |
crt_static: | |
- '0' | |
- '1' | |
steps: | |
- name: Install NASM | |
if: ${{ matrix.target == 'x86_64-pc-windows-msvc' || matrix.target == 'i686-pc-windows-msvc' }} | |
uses: ilammy/setup-nasm@v1 | |
- uses: actions/checkout@v4 | |
with: | |
submodules: 'recursive' | |
- uses: dtolnay/rust-toolchain@master | |
id: toolchain | |
with: | |
toolchain: stable | |
target: ${{ matrix.target }} | |
- name: Set ACTION_CARGO | |
run: | | |
if ('${{ matrix.target }}' -like '*aarch64*') { | |
echo "ACTION_CARGO=build" | Out-File -FilePath $env:GITHUB_ENV -Append | |
} else { | |
echo "ACTION_CARGO=test" | Out-File -FilePath $env:GITHUB_ENV -Append | |
} | |
- name: Set RUSTFLAGS | |
run: | | |
if ('${{ matrix.crt_static }}' -eq '1') { | |
echo "RUSTFLAGS=-Clink-arg=/WX -Ctarget-feature=+crt-static" | Out-File -FilePath $env:GITHUB_ENV -Append | |
} else { | |
echo "RUSTFLAGS=-Clink-arg=/WX" | Out-File -FilePath $env:GITHUB_ENV -Append | |
} | |
- name: Debug build | |
run: cargo ${{ env.ACTION_CARGO }} -p aws-lc-rs --all-targets --target ${{ matrix.target }} --features bindgen | |
- name: Release Build for ${{ matrix.target }} | |
run: cargo ${{ env.ACTION_CARGO }} --release -p aws-lc-rs --all-targets --target ${{ matrix.target }} | |
freebsd: | |
if: github.repository_owner == 'aws' | |
name: aws-lc-rs freebsd test | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
target: [ 13.4, 14.1 ] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: 'recursive' | |
- name: Prepare VM | |
uses: vmactions/freebsd-vm@v1 | |
with: | |
release: ${{ matrix.target }} | |
usesh: true | |
copyback: false | |
prepare: | | |
pkg install -y git gmake bash sudo cmake-core llvm-devel-lite curl go | |
run: | | |
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y | |
. "$HOME/.cargo/env" | |
cargo test -p aws-lc-rs | |
cargo test -p aws-lc-rs --no-default-features --features=fips | |
cross-x86_64-pc-windows-gnu: | |
if: github.repository_owner == 'aws' | |
name: cross (prebuilt nasm) - x86_64-pc-windows-gnu | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: 'recursive' | |
- uses: dtolnay/rust-toolchain@stable | |
id: toolchain | |
with: | |
toolchain: 'stable' | |
target: x86_64-pc-windows-gnu | |
- name: Install mingw | |
run: sudo apt-get update && sudo apt-get install --assume-yes mingw-w64 | |
- name: Run cargo test | |
run: cargo build -p aws-lc-rs --features prebuilt-nasm --target x86_64-pc-windows-gnu |