@@ -30,8 +30,26 @@ permissions:
3030
3131jobs :
3232 test_suite :
33- name : Run the test suite
34- runs-on : ubuntu-24.04
33+ name : " Run the test suite (GCC ${{ matrix.gcc }}, ${{ matrix.runs-on }})"
34+ runs-on : ${{ matrix.runs-on }}
35+ strategy :
36+ fail-fast : false
37+ matrix :
38+ include :
39+ - runs-on : ubuntu-22.04
40+ gcc : 9
41+ - runs-on : ubuntu-22.04
42+ gcc : 10
43+ - runs-on : ubuntu-22.04
44+ gcc : 11
45+ - runs-on : ubuntu-22.04
46+ gcc : 12
47+ - runs-on : ubuntu-24.04
48+ gcc : 12
49+ - runs-on : ubuntu-24.04
50+ gcc : 13
51+ - runs-on : ubuntu-24.04
52+ gcc : 14
3553 steps :
3654 - uses : actions/checkout@v4
3755
6583
6684 sudo perl -MCPAN -e 'install(Memory::Process)' # no package in Ubuntu
6785
86+ - name : " Make GCC ${{ matrix.gcc }} systemwide default"
87+ run : |-
88+ set -x -o pipefail
89+ # Make requested version GCC and GCOV the system default
90+ # before we have an easy way to fully divert "make check"
91+ # off of the default commands
92+ for i in gcc{,-{ar,nm,ranlib}} gcov{,-{dump,tool}} lto-dump ; do
93+ [[ -e /usr/bin/"${i}" ]] || continue
94+ sudo rm /usr/bin/"${i}"
95+ sudo ln -s "${i}-${{ matrix.gcc }}" /usr/bin/"${i}"
96+ "${i}" --version | head -n1
97+ done
98+ ls -l /usr/bin/*-"${{ matrix.gcc }}"
99+
68100 - name : make install
69101 run : |-
70102 set -x -o pipefail
@@ -86,13 +118,13 @@ jobs:
86118 - name : Upload test log as an artifact
87119 uses : actions/upload-artifact@v4
88120 with :
89- name : " lcov-${{ github.sha }}-${{ runner.os }}-test-log" # .zip
121+ name : " lcov-${{ github.sha }}-${{ runner.os }}-GCC-${{ runner.gcc }}- test-log" # .zip
90122 path : tests/test.log
91123 if-no-files-found : error
92124
93125 - name : Upload test directory shrapnel as an artifact
94126 uses : actions/upload-artifact@v4
95127 with :
96- name : " lcov-${{ github.sha }}-${{ runner.os }}-shrapnel" # .zip
128+ name : " lcov-${{ github.sha }}-${{ runner.os }}-GCC-${{ runner.gcc }}- shrapnel" # .zip
97129 path : tests
98130 # if-no-files-found: error
0 commit comments