| 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 |
| |
| - name: Ubuntu GCC -m32 |
| os: ubuntu-latest |
| compiler: gcc |
| packages: gcc-multilib |
| cmake-args: -DCMAKE_C_FLAGS=-m32 |
| cflags: -m32 |
| ldflags: -m32 |
| |
| - name: Ubuntu GCC ARM HF |
| os: ubuntu-latest |
| chost: arm-linux-gnueabihf |
| compiler: arm-linux-gnueabihf-gcc |
| cmake-args: -DCMAKE_TOOLCHAIN_FILE=cmake/toolchain-arm.cmake -DCMAKE_C_COMPILER_TARGET=arm-linux-gnueabihf |
| packages: qemu gcc-arm-linux-gnueabihf libc6-dev-armhf-cross |
| |
| - name: Ubuntu GCC AARCH64 |
| os: ubuntu-latest |
| chost: aarch64-linux-gnu |
| compiler: aarch64-linux-gnu-gcc |
| cmake-args: -DCMAKE_TOOLCHAIN_FILE=cmake/toolchain-aarch64.cmake |
| packages: qemu gcc-aarch64-linux-gnu libc6-dev-arm64-cross |
| |
| - name: Ubuntu GCC PPC |
| os: ubuntu-latest |
| chost: powerpc-linux-gnu |
| compiler: powerpc-linux-gnu-gcc |
| cmake-args: -DCMAKE_TOOLCHAIN_FILE=cmake/toolchain-powerpc.cmake |
| packages: qemu gcc-powerpc-linux-gnu libc6-dev-powerpc-cross |
| |
| - name: Ubuntu GCC PPC64LE |
| os: ubuntu-latest |
| chost: powerpc64le-linux-gnu |
| compiler: powerpc64le-linux-gnu-gcc |
| cmake-args: -DCMAKE_TOOLCHAIN_FILE=cmake/toolchain-powerpc64le.cmake |
| packages: qemu gcc-powerpc64le-linux-gnu libc6-dev-ppc64el-cross |
| |
| - name: macOS Clang |
| os: macOS-latest |
| compiler: clang |
| |
| - name: macOS Clang Native |
| os: macOS-latest |
| compiler: clang |
| cmake-args: -DWITH_NATIVE_INSTRUCTIONS=ON |
| configure-args: --native |
| |
| steps: |
| - name: Checkout repository |
| uses: actions/checkout@v1 |
| |
| - 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: '12.1.1' |
| |
| - name: Compare builds |
| run: | |
| sh test/pkgcheck.sh |
| env: |
| CC: ${{ matrix.compiler }} |
| CFLAGS: ${{ matrix.cflags }} |
| 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 }} |
| CFLAGS: ${{ matrix.cflags }} |
| 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 }} |
| CFLAGS: ${{ matrix.cflags }} |
| 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 |