# Copyright 2021-2023 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the Apache License 2.0 (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy # in the file LICENSE in the source distribution or at # https://www.openssl.org/source/license.html name: Compiler Zoo CI on: [push] permissions: contents: read jobs: compiler: strategy: fail-fast: false matrix: zoo: [ { cc: gcc-7, distro: ubuntu-20.04 }, { cc: gcc-8, distro: ubuntu-20.04 }, { cc: gcc-9, distro: ubuntu-20.04 }, { cc: gcc-10, distro: ubuntu-20.04 }, { cc: gcc-11, distro: ubuntu-22.04 }, { cc: gcc-12, distro: ubuntu-22.04 }, { cc: gcc-13, distro: ubuntu-22.04, gcc-ppa-name: ubuntu-toolchain-r/test }, { cc: clang-6.0, distro: ubuntu-20.04 }, { cc: clang-7, distro: ubuntu-20.04 }, { cc: clang-8, distro: ubuntu-20.04 }, { cc: clang-9, distro: ubuntu-20.04 }, { cc: clang-10, distro: ubuntu-20.04 }, { cc: clang-11, distro: ubuntu-20.04 }, { cc: clang-12, distro: ubuntu-20.04 }, { cc: clang-13, distro: ubuntu-22.04 }, { cc: clang-14, distro: ubuntu-22.04 }, { cc: clang-15, distro: ubuntu-22.04, llvm-ppa-name: jammy }, { cc: clang-16, distro: ubuntu-22.04, llvm-ppa-name: jammy }, { cc: clang-17, distro: ubuntu-22.04, llvm-ppa-name: jammy } ] # We set per-compiler now to allow testing with both older and newer sets # Often, the full range of oldest->newest compilers we want aren't available # in a single version of Ubuntu. runs-on: ${{ matrix.zoo.distro }} steps: - name: install packages run: | gcc_ppa_name="${{ matrix.zoo.gcc-ppa-name }}" llvm_ppa_name="${{ matrix.zoo.llvm-ppa-name }}" # In the Matrix above: # - we set gcc-ppc-name if the GCC version isn't part of the Ubuntu version we're using (see https://launchpad.net/~ubuntu-toolchain-r/+archive/ubuntu/test). # - we set llvm-ppa-name if an LLVM version isn't part of the Ubuntu version we're using (see https://apt.llvm.org/). # This is especially needed because even new Ubuntu LTSes aren't available # until a while after release on Github Actions. if [[ -n ${gcc_ppa_name} ]] ; then sudo add-apt-repository ppa:ubuntu-toolchain-r/test sudo apt-get update elif [[ -n ${llvm_ppa_name} ]] ; then wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key |\ gpg --dearmor |\ sudo tee /usr/share/keyrings/llvm-snapshot.gpg.key > /dev/null clang_version="${{ matrix.zoo.cc }}" clang_version="${clang_version/clang-}" echo "deb [signed-by=/usr/share/keyrings/llvm-snapshot.gpg.key] http://apt.llvm.org/${{ matrix.zoo.llvm-ppa-name }}/ llvm-toolchain-${{ matrix.zoo.llvm-ppa-name }}-${clang_version} main" \ | sudo tee /etc/apt/sources.list.d/llvm.list echo "deb-src [signed-by=/usr/share/keyrings/llvm-snapshot.gpg.key] http://apt.llvm.org/${{ matrix.zoo.llvm-ppa-name }}/ llvm-toolchain-${{ matrix.zoo.llvm-ppa-name }}-${clang_version} main" \ | sudo tee -a /etc/apt/sources.list.d/llvm.list cat /etc/apt/sources.list.d/llvm.list fi sudo apt-get update sudo apt-get -y install ${{ matrix.zoo.cc }} - uses: actions/checkout@v4 - name: checkout fuzz/corpora submodule run: git submodule update --init --depth 1 fuzz/corpora - name: config run: | CC=${{ matrix.zoo.cc }} ./config --banner=Configured no-shared \ -Wall -Werror enable-fips --strict-warnings - name: config dump run: ./configdata.pm --dump - name: make run: make -s -j4 - name: get cpu info run: | cat /proc/cpuinfo ./util/opensslwrap.sh version -c - name: make test run: make test HARNESS_JOBS=${HARNESS_JOBS:-4}