aboutsummaryrefslogtreecommitdiff
path: root/.github/workflows/os_comp.yml
blob: d12e54ca2c6fcdae541da977baee35c9ebdf080f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
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