From 180af77df4d55a34733f2f8d8fdfd8b42ae7b71a Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Fri, 28 Feb 2025 14:37:30 +0100 Subject: [PATCH] gitlab-ci: use `clang-tidy-cache` Should help keep clang-tidy jobs to a reasonable runtime. --- .gitlab/ci/clang-tidy-cache.sh | 37 ++++++++++++++++++++++++ .gitlab/ci/configure_fedora41_tidy.cmake | 5 ++-- .gitlab/os-linux.yml | 1 + 3 files changed, 41 insertions(+), 2 deletions(-) create mode 100755 .gitlab/ci/clang-tidy-cache.sh diff --git a/.gitlab/ci/clang-tidy-cache.sh b/.gitlab/ci/clang-tidy-cache.sh new file mode 100755 index 0000000000..0aea1d66a5 --- /dev/null +++ b/.gitlab/ci/clang-tidy-cache.sh @@ -0,0 +1,37 @@ +#!/bin/sh + +set -e + +# Skip for non-tidy builds. +if ! echo "$CMAKE_CONFIGURATION" | grep -q -e 'tidy'; then + exit 0 +fi + +readonly version="0.4.0-kitware-ci-20220709" + +case "$( uname -s )-$(uname -m)" in + Linux-x86_64) + shatool="sha256sum" + sha256sum="49c2540695da9834895897633c8323d5685df88f32b71da1ac373fff9426a063" + platform="linux-amd64" + ;; + *) + echo "Unrecognized platform $( uname -s )-$( uname -m )" + exit 1 + ;; +esac +readonly shatool +readonly sha256sum +readonly platform + +readonly filename="clang-tidy-cache-$version-$platform" + +readonly url="https://gitlab.kitware.com/api/v4/projects/6955/packages/generic/clang-tidy-cache/v$version" + +cd .gitlab + +echo "$sha256sum $filename" > clang-tidy-cache.sha256sum +curl -OL "$url/$filename" +$shatool --check clang-tidy-cache.sha256sum +mv "$filename" clang-tidy-cache +chmod +x clang-tidy-cache diff --git a/.gitlab/ci/configure_fedora41_tidy.cmake b/.gitlab/ci/configure_fedora41_tidy.cmake index 951da59f61..f2776f2cac 100644 --- a/.gitlab/ci/configure_fedora41_tidy.cmake +++ b/.gitlab/ci/configure_fedora41_tidy.cmake @@ -1,4 +1,5 @@ -set(CMAKE_C_CLANG_TIDY "/usr/bin/clang-tidy" "--header-filter=$ENV{CI_PROJECT_DIR}" CACHE STRING "") -set(CMAKE_CXX_CLANG_TIDY "/usr/bin/clang-tidy" "--header-filter=$ENV{CI_PROJECT_DIR}" CACHE STRING "") +set(CMAKE_C_CLANG_TIDY "clang-tidy-cache" "--header-filter=$ENV{CI_PROJECT_DIR}" CACHE STRING "") +set(CMAKE_CXX_CLANG_TIDY "clang-tidy-cache" "--header-filter=$ENV{CI_PROJECT_DIR}" CACHE STRING "") +set(CMAKE_EXPORT_COMPILE_COMMANDS ON CACHE BOOL "") include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora41.cmake") diff --git a/.gitlab/os-linux.yml b/.gitlab/os-linux.yml index 5ce89a1b71..f990fd6e30 100644 --- a/.gitlab/os-linux.yml +++ b/.gitlab/os-linux.yml @@ -117,6 +117,7 @@ script: - *before_script_linux + - .gitlab/ci/clang-tidy-cache.sh - .gitlab/ci/sccache.sh - sccache --start-server - sccache --show-stats -- GitLab