# GitHub actions workflow. # https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions name: Build+Test CI on: [pull_request, push] jobs: make: strategy: matrix: os: [ubuntu-latest] cc: [gcc, clang] bb: [meson, muon] sanitizer: [none, address, undefined] fail-fast: false runs-on: ${{ matrix.os }} env: CC: ${{ matrix.cc }} BB: ${{ matrix.bb }} SANITIZER: ${{ matrix.sanitizer }} steps: - name: Install dependencies run: | sudo apt-get update sudo apt-get install -y python3-pyelftools python3-pip \ libcap-dev libseccomp-dev ninja-build \ pkg-config case "$BB" in meson) sudo pip3 install meson ;; muon) wget https://muon.build/releases/edge/muon-edge-amd64-linux-static -O muon chmod +x muon sudo install -Dm755 muon /usr/local/bin/muon ;; esac - uses: actions/checkout@v3 - run: | export PKG_CONFIG_PATH="/usr/lib/$(uname -m)-linux-gnu/pkgconfig/" case "$BB" in muon) alias ninja="muon samu" ;; esac "$BB" setup -Duse_libcap=enabled \ -Duse_seccomp=true \ -Dbuild_manpages=disabled \ -Dtests=true \ -Duse_fuzzing=true \ -Db_sanitize="${SANITIZER}" \ build ninja -C build ( cd build && "$BB" test; ) build-macos: strategy: matrix: os: [macos-latest] cc: [clang] runs-on: ${{ matrix.os }} env: CC: ${{ matrix.cc }} steps: - name: Install dependencies run: brew install meson ninja - uses: actions/checkout@v3 - run: | meson -Duse_libcap=disabled \ -Duse_seccomp=false \ -Dbuild_manpages=disabled \ -Dtests=true \ -Duse_fuzzing=true \ build ninja -C build # The unittests generally assume a Linux ELF host, so don't bother making # sure they pass on macOS. Run them out of morbid curiosity I guess. ninja -kC build test ||: