# Copyright (c) 2023 Sebastian Pipping # Licensed under GPL v2 or later name: Build on Linux on: pull_request: push: schedule: - cron: '0 3 * * 5' # Every Friday at 3am workflow_dispatch: jobs: linux: name: Build (${{ matrix.cc }} on ${{ matrix.runs-on }}) runs-on: ${{ matrix.runs-on }} strategy: fail-fast: false matrix: include: - cc: gcc-13 cxx: g++-13 clang_major_version: null clang_repo_suffix: null runs-on: ubuntu-22.04 - cc: clang-17 cxx: clang++-17 clang_major_version: 17 clang_repo_suffix: -17 runs-on: ubuntu-22.04 - cc: clang-18 cxx: clang++-18 clang_major_version: 18 clang_repo_suffix: runs-on: ubuntu-22.04 steps: - name: Add Clang/LLVM repositories if: "${{ contains(matrix.cxx, 'clang') }}" run: |- set -x source /etc/os-release wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - sudo add-apt-repository "deb http://apt.llvm.org/${UBUNTU_CODENAME}/ llvm-toolchain-${UBUNTU_CODENAME}${{ matrix.clang_repo_suffix }} main" - name: Install build dependencies run: |- sudo apt-get update sudo apt-get install --yes --no-install-recommends \ autoconf \ automake \ libfuse3-dev \ libtool \ pkg-config - name: Install build dependency Clang ${{ matrix.clang_major_version }} if: "${{ contains(matrix.cxx, 'clang') }}" run: |- sudo apt-get install --yes --no-install-recommends -V \ clang-${{ matrix.clang_major_version }} - name: Checkout Git branch uses: actions/checkout@v4 - name: 'Bootstrap with ./autogen.sh' run: |- ./autogen.sh - name: 'Configure' env: CFLAGS: -Werror run: |- set -x mkdir build cd build ../configure - name: 'Build' run: |- set -x make -C build -j$(nproc) VERBOSE=1 - name: 'Test as non-root' run: |- set -x whoami make -C build check - name: 'Test as root' run: |- set -x sudo make -C build check - name: 'Install' run: |- set -x -o pipefail make -C build install DESTDIR="${PWD}"/ROOT/ find ROOT/ | sort | xargs ls -ld