name: CI Pkgcheck on: [push, pull_request] jobs: ci-pkgcheck: name: ${{ matrix.name }} runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: include: - name: Ubuntu GCC os: ubuntu-latest compiler: gcc cxx-compiler: g++ - name: Ubuntu GCC -m32 os: ubuntu-latest compiler: gcc cxx-compiler: g++ packages: gcc-multilib g++-multilib cmake-args: -DCMAKE_C_FLAGS=-m32 -DCMAKE_CXX_FLAGS=-m32 cflags: -m32 cxxflags: -m32 ldflags: -m32 - name: Ubuntu GCC ARM HF os: ubuntu-latest chost: arm-linux-gnueabihf compiler: arm-linux-gnueabihf-gcc cxx-compiler: g++-arm-linux-gnueabihf cmake-args: -DCMAKE_TOOLCHAIN_FILE=cmake/toolchain-armhf.cmake packages: qemu gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf libc6-dev-armhf-cross - name: Ubuntu GCC AARCH64 os: ubuntu-latest chost: aarch64-linux-gnu compiler: aarch64-linux-gnu-gcc cxx-compiler: g++-aarch64-linux-gnu cmake-args: -DCMAKE_TOOLCHAIN_FILE=cmake/toolchain-aarch64.cmake packages: qemu gcc-aarch64-linux-gnu g++-aarch64-linux-gnu libc6-dev-arm64-cross - name: Ubuntu GCC PPC os: ubuntu-latest chost: powerpc-linux-gnu compiler: powerpc-linux-gnu-gcc cxx-compiler: g++-powerpc-linux-gnu cmake-args: -DCMAKE_TOOLCHAIN_FILE=cmake/toolchain-powerpc.cmake packages: qemu gcc-powerpc-linux-gnu g++-powerpc-linux-gnu libc6-dev-powerpc-cross - name: Ubuntu GCC PPC64LE os: ubuntu-latest chost: powerpc64le-linux-gnu compiler: powerpc64le-linux-gnu-gcc cxx-compiler: g++-powerpc64le-linux-gnu cmake-args: -DCMAKE_TOOLCHAIN_FILE=cmake/toolchain-powerpc64le.cmake packages: qemu gcc-powerpc64le-linux-gnu g++-powerpc64le-linux-gnu libc6-dev-ppc64el-cross - name: macOS Clang os: macOS-latest compiler: clang cxx-compiler: clang++ - name: macOS Clang Native os: macOS-latest compiler: clang cxx-compiler: clang++ cmake-args: -DWITH_NATIVE_INSTRUCTIONS=ON configure-args: --native - name: macOS Clang Symbol Prefix os: macOS-latest compiler: clang cxx-compiler: clang++ cmake-args: -DZLIB_SYMBOL_PREFIX=zTest_ configure-args: --sprefix=zTest_ steps: - name: Checkout repository uses: actions/checkout@v2 - name: Install packages (Ubuntu) if: runner.os == 'Linux' run: | sudo apt-get update sudo apt-get install -y --no-install-recommends abigail-tools ninja-build diffoscope ${{ matrix.packages }} - name: Install packages (macOS) if: runner.os == 'macOS' run: | brew install ninja diffoscope ${{ matrix.packages }} env: HOMEBREW_NO_INSTALL_CLEANUP: 1 - name: Select Xcode version (macOS) # Use a version of Xcode that supports ZERO_AR_DATE until CMake supports # AppleClang linking with libtool using -D argument # https://gitlab.kitware.com/cmake/cmake/-/issues/19852 if: runner.os == 'macOS' uses: maxim-lobanov/setup-xcode@v1 with: xcode-version: '11.7.0' - name: Compare builds run: | sh test/pkgcheck.sh env: CC: ${{ matrix.compiler }} CXX: ${{ matrix.cxx-compiler }} CFLAGS: ${{ matrix.cflags }} CXXFLAGS: ${{ matrix.cxxflags }} CHOST: ${{ matrix.chost }} CMAKE_ARGS: ${{ matrix.cmake-args }} CONFIGURE_ARGS: ${{ matrix.configure-args }} LDFLAGS: ${{ matrix.ldflags }} - name: Compare builds (compat) run: | sh test/pkgcheck.sh --zlib-compat env: CC: ${{ matrix.compiler }} CFLAGS: ${{ matrix.cflags }} CHOST: ${{ matrix.chost }} CMAKE_ARGS: ${{ matrix.cmake-args }} CONFIGURE_ARGS: ${{ matrix.configure-args }} LDFLAGS: ${{ matrix.ldflags }} - name: Check ABI # macOS runner does not contain abigail if: runner.os != 'macOS' run: | sh test/abicheck.sh --refresh-if env: CC: ${{ matrix.compiler }} CXX: ${{ matrix.cxx-compiler }} CFLAGS: ${{ matrix.cflags }} CXXFLAGS: ${{ matrix.cxxflags }} CHOST: ${{ matrix.chost }} CMAKE_ARGS: ${{ matrix.cmake-args }} CONFIGURE_ARGS: ${{ matrix.configure-args }} LDFLAGS: ${{ matrix.ldflags }} - name: Check ABI (compat) # macOS runner does not contain abigail if: runner.os != 'macOS' run: | sh test/abicheck.sh --zlib-compat --refresh-if env: CC: ${{ matrix.compiler }} CXX: ${{ matrix.cxx-compiler }} CFLAGS: ${{ matrix.cflags }} CXXFLAGS: ${{ matrix.cxxflags }} CHOST: ${{ matrix.chost }} CMAKE_ARGS: ${{ matrix.cmake-args }} CONFIGURE_ARGS: ${{ matrix.configure-args }} LDFLAGS: ${{ matrix.ldflags }} - name: Upload build errors uses: actions/upload-artifact@v2 if: failure() with: name: ${{ matrix.name }} path: | btmp1/configure.log btmp1/CMakeFiles/CMakeOutput.log btmp1/CMakeFiles/CMakeError.log btmp2/configure.log btmp2/CMakeFiles/CMakeOutput.log btmp2/CMakeFiles/CMakeError.log retention-days: 30