name: linux concurrency: group: linux-${{ github.head_ref || github.ref }} cancel-in-progress: true on: push: branches: - master # Stable branches such as 0.56 or the eventual 1.0 - '[0-9]+.[0-9]+' paths: - "mesonbuild/**" - "test cases/**" - "unittests/**" - ".github/workflows/images.yml" - ".github/workflows/os_comp.yml" - "run_unittests.py" pull_request: paths: - "mesonbuild/**" - "test cases/**" - "unittests/**" - ".github/workflows/images.yml" - ".github/workflows/os_comp.yml" - "run_unittests.py" permissions: contents: read jobs: arch: name: ${{ matrix.cfg.name }} runs-on: ubuntu-latest strategy: fail-fast: false matrix: cfg: - { name: Arch Linux, id: arch } - { name: CUDA (on Arch), id: cuda } - { name: Fedora, id: fedora } - { name: OpenSUSE, id: opensuse } - { name: Ubuntu Bionic, id: bionic } container: mesonbuild/${{ matrix.cfg.id }}:latest env: MESON_CI_JOBNAME: linux-${{ matrix.cfg.id }}-gcc steps: - uses: actions/checkout@v3 - name: Run tests # All environment variables are stored inside the docker image in /ci/env_vars.sh # They are defined in the `env` section in each image.json. CI_ARGS should be set # via the `args` array ub the image.json run: bash -c 'source /ci/env_vars.sh; cd $GITHUB_WORKSPACE; ./tools/run_with_cov.py ./run_tests.py $CI_ARGS' - name: Aggregate coverage reports run: ./ci/combine_cov.sh - name: Upload coverage report uses: codecov/codecov-action@v3 with: files: .coverage/coverage.xml name: "OS Comp [${{ matrix.cfg.name }}]" fail_ci_if_error: false verbose: true pypy: name: 'Arch / PyPy' runs-on: ubuntu-latest container: mesonbuild/arch:latest env: MESON_CI_JOBNAME_UPDATE: linux-arch-gcc-pypy steps: - uses: actions/checkout@v3 - name: Run tests run: | source /ci/env_vars.sh export MESON_CI_JOBNAME=$MESON_CI_JOBNAME_UPDATE pypy3 run_tests.py ubuntu-rolling: name: 'Ubuntu Rolling' runs-on: ubuntu-latest strategy: fail-fast: false matrix: cfg: - CC: 'gcc' CXX: 'g++' - MESON_ARGS: '--unity=on -Ddefault_library=static' RUN_TESTS_ARGS: '--no-unittests' CC: 'gcc' CXX: 'g++' - MESON_ARGS: '-Ddefault_library=both' RUN_TESTS_ARGS: '--no-unittests' CC: 'gcc' CXX: 'g++' - CC: 'clang' CXX: 'clang++' - MESON_ARGS: '--unity=on' RUN_TESTS_ARGS: '--no-unittests' CC: 'clang' CXX: 'clang++' - RUN_TESTS_ARGS: '--cross ubuntu-armhf.json --cross linux-mingw-w64-64bit.json' MESON_RSP_THRESHOLD: '0' CC: 'gcc' CXX: 'g++' - RUN_TESTS_ARGS: '--cross ubuntu-armhf.json --cross linux-mingw-w64-64bit.json' MESON_ARGS: '--unity=on' CC: 'gcc' CXX: 'g++' env: MESON_CI_JOBNAME_UPDATE: linux-${{ github.job }}-${{ matrix.cfg.CC }} container: image: mesonbuild/ubuntu-rolling env: MESON_RSP_THRESHOLD: ${{ matrix.cfg.MESON_RSP_THRESHOLD }} MESON_ARGS: ${{ matrix.cfg.MESON_ARGS }} RUN_TESTS_ARGS: ${{ matrix.cfg.RUN_TESTS_ARGS }} CC: ${{ matrix.cfg.CC }} CXX: ${{ matrix.cfg.CXX }} steps: - name: Checkout code uses: actions/checkout@v3 - name: Run tests shell: bash run: | export HOME=/root export CC=$CC export CXX=$CXX export OBJC=$CC export OBJCXX=$CXX export PATH=$(pwd)/tools:$PATH if test "$MESON_RSP_THRESHOLD" != "" then export MESON_RSP_THRESHOLD=$MESON_RSP_THRESHOLD fi source /ci/env_vars.sh export MESON_CI_JOBNAME=$MESON_CI_JOBNAME_UPDATE update-alternatives --set x86_64-w64-mingw32-gcc /usr/bin/x86_64-w64-mingw32-gcc-posix update-alternatives --set x86_64-w64-mingw32-g++ /usr/bin/x86_64-w64-mingw32-g++-posix update-alternatives --set i686-w64-mingw32-gcc /usr/bin/i686-w64-mingw32-gcc-posix update-alternatives --set i686-w64-mingw32-g++ /usr/bin/i686-w64-mingw32-g++-posix ./tools/run_with_cov.py ./run_tests.py $RUN_TESTS_ARGS -- $MESON_ARGS - name: Aggregate coverage reports run: ./ci/combine_cov.sh - name: Upload coverage report uses: codecov/codecov-action@v3 with: files: .coverage/coverage.xml name: "Ubuntu [${{ matrix.cfg.CC }} ${{ matrix.cfg.RUN_TESTS_ARGS }} ${{ matrix.cfg.MESON_ARGS }}]" fail_ci_if_error: false verbose: true