@@ -44,10 +44,11 @@ jobs:
4444
4545 linux-clang :
4646 runs-on : ubuntu-24.04
47+ container : ubuntu:25.04
4748 continue-on-error : true
4849 strategy :
4950 matrix :
50- clang_version : [14, 15, 16, 17, 18, 19]
51+ clang_version : [14, 15, 16, 17, 18, 19, 20 ]
5152 scheduler : [nemesis, sherwood, distrib]
5253 topology : [hwloc, binders, no]
5354 include :
@@ -63,11 +64,19 @@ jobs:
6364 gcc_version : 13
6465 - clang_version : 19
6566 gcc_version : 14
67+ - clang_version : 20
68+ gcc_version : 15
6669 env :
6770 CC : clang-${{ matrix.clang_version }}
6871 CXX : clang++-${{ matrix.clang_version }}
6972 steps :
7073 - uses : actions/checkout@v4
74+ - name : container prerequisites
75+ run : |
76+ # some additional setup steps are only needed when running in a container.
77+ # These end up being no-ops in the github actions images.
78+ apt-get update
79+ apt-get install -y sudo wget software-properties-common cmake
7180 - name : install gcc
7281 run : sudo apt-get install gcc-${{ matrix.gcc_version }} g++-${{ matrix.gcc_version }}
7382 - name : install clang
@@ -281,30 +290,31 @@ jobs:
281290 - sanitizer : thread
282291 topology : binders
283292 env :
284- CC : clang-20
285- CXX : clang++-20
293+ CC : clang-21
294+ CXX : clang++-21
286295 CFLAGS : " -fsanitize=${{ matrix.sanitizer }} -fno-sanitize-recover=all"
287296 CXXFLAGS : ${{ matrix.use_libcxx && format('-stdlib=libc++ -fsanitize={0} -fno-sanitize-recover=all', matrix.sanitizer) || format('-fsanitize={0} -fno-sanitize-recover=all', matrix.sanitizer) }}
288297 LDFLAGS : " -fsanitize=${{ matrix.sanitizer }} -fno-sanitize-recover=all"
289298 QTHREAD_STACK_SIZE : 2097152
290299 ASAN_OPTIONS : " check_initialization_order=1"
291300 steps :
292301 - uses : actions/checkout@v4
293- - if : ${{ ! matrix.use_libcxx }}
302+ - name : container prerequisites
294303 run : |
304+ # some additional setup steps are only needed when running in a container.
305+ # These end up being no-ops in the github actions images.
295306 apt-get update
296- apt-get install -y sudo # Updating and installing sudo is only neccesary in a container.
297- # Installing sudo is just so that the later commands using sudo can be the same whether in a container or not.
307+ apt-get install -y sudo wget software-properties-common cmake
308+ - if : ${{ ! matrix.use_libcxx }}
309+ run : |
298310 sudo apt-get install -y gcc-15 g++-15
299- sudo apt-get install -y cmake # Only needed in a container. Cmake is installed by default on VM images.
300311 - name : install compiler
301312 run : |
302- sudo apt-get install -y software-properties-common # Only needed in container.
303- wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - && break || sleep 1
304- sudo apt-add-repository 'deb https://apt.llvm.org/oracular/ llvm-toolchain-oracular-20 main' && break || sleep 1
305- sudo apt-get install -y clang-20
313+ wget -qO- https://apt.llvm.org/llvm-snapshot.gpg.key | sudo tee /etc/apt/trusted.gpg.d/apt.llvm.org.asc
314+ sudo apt-add-repository 'deb https://apt.llvm.org/plucky/ llvm-toolchain-plucky-21 main' && break || sleep 1
315+ sudo apt-get install -y clang-21
306316 - if : ${{ matrix.use_libcxx }}
307- run : sudo apt-get install -y libc++-20 -dev libc++abi-20 -dev
317+ run : sudo apt-get install -y libc++-21 -dev libc++abi-21 -dev
308318 - if : ${{ matrix.topology != 'no' }}
309319 run : |
310320 sudo apt-get install -y hwloc libhwloc-dev
@@ -337,26 +347,27 @@ jobs:
337347 - compiler : gcc
338348 use_libcxx : true
339349 env :
340- CC : ${{ matrix.compiler == 'gcc' && 'gcc-15' || 'clang-20 ' }}
341- CXX : ${{ matrix.compiler == 'gcc' && 'g++-15' || 'clang++-20 ' }}
350+ CC : ${{ matrix.compiler == 'gcc' && 'gcc-15' || 'clang-21 ' }}
351+ CXX : ${{ matrix.compiler == 'gcc' && 'g++-15' || 'clang++-21 ' }}
342352 CXXFLAGS : ${{ matrix.use_libcxx && '-stdlib=libc++' || '' }}
343353 QTHREADS_ENABLE_ASSERTS : ${{ matrix.use_asserts && '--enable-asserts' || '' }}
344354 steps :
345355 - uses : actions/checkout@v4
346- - run : |
356+ - name : container prerequisites
357+ run : |
358+ # some additional setup steps are only needed when running in a container.
359+ # These end up being no-ops in the github actions images.
347360 apt-get update
348- apt-get install -y sudo # Updating and installing sudo is only neccesary in a container.
349- # Installing sudo is just so that the later commands using sudo can be the same whether in a container or not.
361+ apt-get install -y sudo wget software-properties-common cmake
362+ - run : |
350363 sudo apt-get install -y gcc-15 g++-15
351- sudo apt-get install -y cmake # Only needed in a container. Cmake is installed by default on VM images.
352364 - if : ${{ matrix.compiler == 'clang' }}
353365 run : |
354- sudo apt-get install -y software-properties-common # Only needed in container.
355- wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - && break || sleep 1
356- sudo apt-add-repository 'deb https://apt.llvm.org/oracular/ llvm-toolchain-oracular-20 main' && break || sleep 1
357- sudo apt-get install -y clang-20
366+ wget -qO- https://apt.llvm.org/llvm-snapshot.gpg.key | sudo tee /etc/apt/trusted.gpg.d/apt.llvm.org.asc
367+ sudo apt-add-repository 'deb https://apt.llvm.org/plucky/ llvm-toolchain-plucky-21 main' && break || sleep 1
368+ sudo apt-get install -y clang-21
358369 - if : ${{ matrix.use_libcxx }}
359- run : sudo apt-get install -y libc++-20 -dev libc++abi-20 -dev
370+ run : sudo apt-get install -y libc++-21 -dev libc++abi-21 -dev
360371 - if : ${{ matrix.topology != 'no' }}
361372 run : |
362373 sudo apt-get install -y hwloc libhwloc-dev
@@ -377,14 +388,20 @@ jobs:
377388 runs-on : ubuntu-24.04
378389 continue-on-error : true
379390 env :
380- CC : ' clang-20 '
381- CXX : ' clang++-20 '
391+ CC : ' clang-21 '
392+ CXX : ' clang++-21 '
382393 steps :
383394 - uses : actions/checkout@v4
395+ - name : container prerequisites
396+ run : |
397+ # some additional setup steps are only needed when running in a container.
398+ # These end up being no-ops in the github actions images.
399+ apt-get update
400+ apt-get install -y sudo wget software-properties-common cmake
384401 - run : |
385402 wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - && break || sleep 1
386- sudo apt-add-repository 'deb https://apt.llvm.org/noble/ llvm-toolchain-noble-20 main' && break || sleep 1
387- sudo apt-get install clang-format-20
403+ sudo apt-add-repository 'deb https://apt.llvm.org/noble/ llvm-toolchain-noble-21 main' && break || sleep 1
404+ sudo apt-get install clang-format-21
388405 - name : check formatting
389406 run : |
390407 clang-format --version
0 commit comments