Просмотр исходного кода

ci: add include-what-you-use to Fedora base image

Kyle Edwards 3 лет назад
Родитель
Сommit
c239e7c259

+ 9 - 0
.gitlab/ci/docker/fedora36/Dockerfile

@@ -10,6 +10,12 @@ MAINTAINER Kyle Edwards <[email protected]>
 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 <[email protected]>
+
+COPY install_iwyu.sh /root/install_iwyu.sh
+RUN sh /root/install_iwyu.sh
+
 FROM fedora:36
 MAINTAINER Ben Boeckel <[email protected]>
 
@@ -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

+ 44 - 0
.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 .

+ 1 - 1
.gitlab/os-linux.yml

@@ -69,7 +69,7 @@
 ### Fedora
 
 .fedora36:
-    image: "kitware/cmake:ci-fedora36-x86_64-2022-08-31"
+    image: "kitware/cmake:ci-fedora36-x86_64-2022-10-04"
 
     variables:
         GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci/long file name for testing purposes"