name: linux on: push: branches: [ master ] pull_request: branches: [ master ] # Set permissions at the job level. permissions: {} jobs: linux: runs-on: ubuntu-22.04 permissions: contents: read strategy: matrix: compiler: [clang, gcc] steps: - uses: actions/checkout@v3 with: persist-credentials: false - uses: actions/setup-python@v4 with: python-version: '3.9' - name: Install dependencies run: | python -m pip install --upgrade meson PyYAML sudo apt update sudo apt install -y \ doxygen libxcb-xkb-dev valgrind ninja-build \ libwayland-dev wayland-protocols bison graphviz libicu-dev - name: Install xkeyboard-config run: | # Install master version of xkeyboard-config, in order to ensure # its latest version works well with xkbcommon. # HACK: We use meson to install, while it would be cleaner # to create a proper package to install or use some PPA. pushd ~ git clone --depth=1 https://gitlab.freedesktop.org/xkeyboard-config/xkeyboard-config.git cd "xkeyboard-config" BUILDDIR=build meson setup $BUILDDIR -Dprefix=/usr meson install -C $BUILDDIR popd - name: Setup run: | # -gdwarf-4 - see https://github.com/llvm/llvm-project/issues/56550. CFLAGS='-gdwarf-4' meson setup build -Denable-cool-uris=true env: CC: ${{ matrix.compiler }} - name: Build run: | meson compile -C build - name: Test run: meson test -C build --print-errorlogs --no-suite python-tests - name: Test with valgrind run: meson test -C build --print-errorlogs --setup=valgrind --no-suite python-tests - name: Upload test logs uses: actions/upload-artifact@v3 if: failure() with: name: test logs path: | build/meson-logs/ - name: Ensure doxygen version is correct run: | doxygen --version > version.txt echo "1.9.6" >> version.txt if [ $(sort -V version.txt | tail -n1) != "1.9.6" ]; then echo "Doxygen version 1.9.6 or earlier expected, see #347" exit 1 fi - name: Store doxygen docs for use by the pages workflow uses: actions/upload-artifact@v3 if: success() with: name: doxygen-docs path: | build/html/