diff --git a/.github/workflows/ubuntu.yml b/.github/workflows/ubuntu.yml index 7cc1506..f3115b6 100644 --- a/.github/workflows/ubuntu.yml +++ b/.github/workflows/ubuntu.yml @@ -73,6 +73,9 @@ jobs: - release: noble compiler_name: clang compiler_version: 20 + - release: noble + compiler_name: clang + compiler_version: 21 runs-on: ${{ matrix.architecture.runner }} permissions: packages: write diff --git a/docker/ubuntu/Dockerfile b/docker/ubuntu/Dockerfile index 8730e05..598c25a 100644 --- a/docker/ubuntu/Dockerfile +++ b/docker/ubuntu/Dockerfile @@ -227,11 +227,25 @@ printf "%s\n" \ "Acquire::AllowInsecureRepositories \"true\";" \ "Acquire::AllowWeakRepositories \"true\";" \ | tee /etc/apt/apt.conf.d/99llvm-allow-weak + +# Add LLVM repository for versions above 20 because it is not available in the default repo +if [[ "${CLANG_VERSION}" -gt 20 ]]; then + apt-get update + apt-get install -y --no-install-recommends lsb-release software-properties-common gnupg + wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add - + DISTRO_CODENAME=$(lsb_release -cs) + echo "deb http://apt.llvm.org/${DISTRO_CODENAME}/ llvm-toolchain-${DISTRO_CODENAME}-${CLANG_VERSION} main" \ + | tee /etc/apt/sources.list.d/llvm.list + apt-get clean + rm -rf /var/lib/apt/lists/* +fi + apt-get update apt-get install -y --no-install-recommends --allow-unauthenticated \ clang-${CLANG_VERSION} \ libclang-rt-${CLANG_VERSION}-dev \ llvm-${CLANG_VERSION} \ + clang-tidy-${CLANG_VERSION} \ gcc \ g++ apt-get clean @@ -245,6 +259,10 @@ update-alternatives \ --slave /usr/bin/clang++ clang++ /usr/bin/clang++-${CLANG_VERSION} update-alternatives \ --install /usr/bin/llvm-cov llvm-cov /usr/bin/llvm-cov-${CLANG_VERSION} 100 +update-alternatives \ + --install /usr/bin/clang-tidy clang-tidy /usr/bin/clang-tidy-${CLANG_VERSION} 100 +update-alternatives \ + --install /usr/bin/run-clang-tidy run-clang-tidy /usr/bin/run-clang-tidy-${CLANG_VERSION} 100 update-alternatives --auto cc update-alternatives --auto c++ update-alternatives --auto clang