From 6eb3bc4af04cb77ba80fd2903ddbc6a68c85b594 Mon Sep 17 00:00:00 2001 From: Justin Smith Date: Wed, 20 Nov 2024 18:20:10 -0500 Subject: [PATCH] Test build w/ spaces in paths --- .github/workflows/compilers.yml | 154 ++++++++++++++++++++++++++ .github/workflows/tests.yml | 186 +++++++++----------------------- 2 files changed, 207 insertions(+), 133 deletions(-) create mode 100644 .github/workflows/compilers.yml diff --git a/.github/workflows/compilers.yml b/.github/workflows/compilers.yml new file mode 100644 index 00000000000..0c244d52f74 --- /dev/null +++ b/.github/workflows/compilers.yml @@ -0,0 +1,154 @@ +name: compilers + +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-2004-gcc: + if: github.repository_owner == 'aws' + name: GCC ${{ matrix.gcc_version }} - CMake ${{ matrix.cmake }} - FIPS ${{ matrix.fips }} + runs-on: ubuntu-20.04 + env: + AWS_LC_SYS_CMAKE_BUILDER: ${{ matrix.cmake }} + strategy: + fail-fast: false + matrix: + cmake: [ '0', '1' ] + gcc_version: [ '7', '8' ] + fips: [ '0', '1' ] + steps: + - uses: actions/checkout@v4 + with: + submodules: 'recursive' + - uses: dtolnay/rust-toolchain@master + id: toolchain + with: + toolchain: stable + - name: Set up GCC + uses: egor-tensin/setup-gcc@v1.3 + with: + version: ${{ matrix.gcc_version }} + platform: x64 + - if: matrix.fips == '1' + uses: actions/setup-go@v4 + with: + go-version: '>=1.18' + - name: Run cargo test (debug) + run: cargo test -p aws-lc-rs --all-targets --no-default-features --features ${{ (matrix.fips == '0' && 'unstable,aws-lc-sys') || 'unstable,fips' }} + - name: Run cargo test (release) + run: cargo test -p aws-lc-rs --release --all-targets --no-default-features --features ${{ (matrix.fips == '0' && 'unstable,aws-lc-sys') || 'unstable,fips' }} + # The steps below verify that we're successfully using `-ffile-prefix-map` + # to remove build environment paths from the resulting library. + - if: ${{ matrix.gcc_version == '8' }} + name: Verify paths found in debug build + run: | + DEBUG_LIBCRYPTO=$(find ./target/debug -name "libaws_lc_*_crypto.a") + if strings ${DEBUG_LIBCRYPTO} | grep runner; then + exit 0; # SUCCESS + else + exit 1; # FAIL - we expected to find "runner" (i.e., a path) + fi + # TODO: Due to the nature of the FIPS build (e.g., its dynamic generation of + # assembly files and its custom compilation commands within CMake), not all + # source paths are stripped from the resulting binary. + - if: ${{ matrix.gcc_version == '8' && matrix.fips == '0' }} + name: Verify paths not found in release build + run: | + RELEASE_LIBCRYPTO=$(find ./target/release -name "libaws_lc_*_crypto.a") + if strings ${RELEASE_LIBCRYPTO} | grep runner; then + exit 1; # FAIL - we did not expect to find "runner" (i.e., a path) + else + exit 0; # SUCCESS + fi + + aws-lc-rs-1804-gcc: + if: github.repository_owner == 'aws' + name: GCC ${{ matrix.gcc_version }} - CMake ${{ matrix.cmake }} - FIPS ${{ matrix.fips }} + runs-on: ubuntu-20.04 + container: + image: ubuntu:18.04 + env: + AWS_LC_SYS_CMAKE_BUILDER: ${{ matrix.cmake }} + strategy: + fail-fast: false + matrix: + cmake: [ '0', '1' ] + gcc_version: [ '4.8', '5', '6' ] + fips: [ '0', '1' ] + steps: + - run: | + apt-get update + apt-get install -y ca-certificates + apt-get install -y cmake curl sudo + apt-get install -y --no-install-recommends gpg-agent software-properties-common + apt-add-repository --yes ppa:git-core/ppa + add-apt-repository --yes ppa:longsleep/golang-backports + apt-get update + apt-get install -y build-essential git golang-go + curl -L -O -J https://github.com/PowerShell/PowerShell/releases/download/v7.2.23/powershell_7.2.23-1.deb_amd64.deb + dpkg -i powershell_7.2.23-1.deb_amd64.deb + apt-get install -f + rm powershell_7.2.23-1.deb_amd64.deb + - name: Checkout + run: | + git config --global --add safe.directory '*' + git clone --recursive ${{ github.server_url }}/${{ github.repository }}.git . + git fetch origin ${{ github.sha }} + git checkout --recurse-submodules -b ci-job ${{ github.sha }} + - uses: dtolnay/rust-toolchain@master + id: toolchain + with: + toolchain: stable + - name: Set up GCC + uses: egor-tensin/setup-gcc@v1.3 + with: + version: ${{ matrix.gcc_version }} + platform: x64 + - name: Run cargo test (debug) + run: cargo test -p aws-lc-rs --all-targets --no-default-features --features ${{ (matrix.fips == '0' && 'unstable,aws-lc-sys') || 'unstable,fips' }} + - name: Run cargo test (release) + run: cargo test -p aws-lc-rs --release --all-targets --no-default-features --features ${{ (matrix.fips == '0' && 'unstable,aws-lc-sys') || 'unstable,fips' }} + + aws-lc-rs-c-std-test: + if: github.repository_owner == 'aws' + name: C-std ${{ matrix.os }} - ${{ matrix.c_std }} - Force CMake ${{ matrix.cmake }} + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + rust: [ stable ] + os: [ ubuntu-latest, macos-13, macos-14-xlarge, windows-latest ] + c_std: [ "11", "99" ] + cmake: [ '0', '1' ] + steps: + - uses: actions/checkout@v4 + with: + submodules: 'recursive' + - uses: dtolnay/rust-toolchain@master + id: toolchain + with: + toolchain: stable + - run: | + echo 'export AWS_LC_SYS_CMAKE_BUILDER=${{ matrix.cmake }}' >> "$GITHUB_ENV" + - name: Run cargo test + working-directory: ./aws-lc-rs + env: + AWS_LC_SYS_PREBUILT_NASM: 1 + AWS_LC_SYS_C_STD: ${{ matrix.c_std }} + run: cargo test --all-targets --features unstable diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 6a2e25b0bed..9f05db16a09 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -53,139 +53,6 @@ jobs: working-directory: ./aws-lc-rs-testing run: cargo test --all-targets - aws-lc-rs-1804-gcc: - if: github.repository_owner == 'aws' - name: GCC ${{ matrix.gcc_version }} - CMake ${{ matrix.cmake }} - FIPS ${{ matrix.fips }} - runs-on: ubuntu-20.04 - container: - image: ubuntu:18.04 - env: - AWS_LC_SYS_CMAKE_BUILDER: ${{ matrix.cmake }} - strategy: - fail-fast: false - matrix: - cmake: [ '0', '1' ] - gcc_version: [ '4.8', '5', '6' ] - fips: [ '0', '1' ] - steps: - - run: | - apt-get update - apt-get install -y ca-certificates - apt-get install -y cmake curl sudo - apt-get install -y --no-install-recommends gpg-agent software-properties-common - apt-add-repository --yes ppa:git-core/ppa - add-apt-repository --yes ppa:longsleep/golang-backports - apt-get update - apt-get install -y build-essential git golang-go - curl -L -O -J https://github.com/PowerShell/PowerShell/releases/download/v7.2.23/powershell_7.2.23-1.deb_amd64.deb - dpkg -i powershell_7.2.23-1.deb_amd64.deb - apt-get install -f - rm powershell_7.2.23-1.deb_amd64.deb - - name: Checkout - run: | - git config --global --add safe.directory '*' - git clone --recursive ${{ github.server_url }}/${{ github.repository }}.git . - git fetch origin ${{ github.sha }} - git checkout --recurse-submodules -b ci-job ${{ github.sha }} - - uses: dtolnay/rust-toolchain@master - id: toolchain - with: - toolchain: stable - - name: Set up GCC - uses: egor-tensin/setup-gcc@v1.3 - with: - version: ${{ matrix.gcc_version }} - platform: x64 - - name: Run cargo test (debug) - run: cargo test -p aws-lc-rs --all-targets --no-default-features --features ${{ (matrix.fips == '0' && 'unstable,aws-lc-sys') || 'unstable,fips' }} - - name: Run cargo test (release) - run: cargo test -p aws-lc-rs --release --all-targets --no-default-features --features ${{ (matrix.fips == '0' && 'unstable,aws-lc-sys') || 'unstable,fips' }} - - aws-lc-rs-2004-gcc: - if: github.repository_owner == 'aws' - name: GCC ${{ matrix.gcc_version }} - CMake ${{ matrix.cmake }} - FIPS ${{ matrix.fips }} - runs-on: ubuntu-20.04 - env: - AWS_LC_SYS_CMAKE_BUILDER: ${{ matrix.cmake }} - strategy: - fail-fast: false - matrix: - cmake: [ '0', '1' ] - gcc_version: [ '7', '8' ] - fips: [ '0', '1' ] - steps: - - uses: actions/checkout@v4 - with: - submodules: 'recursive' - - uses: dtolnay/rust-toolchain@master - id: toolchain - with: - toolchain: stable - - name: Set up GCC - uses: egor-tensin/setup-gcc@v1.3 - with: - version: ${{ matrix.gcc_version }} - platform: x64 - - if: matrix.fips == '1' - uses: actions/setup-go@v4 - with: - go-version: '>=1.18' - - name: Run cargo test (debug) - run: cargo test -p aws-lc-rs --all-targets --no-default-features --features ${{ (matrix.fips == '0' && 'unstable,aws-lc-sys') || 'unstable,fips' }} - - name: Run cargo test (release) - run: cargo test -p aws-lc-rs --release --all-targets --no-default-features --features ${{ (matrix.fips == '0' && 'unstable,aws-lc-sys') || 'unstable,fips' }} - # The steps below verify that we're successfully using `-ffile-prefix-map` - # to remove build environment paths from the resulting library. - - if: ${{ matrix.gcc_version == '8' }} - name: Verify paths found in debug build - run: | - DEBUG_LIBCRYPTO=$(find ./target/debug -name "libaws_lc_*_crypto.a") - if strings ${DEBUG_LIBCRYPTO} | grep runner; then - exit 0; # SUCCESS - else - exit 1; # FAIL - we expected to find "runner" (i.e., a path) - fi - # TODO: Due to the nature of the FIPS build (e.g., its dynamic generation of - # assembly files and its custom compilation commands within CMake), not all - # source paths are stripped from the resulting binary. - - if: ${{ matrix.gcc_version == '8' && matrix.fips == '0' }} - name: Verify paths not found in release build - run: | - RELEASE_LIBCRYPTO=$(find ./target/release -name "libaws_lc_*_crypto.a") - if strings ${RELEASE_LIBCRYPTO} | grep runner; then - exit 1; # FAIL - we did not expect to find "runner" (i.e., a path) - else - exit 0; # SUCCESS - fi - - aws-lc-rs-c-std-test: - if: github.repository_owner == 'aws' - name: C-std ${{ matrix.os }} - ${{ matrix.c_std }} - Force CMake ${{ matrix.cmake }} - runs-on: ${{ matrix.os }} - strategy: - fail-fast: false - matrix: - rust: [ stable ] - os: [ ubuntu-latest, macos-13, macos-14-xlarge, windows-latest ] - c_std: [ "11", "99" ] - cmake: [ '0', '1' ] - steps: - - uses: actions/checkout@v4 - with: - submodules: 'recursive' - - uses: dtolnay/rust-toolchain@master - id: toolchain - with: - toolchain: stable - - run: | - echo 'export AWS_LC_SYS_CMAKE_BUILDER=${{ matrix.cmake }}' >> "$GITHUB_ENV" - - name: Run cargo test - working-directory: ./aws-lc-rs - env: - AWS_LC_SYS_PREBUILT_NASM: 1 - AWS_LC_SYS_C_STD: ${{ matrix.c_std }} - run: cargo test --all-targets --features unstable - bindgen-test: if: github.repository_owner == 'aws' name: aws-lc-rs bindgen-tests @@ -624,3 +491,56 @@ jobs: - name: aws-lc-fips-sys bindgen build working-directory: ./aws-lc-fips-sys run: cargo test --features bindgen + + source-path-has-spaces: + if: github.repository_owner == 'aws' + name: + "Spaces in path - ${{ matrix.os }} - FIPS: ${{ matrix.fips }}" + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [ ubuntu-latest, macos-13, macos-14-xlarge, windows-latest ] + fips: [ 0, 1 ] + steps: + - uses: actions/checkout@v4 + with: + submodules: 'recursive' + path: "path has spaces/aws-lc-rs" + - if: ${{ matrix.os == 'windows-latest' }} + uses: ilammy/setup-nasm@v1 + - uses: dtolnay/rust-toolchain@stable + - uses: seanmiddleditch/gha-setup-ninja@v5 + - uses: actions/setup-go@v4 + with: + go-version: '>=1.18' + - name: Run cargo test + working-directory: "path has spaces/aws-lc-rs" + run: cargo test --tests -p aws-lc-rs --no-default-features --features ${{ (matrix.fips == 1 && 'fips') || 'aws-lc-sys' }} + + cmake-source-path-has-spaces: + if: github.repository_owner == 'aws' + name: + "Spaces in path (CMake) - ${{ matrix.os }}" + runs-on: ${{ matrix.os }} + env: + AWS_LC_SYS_CMAKE_BUILDER: 1 + strategy: + fail-fast: false + matrix: + os: [ ubuntu-latest, macos-13, macos-14-xlarge ] + steps: + - uses: actions/checkout@v4 + with: + submodules: 'recursive' + path: "path has spaces/aws-lc-rs" + - if: ${{ matrix.os == 'windows-latest' }} + uses: ilammy/setup-nasm@v1 + - uses: dtolnay/rust-toolchain@stable + - uses: seanmiddleditch/gha-setup-ninja@v5 + - uses: actions/setup-go@v4 + with: + go-version: '>=1.18' + - name: Run cargo test + working-directory: "path has spaces/aws-lc-rs" + run: cargo test --tests -p aws-lc-rs --features bindgen