--- # DESCRIPTION: Github actions config # This name is key to badges in README.rst, so we use the name build # SPDX-License-Identifier: LGPL-3.0-only OR Artistic-2.0 name: build on: push: pull_request: workflow_dispatch: schedule: - cron: '0 0 * * 0' # weekly permissions: contents: read defaults: run: shell: bash working-directory: repo concurrency: group: ${{ github.workflow }}-${{ github.actor }}-${{ github.event_name == 'pull_request' && github.ref || github.run_id }} cancel-in-progress: true jobs: build-2404-gcc: name: Build uses: ./.github/workflows/reusable-build.yml with: os: ${{ matrix.os }} cc: ${{ matrix.cc }} strategy: fail-fast: false matrix: include: - {os: ubuntu-24.04, cc: gcc} build-2404-clang: name: Build uses: ./.github/workflows/reusable-build.yml with: os: ${{ matrix.os }} cc: ${{ matrix.cc }} strategy: fail-fast: false matrix: include: - {os: ubuntu-24.04, cc: clang} build-2204-gcc: name: Build uses: ./.github/workflows/reusable-build.yml with: os: ${{ matrix.os }} cc: ${{ matrix.cc }} strategy: fail-fast: false matrix: include: - {os: ubuntu-22.04, cc: gcc} build-2204-clang: name: Build uses: ./.github/workflows/reusable-build.yml with: os: ${{ matrix.os }} cc: ${{ matrix.cc }} strategy: fail-fast: false matrix: include: - {os: ubuntu-22.04, cc: clang} test-2404-gcc: name: Test | ${{ matrix.os }} | ${{ matrix.cc }} needs: build-2404-gcc uses: ./.github/workflows/reusable-test.yml with: os: ${{ matrix.os }} cc: ${{ matrix.cc }} reloc: ${{ matrix.reloc }} suite: ${{ matrix.suite }} strategy: fail-fast: false matrix: include: # Ubuntu 24.04 gcc - {os: ubuntu-24.04, cc: gcc, reloc: 0, suite: dist-vlt-0} - {os: ubuntu-24.04, cc: gcc, reloc: 0, suite: dist-vlt-1} - {os: ubuntu-24.04, cc: gcc, reloc: 0, suite: dist-vlt-2} - {os: ubuntu-24.04, cc: gcc, reloc: 0, suite: dist-vlt-3} - {os: ubuntu-24.04, cc: gcc, reloc: 0, suite: vltmt-0} - {os: ubuntu-24.04, cc: gcc, reloc: 0, suite: vltmt-1} - {os: ubuntu-24.04, cc: gcc, reloc: 0, suite: vltmt-2} test-2404-clang: name: Test | ${{ matrix.os }} | ${{ matrix.cc }} needs: build-2404-clang uses: ./.github/workflows/reusable-test.yml with: os: ${{ matrix.os }} cc: ${{ matrix.cc }} reloc: ${{ matrix.reloc }} suite: ${{ matrix.suite }} strategy: fail-fast: false matrix: include: # Ubuntu 24.04 clang - {os: ubuntu-24.04, cc: clang, reloc: 0, suite: dist-vlt-0} - {os: ubuntu-24.04, cc: clang, reloc: 0, suite: dist-vlt-1} - {os: ubuntu-24.04, cc: clang, reloc: 0, suite: dist-vlt-2} - {os: ubuntu-24.04, cc: clang, reloc: 0, suite: dist-vlt-3} - {os: ubuntu-24.04, cc: clang, reloc: 0, suite: vltmt-0} - {os: ubuntu-24.04, cc: clang, reloc: 0, suite: vltmt-1} - {os: ubuntu-24.04, cc: clang, reloc: 0, suite: vltmt-2} test-2204-gcc: name: Test | ${{ matrix.os }} | ${{ matrix.cc }} needs: build-2204-gcc uses: ./.github/workflows/reusable-test.yml with: os: ${{ matrix.os }} cc: ${{ matrix.cc }} reloc: ${{ matrix.reloc }} suite: ${{ matrix.suite }} strategy: fail-fast: false matrix: include: # Ubuntu 22.04 gcc - {os: ubuntu-22.04, cc: gcc, reloc: 0, suite: dist-vlt-0} - {os: ubuntu-22.04, cc: gcc, reloc: 0, suite: dist-vlt-1} - {os: ubuntu-22.04, cc: gcc, reloc: 0, suite: dist-vlt-2} - {os: ubuntu-22.04, cc: gcc, reloc: 0, suite: dist-vlt-3} - {os: ubuntu-22.04, cc: gcc, reloc: 0, suite: vltmt-0} - {os: ubuntu-22.04, cc: gcc, reloc: 0, suite: vltmt-1} - {os: ubuntu-22.04, cc: gcc, reloc: 0, suite: vltmt-2} test-2204-clang: name: Test | ${{ matrix.os }} | ${{ matrix.cc }} needs: build-2204-clang uses: ./.github/workflows/reusable-test.yml with: os: ${{ matrix.os }} cc: ${{ matrix.cc }} reloc: ${{ matrix.reloc }} suite: ${{ matrix.suite }} strategy: fail-fast: false matrix: include: # Ubuntu 22.04 clang, also test relocation - {os: ubuntu-22.04, cc: clang, reloc: 1, suite: dist-vlt-0} - {os: ubuntu-22.04, cc: clang, reloc: 1, suite: dist-vlt-1} - {os: ubuntu-22.04, cc: clang, reloc: 1, suite: dist-vlt-2} - {os: ubuntu-22.04, cc: clang, reloc: 1, suite: dist-vlt-3} - {os: ubuntu-22.04, cc: clang, reloc: 1, suite: vltmt-0} - {os: ubuntu-22.04, cc: clang, reloc: 1, suite: vltmt-1} - {os: ubuntu-22.04, cc: clang, reloc: 1, suite: vltmt-2} lint-py: runs-on: ubuntu-22.04 name: Lint Python env: CI_OS_NAME: linux CI_COMMIT: ${{ github.sha }} CI_BUILD_STAGE_NAME: build CI_RUNS_ON: ubuntu-22.04 CCACHE_COMPRESS: 1 CCACHE_DIR: ${{ github.workspace }}/.ccache CCACHE_LIMIT_MULTIPLE: 0.95 strategy: fail-fast: false steps: - name: Checkout uses: actions/checkout@v4 with: path: repo - name: Install packages for build run: ./ci/ci-install.bash # We use specific version numbers, otherwise a Python package # update may add a warning and break our build - name: Install packages for lint run: sudo pip3 install pylint==3.0.2 ruff==0.1.3 clang sphinx sphinx_rtd_theme sphinxcontrib-spelling breathe ruff - name: Configure run: autoconf && ./configure --enable-longtests --enable-ccwarn - name: Lint run: make -k lint-py