[libcxx-commits] [PATCH] D131324: [libc++][CI] Updates and improves the Docker image.

Mark de Wever via Phabricator via libcxx-commits libcxx-commits at lists.llvm.org
Sat Aug 6 07:21:17 PDT 2022


Mordante created this revision.
Mordante added a reviewer: ldionne.
Herald added a subscriber: arichardson.
Herald added a project: All.
Mordante requested review of this revision.
Herald added a project: libc++.
Herald added a subscriber: libcxx-commits.
Herald added a reviewer: libc++.

Since we branched LLVM install Clang 16 and remove Clang 12.

Currently our Docker installs 4 versions of Clang so our CI can use the
same image for both the main and the release branch. This wasn't done for
the other Clang tools so they always use the same version for testing
the main and the release branch. Instead install 2 versions for the
tools.

However it seems the default for Clang and its tools were the latest
released version instead of the ToT. To lessen the risk of breaking the
release CI, version 14 is installed hard-coded as a temporary solution.

Updating the main branch to use the Clang 16 compiler will be done in a
separate patch.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D131324

Files:
  libcxx/utils/ci/Dockerfile


Index: libcxx/utils/ci/Dockerfile
===================================================================
--- libcxx/utils/ci/Dockerfile
+++ libcxx/utils/ci/Dockerfile
@@ -55,34 +55,34 @@
 # LLVM 15, we still need to have Clang 12 in this Docker image because the LLVM
 # 14 release branch CI uses it. The tip-of-trunk CI will never use Clang 12,
 # though.
-ENV LLVM_LATEST_VERSION=14
+ENV LLVM_HEAD_VERSION=16
 RUN apt-get update && apt-get install -y lsb-release wget software-properties-common
 RUN wget https://apt.llvm.org/llvm.sh -O /tmp/llvm.sh
-# TODO Use the apt.llvm.org version after branching to LLVM 15
-RUN apt-get update && apt-get install -y clang-$(($LLVM_LATEST_VERSION - 2))
-#RUN bash /tmp/llvm.sh $(($LLVM_LATEST_VERSION - 2)) # for CI transitions
-RUN bash /tmp/llvm.sh $(($LLVM_LATEST_VERSION - 1)) # previous release
-RUN bash /tmp/llvm.sh $LLVM_LATEST_VERSION          # latest release
-RUN bash /tmp/llvm.sh $(($LLVM_LATEST_VERSION + 1)) # current ToT
+RUN bash /tmp/llvm.sh $(($LLVM_HEAD_VERSION - 3)) # for CI transitions
+RUN bash /tmp/llvm.sh $(($LLVM_HEAD_VERSION - 2)) # previous release
+RUN bash /tmp/llvm.sh $(($LLVM_HEAD_VERSION - 1)) # latest release
+RUN bash /tmp/llvm.sh $LLVM_HEAD_VERSION          # current ToT
 
 # Make the latest version of Clang the "default" compiler on the system
-# TODO: In the future, all jobs should be using an explicitly-versioned version of Clang instead,
-#       and we can get rid of this entirely.
-RUN ln -fs /usr/bin/clang++-$LLVM_LATEST_VERSION /usr/bin/c++ && [ -e $(readlink /usr/bin/c++) ]
-RUN ln -fs /usr/bin/clang-$LLVM_LATEST_VERSION /usr/bin/cc && [ -e $(readlink /usr/bin/cc) ]
+# TODO LLVM 16: All jobs should be using an explicitly-versioned version of Clang instead,
+#               and we can get rid of this entirely.
+RUN ln -fs /usr/bin/clang++-14 /usr/bin/c++ && [ -e $(readlink /usr/bin/c++) ]
+RUN ln -fs /usr/bin/clang-14 /usr/bin/cc && [ -e $(readlink /usr/bin/cc) ]
 
 # Install clang-format
-RUN apt-get update && apt-get install -y clang-format-$LLVM_LATEST_VERSION
-RUN ln -s /usr/bin/clang-format-$LLVM_LATEST_VERSION /usr/bin/clang-format && [ -e $(readlink /usr/bin/clang-format) ]
-RUN ln -s /usr/bin/git-clang-format-$LLVM_LATEST_VERSION /usr/bin/git-clang-format && [ -e $(readlink /usr/bin/git-clang-format) ]
+# TODO Determine whether we want to use the lastest stable clang-format release or the ToT in our ToT builds
+# TODO LLVM 16 remove hard-coded version 14 and the symlinks
+RUN apt-get update && apt-get install -y clang-format-$(($LLVM_HEAD_VERSION - 1)) clang-format-$LLVM_HEAD_VERSION clang-format-14
+RUN ln -s /usr/bin/clang-format-14 /usr/bin/clang-format && [ -e $(readlink /usr/bin/clang-format) ]
+RUN ln -s /usr/bin/git-clang-format-14 /usr/bin/git-clang-format && [ -e $(readlink /usr/bin/git-clang-format) ]
 
 # Install clang-tidy
-RUN apt-get update && apt-get install -y clang-tidy-$LLVM_LATEST_VERSION
-RUN ln -s /usr/bin/clang-tidy-$LLVM_LATEST_VERSION /usr/bin/clang-tidy && [ -e $(readlink /usr/bin/clang-tidy) ]
+# TODO LLVM 16 remove hard-coded version 14 and the symlink
+RUN apt-get update && apt-get install -y clang-tidy-$(($LLVM_HEAD_VERSION - 1)) clang-tidy-$LLVM_HEAD_VERSION clang-tidy-14
+RUN ln -s /usr/bin/clang-tidy-14 /usr/bin/clang-tidy && [ -e $(readlink /usr/bin/clang-tidy) ]
 
 # Install clang-tools
-RUN apt-get update && apt-get install -y clang-tools-$LLVM_LATEST_VERSION
-RUN ln -s /usr/bin/clang-query-$LLVM_LATEST_VERSION /usr/bin/clang-query && [ -e $(readlink /usr/bin/clang-query) ]
+RUN apt-get update && apt-get install -y clang-tools-$(($LLVM_HEAD_VERSION - 1)) clang-tools-$LLVM_HEAD_VERSION
 
 # Install the most recent GCC, like clang install the previous version as a transition.
 ENV GCC_LATEST_VERSION=12


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D131324.450533.patch
Type: text/x-patch
Size: 3779 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/libcxx-commits/attachments/20220806/87a65ff5/attachment-0001.bin>


More information about the libcxx-commits mailing list