summaryrefslogtreecommitdiff
path: root/.gitlab/ci
diff options
context:
space:
mode:
authorKyle Edwards <kyle.edwards@kitware.com>2022-10-04 11:17:36 -0400
committerBrad King <brad.king@kitware.com>2022-10-04 13:30:52 -0400
commitc239e7c259a2af4987a4f754cee228f1f4bdcc97 (patch)
tree62f13b93f8c75c836995c784b75cc3809fb4253b /.gitlab/ci
parent5fec2ea0784cb299f2001af3d6cfce6c7dcce836 (diff)
downloadcmake-c239e7c259a2af4987a4f754cee228f1f4bdcc97.tar.gz
ci: add include-what-you-use to Fedora base image
Diffstat (limited to '.gitlab/ci')
-rw-r--r--.gitlab/ci/docker/fedora36/Dockerfile9
-rwxr-xr-x.gitlab/ci/docker/fedora36/install_iwyu.sh44
2 files changed, 53 insertions, 0 deletions
diff --git a/.gitlab/ci/docker/fedora36/Dockerfile b/.gitlab/ci/docker/fedora36/Dockerfile
index 299d48a175..ea42561bcd 100644
--- a/.gitlab/ci/docker/fedora36/Dockerfile
+++ b/.gitlab/ci/docker/fedora36/Dockerfile
@@ -10,6 +10,12 @@ MAINTAINER Kyle Edwards <kyle.edwards@kitware.com>
COPY install_clang_tidy_headers.sh /root/install_clang_tidy_headers.sh
RUN sh /root/install_clang_tidy_headers.sh
+FROM fedora:36 AS iwyu
+MAINTAINER Kyle Edwards <kyle.edwards@kitware.com>
+
+COPY install_iwyu.sh /root/install_iwyu.sh
+RUN sh /root/install_iwyu.sh
+
FROM fedora:36
MAINTAINER Ben Boeckel <ben.boeckel@kitware.com>
@@ -22,3 +28,6 @@ RUN tar -C /usr/local -xf /root/rvm.tar \
COPY --from=clang-tidy-headers /root/clang-tidy-headers.tar /root/clang-tidy-headers.tar
RUN tar -C /usr/include -xf /root/clang-tidy-headers.tar \
&& rm /root/clang-tidy-headers.tar
+COPY --from=iwyu /root/iwyu.tar /root/iwyu.tar
+RUN tar -C / -xf /root/iwyu.tar \
+ && rm /root/iwyu.tar
diff --git a/.gitlab/ci/docker/fedora36/install_iwyu.sh b/.gitlab/ci/docker/fedora36/install_iwyu.sh
new file mode 100755
index 0000000000..714bcc05c7
--- /dev/null
+++ b/.gitlab/ci/docker/fedora36/install_iwyu.sh
@@ -0,0 +1,44 @@
+#!/bin/sh
+
+set -e
+
+# Install development tools.
+dnf install --setopt=install_weak_deps=False -y \
+ clang-devel \
+ llvm-devel \
+ zlib-devel \
+ g++ \
+ cmake \
+ ninja-build \
+ git
+
+cd /root
+git clone "https://github.com/include-what-you-use/include-what-you-use.git"
+cd include-what-you-use
+readonly llvm_full_version="$( clang --version | head -n1 | cut -d' ' -f3 )"
+readonly llvm_version="$( echo "$llvm_full_version" | cut -d. -f-1 )"
+git checkout "clang_$llvm_version"
+git apply <<EOF
+diff --git a/iwyu_driver.cc b/iwyu_driver.cc
+index 42fea35..fbb77a9 100644
+--- a/iwyu_driver.cc
++++ b/iwyu_driver.cc
+@@ -167,6 +167,7 @@ CompilerInstance* CreateCompilerInstance(int argc, const char **argv) {
+ DiagnosticsEngine diagnostics(diagnostic_id, &*diagnostic_options,
+ diagnostic_client);
+ Driver driver(path, getDefaultTargetTriple(), diagnostics);
++ driver.ResourceDir = "/usr/lib64/clang/$llvm_full_version";
+ driver.setTitle("include what you use");
+
+ // Expand out any response files passed on the command line
+EOF
+mkdir build
+cd build
+
+cmake -GNinja \
+ -DCMAKE_BUILD_TYPE=Release \
+ "-DCMAKE_INSTALL_PREFIX=/usr/local/lib64/llvm-$llvm_version" \
+ ..
+ninja
+DESTDIR=/root/iwyu-destdir ninja install
+tar -C /root/iwyu-destdir -cf /root/iwyu.tar .