diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 038e7e4..d00849a 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -38,21 +38,43 @@ jobs: matrix: include: - name: 64-bit-versions + runner: ubuntu-latest-amd64 + arch: amd64 + llvm_version: "21" + msan_url: "" cmake_args: -DCMAKE_CXX_FLAGS=-DUSE_64_BIT=1 - name: debug + runner: ubuntu-latest-amd64 + arch: amd64 + llvm_version: "21" + msan_url: https://minio.weaselab.dev/public/x86_64/msan-toolchain-21.1.8.tar.zst cmake_args: -DCMAKE_BUILD_TYPE=Debug -DMSAN_TOOLCHAIN_PATH=/opt/msan - name: simd-fallback + runner: ubuntu-latest-amd64 + arch: amd64 + llvm_version: "21" + msan_url: "" cmake_args: -DUSE_SIMD_FALLBACK=ON - name: gcc + runner: ubuntu-latest-amd64 + arch: amd64 + llvm_version: "21" + msan_url: "" cmake_args: -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ - runs-on: ubuntu-latest-amd64 + - name: debug-arm64 + runner: ubuntu-latest-arm64 + arch: arm64 + llvm_version: "22" + msan_url: https://minio.weaselab.dev/public/aarch64/msan-toolchain-22.1.8.tar.zst + cmake_args: -DCMAKE_BUILD_TYPE=Debug -DMSAN_TOOLCHAIN_PATH=/opt/msan + runs-on: ${{ matrix.runner }} steps: - uses: actions/checkout@v4 - uses: actions/cache@v4 with: path: /var/cache/apt/archives - key: apt-amd64-${{ hashFiles('.gitea/workflows/ci.yml') }} + key: apt-${{ matrix.arch }}-${{ hashFiles('.gitea/workflows/ci.yml') }} - name: Install common dependencies run: | @@ -68,18 +90,18 @@ jobs: run: | . /etc/os-release wget -qO- https://apt.llvm.org/llvm-snapshot.gpg.key | sudo tee /etc/apt/trusted.gpg.d/apt.llvm.org.asc - echo "deb http://apt.llvm.org/${VERSION_CODENAME}/ llvm-toolchain-${VERSION_CODENAME}-21 main" | sudo tee /etc/apt/sources.list.d/llvm.list + echo "deb http://apt.llvm.org/${VERSION_CODENAME}/ llvm-toolchain-${VERSION_CODENAME}-${{ matrix.llvm_version }} main" | sudo tee /etc/apt/sources.list.d/llvm.list sudo apt-get update -qq sudo apt-get install -y \ - clang-21 llvm-21 lld-21 mold + clang-${{ matrix.llvm_version }} llvm-${{ matrix.llvm_version }} lld-${{ matrix.llvm_version }} mold for tool in clang clang++ llvm-ar llvm-nm llvm-ranlib llvm-objcopy llvm-cov llvm-symbolizer lld ld.lld; do - sudo update-alternatives --install /usr/bin/${tool} ${tool} /usr/bin/${tool}-21 100 + sudo update-alternatives --install /usr/bin/${tool} ${tool} /usr/bin/${tool}-${{ matrix.llvm_version }} 100 done - name: Download MSan toolchain - if: matrix.name == 'debug' + if: matrix.msan_url != '' run: | - curl -Ls "https://minio.weaselab.dev/public/x86_64/msan-toolchain-21.1.8.tar.zst" -o /tmp/msan-toolchain.tar.zst + curl -Ls "${{ matrix.msan_url }}" -o /tmp/msan-toolchain.tar.zst sudo mkdir -p /opt/msan sudo tar --zstd -xf /tmp/msan-toolchain.tar.zst -C /opt/msan