From c8a982d811564a7f754cecef16f1fd256094bbc1 Mon Sep 17 00:00:00 2001 From: Justin Smith Date: Mon, 23 Sep 2024 12:19:31 -0400 Subject: [PATCH] Testing w/ older GCC versions --- .github/workflows/tests.yml | 93 +++++++++++++++++++++++++++++++++++-- 1 file changed, 90 insertions(+), 3 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 84ec179587a..6b87c987864 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -53,9 +53,91 @@ 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 }} - Force CMake ${{ matrix.cmake }} + 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' ] + steps: + - run: | + apt-get update + apt-get install -y build-essential git cmake + - name: Checkout + run: | + git clone --recursive ${{ github.server_url }}/${{ github.repository }}.git . + git checkout ${{ 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 --debug --all-targets --features unstable + - name: Run cargo test (release) + run: cargo test -p aws-lc-rs --release --all-targets --features unstable + + aws-lc-rs-2004-gcc: + if: github.repository_owner == 'aws' + name: GCC ${{ matrix.gcc_version }} - Force CMake ${{ matrix.cmake }} + 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' ] + 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 + - name: Run cargo test (debug) + run: cargo test -p aws-lc-rs --debug --all-targets --features unstable + - name: Run cargo test (release) + run: cargo test -p aws-lc-rs --release --all-targets --features unstable + - 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 + - if: ${{ matrix.gcc_version == '8' }} + 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 test ${{ matrix.os }} - ${{ matrix.c_std }} + name: C-std ${{ matrix.os }} - ${{ matrix.c_std }} - Force CMake ${{ matrix.cmake }} runs-on: ${{ matrix.os }} strategy: fail-fast: false @@ -63,6 +145,7 @@ jobs: rust: [ stable ] os: [ ubuntu-latest, macos-12, macos-13-xlarge, windows-latest ] c_std: [ "11", "99" ] + cmake: [ '0', '1' ] steps: - uses: actions/checkout@v4 with: @@ -71,6 +154,10 @@ jobs: id: toolchain with: toolchain: stable + - if: ${{ matrix.os != 'windows-latest' }} + # Windows currently must use CMake + run: | + echo 'export AWS_LC_SYS_CMAKE_BUILDER=${{ matrix.cmake }}' >> "$GITHUB_ENV" - name: Run cargo test # Windows build currently fails when forcing C11: # ``` @@ -104,12 +191,12 @@ jobs: - if: ${{ matrix.os == 'macos-13-xlarge' }} run: | brew install llvm - echo 'export PATH="/opt/homebrew/opt/llvm/bin:$PATH"' + echo 'export PATH="/opt/homebrew/opt/llvm/bin:$PATH"' >> "$GITHUB_ENV" echo 'export LIBCLANG_PATH=/opt/homebrew/opt/llvm' >> "$GITHUB_ENV" - if: ${{ matrix.os == 'macos-12' }} run: | brew install llvm - echo 'export PATH="/usr/local/opt/llvm/bin:$PATH"' + echo 'export PATH="/usr/local/opt/llvm/bin:$PATH"' >> "$GITHUB_ENV" echo 'export LIBCLANG_PATH=/usr/local/opt/llvm' >> "$GITHUB_ENV" - uses: dtolnay/rust-toolchain@master id: toolchain