From 02b9b5f9d7dcfba9f144f829b9a5a4730d0d8920 Mon Sep 17 00:00:00 2001 From: Marco Barbone Date: Tue, 3 Nov 2026 15:07:37 -0500 Subject: [PATCH] CI: Move the satisfactory jobs to ubuntu-26.04 and add new jobs. GitHub moved ubuntu-latest to Ubuntu 26.04. Each job that is satisfactory on the new image goes to ubuntu-26.04: - linux.yml (all but the gcc 10 and clang 16 jobs), Arm and SVE cross with gcc 14, PowerPC cross with gcc 12 and ppc64le clang 20, the format, inline-keyword and unused-includes style checks, Emscripten (conda-forge playwright 1.61.0, the first release that supports Ubuntu 26.04), and the sanitizer jobs with LLVM 22. These jobs stay on ubuntu-24.04: - gcc 10 jobs on linux, Arm and SVE: no g++-10 packages. - clang 16 native job: no clang-16 package. - clang-tidy check: clang-tidy 21 rejects -mno-avx512pf/-mno-avx512er. - ppc64 clang 20: IBM/IEEE long double mismatch stops the linker. - arch-consistency check: image g++ 15 rejects -march=knl/-march=knm. - RISC-V RVV: qemu 10.2 gives an illegal instruction. New on ubuntu-26.04: gcc 16 avx2 and clang 22 avx2 on linux, and gcc 16 cross jobs for armv7-a, armv8-a and SVE 128, 256 and 512. --- .github/workflows/arch-consistency-check.yml | 2 +- .github/workflows/cross-arm.yml | 10 ++++- .github/workflows/cross-ppc.yml | 3 +- .github/workflows/cross-rvv.yml | 2 +- .github/workflows/cross-sve.yml | 9 +++-- .github/workflows/emscripten.yml | 4 +- .github/workflows/linux.yml | 39 +++++++++++--------- .github/workflows/sanitizer.yml | 16 +++++--- .github/workflows/style-check.yml | 8 ++-- 9 files changed, 55 insertions(+), 38 deletions(-) diff --git a/.github/workflows/arch-consistency-check.yml b/.github/workflows/arch-consistency-check.yml index 83839e136..693861e94 100644 --- a/.github/workflows/arch-consistency-check.yml +++ b/.github/workflows/arch-consistency-check.yml @@ -5,7 +5,7 @@ concurrency: cancel-in-progress: true jobs: build: - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 steps: - name: Checkout xsimd uses: actions/checkout@v6 diff --git a/.github/workflows/cross-arm.yml b/.github/workflows/cross-arm.yml index 74d4f8764..5906b1182 100644 --- a/.github/workflows/cross-arm.yml +++ b/.github/workflows/cross-arm.yml @@ -5,7 +5,7 @@ concurrency: cancel-in-progress: true jobs: build: - runs-on: ubuntu-latest + runs-on: ${{ matrix.sys.runner || 'ubuntu-26.04' }} name: '${{ matrix.target.arch }}, ${{ matrix.sys.compiler }} ${{ matrix.sys.version }}' strategy: matrix: @@ -14,8 +14,14 @@ jobs: - { arch: 'armv7-a', xsimd_arch: 'generic', dir: 'arm-linux-gnueabihf', flags: '-mfpu=vfpv3-d16', full: 'OFF' } # no neon - { arch: 'armv8-a', xsimd_arch: 'neon64', dir: 'aarch64-linux-gnu', flags: '', full: 'ON' } sys: - - { compiler: 'gcc', version: '10' } - { compiler: 'gcc', version: '14' } + # gcc-10 is not shipped by Ubuntu 26.04 + - { compiler: 'gcc', version: '10', runner: 'ubuntu-24.04' } + include: + - target: { arch: 'armv7-a', xsimd_arch: 'neon', dir: 'arm-linux-gnueabihf', flags: '-mfpu=neon', full: 'ON' } + sys: { compiler: 'gcc', version: '16' } + - target: { arch: 'armv8-a', xsimd_arch: 'neon64', dir: 'aarch64-linux-gnu', flags: '', full: 'ON' } + sys: { compiler: 'gcc', version: '16' } steps: - name: Checkout xsimd uses: actions/checkout@v6 diff --git a/.github/workflows/cross-ppc.yml b/.github/workflows/cross-ppc.yml index ab220a030..e5ba95997 100644 --- a/.github/workflows/cross-ppc.yml +++ b/.github/workflows/cross-ppc.yml @@ -6,7 +6,8 @@ concurrency: jobs: build: - runs-on: ubuntu-latest + # ppc64 + clang 20 stays on 24.04: Ubuntu 26.04 clang defaults powerpc64 to IEEE long double, the gcc-12 cross sysroot is IBM (link error). + runs-on: ${{ (matrix.sys.compiler == 'clang' && matrix.target.platform == 'ppc64') && 'ubuntu-24.04' || 'ubuntu-26.04' }} name: '${{ matrix.target.platform }}, ${{ matrix.sys.compiler }} ${{ matrix.sys.version }}' strategy: matrix: diff --git a/.github/workflows/cross-rvv.yml b/.github/workflows/cross-rvv.yml index 1d925fe36..037f3f15a 100644 --- a/.github/workflows/cross-rvv.yml +++ b/.github/workflows/cross-rvv.yml @@ -11,7 +11,7 @@ concurrency: cancel-in-progress: true jobs: build: - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 name: 'RISC-V RVV${{ matrix.vector_bits }}' strategy: fail-fast: false diff --git a/.github/workflows/cross-sve.yml b/.github/workflows/cross-sve.yml index 39ab145d5..9ce40f94f 100644 --- a/.github/workflows/cross-sve.yml +++ b/.github/workflows/cross-sve.yml @@ -5,14 +5,17 @@ concurrency: cancel-in-progress: true jobs: build: - runs-on: ubuntu-latest - name: 'Arm SVE${{ matrix.vector_bits }}' + runs-on: ${{ matrix.sys.runner }} + name: 'Arm SVE${{ matrix.vector_bits }}, gcc ${{ matrix.sys.version }}' strategy: matrix: vector_bits: - 128 - 256 - 512 + sys: + - { version: '10', runner: 'ubuntu-24.04' } + - { version: '16', runner: 'ubuntu-26.04' } steps: - name: Checkout xsimd uses: actions/checkout@v6 @@ -21,7 +24,7 @@ jobs: uses: ./.github/actions/setup-cross-compiler-apt with: compiler: gcc - version: '10' + version: ${{ matrix.sys.version }} target: aarch64-linux-gnu qemu: 'true' - name: Setup Ninja diff --git a/.github/workflows/emscripten.yml b/.github/workflows/emscripten.yml index 988c348df..ff11bfc96 100644 --- a/.github/workflows/emscripten.yml +++ b/.github/workflows/emscripten.yml @@ -5,7 +5,7 @@ concurrency: cancel-in-progress: true jobs: test: - runs-on: ubuntu-latest + runs-on: ubuntu-26.04 steps: - name: Checkout @@ -15,7 +15,7 @@ jobs: with: environment-name: xsimd create-args: >- - microsoft::playwright=1.50.0 + playwright-python=1.61.0 python init-shell: bash diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 294251ac5..e440cfa24 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -9,29 +9,32 @@ defaults: jobs: build: - runs-on: ubuntu-latest + runs-on: ${{ matrix.sys.os || 'ubuntu-26.04' }} name: '${{ matrix.sys.compiler }} ${{ matrix.sys.version }} - ${{ matrix.sys.arch }} ${{ join(matrix.sys.flags, '' '') }}' strategy: matrix: sys: - { compiler: 'gcc', version: '13', arch: 'native', flags: ['xtl-complex'] } - - { compiler: 'gcc', version: '14', arch: 'avx', flags: [] } - - { compiler: 'gcc', version: '14', arch: 'avx2', flags: [] } - - { compiler: 'gcc', version: '13', arch: 'avx512bw', flags: [] } - - { compiler: 'gcc', version: '10', arch: 'avx512bw', flags: [] } + - { compiler: 'gcc', version: '14', arch: 'avx' } + - { compiler: 'gcc', version: '14', arch: 'avx2' } + - { compiler: 'gcc', version: '13', arch: 'avx512bw' } - { compiler: 'gcc', version: '12', arch: 'native', flags: ['32bits'] } - - { compiler: 'gcc', version: '13', arch: 'avx512pf', flags: [] } - - { compiler: 'gcc', version: '13', arch: 'avx512vbmi', flags: [] } - - { compiler: 'gcc', version: '14', arch: 'avx512vbmi2', flags: [] } - - { compiler: 'gcc', version: '13', arch: 'avx512vnni_avx512bw', flags: [] } - - { compiler: 'clang', version: '16', arch: 'native', flags: ['xtl-complex'] } - - { compiler: 'clang', version: '17', arch: 'avx', flags: [] } - - { compiler: 'clang', version: '17', arch: 'sse3', flags: [] } - - { compiler: 'clang', version: '18', arch: 'avx512bw', flags: [] } - - { compiler: 'clang', version: '18', arch: 'avx_128', flags: [] } - - { compiler: 'clang', version: '18', arch: 'avx2_128', flags: [] } - - { compiler: 'clang', version: '18', arch: 'avx512vl_128', flags: [] } - - { compiler: 'clang', version: '18', arch: 'avx512vl_256', flags: [] } + - { compiler: 'gcc', version: '13', arch: 'avx512pf' } + - { compiler: 'gcc', version: '13', arch: 'avx512vbmi' } + - { compiler: 'gcc', version: '14', arch: 'avx512vbmi2' } + - { compiler: 'gcc', version: '13', arch: 'avx512vnni_avx512bw' } + - { compiler: 'gcc', version: '16', arch: 'avx2' } + - { compiler: 'clang', version: '17', arch: 'avx' } + - { compiler: 'clang', version: '17', arch: 'sse3' } + - { compiler: 'clang', version: '18', arch: 'avx512bw' } + - { compiler: 'clang', version: '18', arch: 'avx_128' } + - { compiler: 'clang', version: '18', arch: 'avx2_128' } + - { compiler: 'clang', version: '18', arch: 'avx512vl_128' } + - { compiler: 'clang', version: '18', arch: 'avx512vl_256' } + - { compiler: 'clang', version: '22', arch: 'avx2' } + # g++-10 and clang-16 are not shipped by Ubuntu 26.04 + - { compiler: 'gcc', version: '10', arch: 'avx512bw', os: 'ubuntu-24.04' } + - { compiler: 'clang', version: '16', arch: 'native', flags: ['xtl-complex'], os: 'ubuntu-24.04' } steps: - name: Checkout xsimd uses: actions/checkout@v6 @@ -95,7 +98,7 @@ jobs: fi build-extra: - runs-on: ubuntu-latest + runs-on: ubuntu-26.04 name: 'clang 18 - architectures and benchmark' steps: - name: Checkout xsimd diff --git a/.github/workflows/sanitizer.yml b/.github/workflows/sanitizer.yml index 520be087f..77a5a138e 100644 --- a/.github/workflows/sanitizer.yml +++ b/.github/workflows/sanitizer.yml @@ -8,18 +8,22 @@ defaults: shell: bash -l {0} jobs: build: - runs-on: ubuntu-latest - name: 'sanitizer - ${{ matrix.flags }}' + runs-on: ${{ matrix.llvm.os }} + name: 'sanitizer - ${{ matrix.flags }} - llvm-${{ matrix.llvm.version }}' strategy: matrix: flags: - sanitize=address - sanitize=undefined - fast-math -fsanitize=undefined - llvm-version: [20] + llvm: + - version: 20 + os: ubuntu-24.04 + - version: 22 + os: ubuntu-26.04 env: - CC: clang-${{ matrix.llvm-version }} - CXX: clang++-${{ matrix.llvm-version }} + CC: clang-${{ matrix.llvm.version }} + CXX: clang++-${{ matrix.llvm.version }} steps: - name: Checkout xsimd uses: actions/checkout@v6 @@ -27,7 +31,7 @@ jobs: run: | wget https://apt.llvm.org/llvm.sh chmod +x llvm.sh - sudo ./llvm.sh ${{ matrix.llvm-version }} + sudo ./llvm.sh ${{ matrix.llvm.version }} - name: Configure build run: | cmake -B_build \ diff --git a/.github/workflows/style-check.yml b/.github/workflows/style-check.yml index 07262277a..064aabbed 100644 --- a/.github/workflows/style-check.yml +++ b/.github/workflows/style-check.yml @@ -6,7 +6,7 @@ concurrency: jobs: formatting-check: name: Format check - runs-on: ubuntu-latest + runs-on: ubuntu-26.04 steps: - uses: actions/checkout@v6 - run: sudo apt install clang-format @@ -16,7 +16,7 @@ jobs: ! grep -q '^diff ' diff.patch inlining-check: - runs-on: ubuntu-latest + runs-on: ubuntu-26.04 name: Check inline keyword usage steps: - uses: actions/checkout@v6 @@ -24,7 +24,7 @@ jobs: - run: sh ./test/check_inline_specifier.sh . include-check: - runs-on: ubuntu-latest + runs-on: ubuntu-26.04 name: Check unused standard includes steps: - uses: actions/checkout@v6 @@ -33,7 +33,7 @@ jobs: clang-tidy-check: name: Clang-tidy check (x86_64) - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v6 - run: sudo apt install clang-tidy