[libcxx] [llvm] test with libcxx workflow (PR #71836)

via llvm-commits llvm-commits at lists.llvm.org
Thu Nov 9 14:27:59 PST 2023


https://github.com/EricWF updated https://github.com/llvm/llvm-project/pull/71836

>From f99287d421c3758bc6764b488f770950a989e775 Mon Sep 17 00:00:00 2001
From: eric <eric at efcs.ca>
Date: Thu, 9 Nov 2023 13:15:02 -0500
Subject: [PATCH 01/20] test with libcxx workflow

---
 .../workflows/libcxx-example-workflow.yaml    | 33 +++++++++++++++++++
 1 file changed, 33 insertions(+)
 create mode 100644 .github/workflows/libcxx-example-workflow.yaml

diff --git a/.github/workflows/libcxx-example-workflow.yaml b/.github/workflows/libcxx-example-workflow.yaml
new file mode 100644
index 000000000000000..c3a7d3ed20bcd8c
--- /dev/null
+++ b/.github/workflows/libcxx-example-workflow.yaml
@@ -0,0 +1,33 @@
+name: Build and Test libc++
+
+on: pull_request
+
+
+# Comment
+jobs:
+  build:
+    runs-on: libcxx-runners-small
+    steps:
+    - uses: actions/checkout at v4
+      with:
+        fetch-depth: 5
+    - name: Create Paths
+      run: |
+        mkdir build install artifacts
+    - name: Configure
+      run: |
+        cd build
+        cmake -GNinja -DCMAKE_BUILD_TYPE=Release \
+          -DCMAKE_CXX_COMPILER=clang++ \
+          -DCMAKE_C_COMPILER=clang \
+          "-DLLVM_ENABLE_RUNTIMES=libcxx;libcxxabi"\
+          "-DCMAKE_INSTALL_PREFIX=../install" \
+          ../runtimes
+    - name: Build
+      run: |
+        cd build
+        ninja
+    - name: Install
+      run: |
+        cd build
+        ninja install

>From 7184c61d90b86b9f3ae8fcec65f0d7b8772e5fa2 Mon Sep 17 00:00:00 2001
From: eric <eric at efcs.ca>
Date: Thu, 9 Nov 2023 14:51:01 -0500
Subject: [PATCH 02/20] attempt to mimic buildkite pipeline

---
 .../workflows/libcxx-example-workflow.yaml    | 26 +++++--------------
 1 file changed, 6 insertions(+), 20 deletions(-)

diff --git a/.github/workflows/libcxx-example-workflow.yaml b/.github/workflows/libcxx-example-workflow.yaml
index c3a7d3ed20bcd8c..119bbec837684df 100644
--- a/.github/workflows/libcxx-example-workflow.yaml
+++ b/.github/workflows/libcxx-example-workflow.yaml
@@ -6,28 +6,14 @@ on: pull_request
 # Comment
 jobs:
   build:
-    runs-on: libcxx-runners-small
+    runs-on: libcxx-runners-large
     steps:
     - uses: actions/checkout at v4
       with:
         fetch-depth: 5
     - name: Create Paths
-      run: |
-        mkdir build install artifacts
-    - name: Configure
-      run: |
-        cd build
-        cmake -GNinja -DCMAKE_BUILD_TYPE=Release \
-          -DCMAKE_CXX_COMPILER=clang++ \
-          -DCMAKE_C_COMPILER=clang \
-          "-DLLVM_ENABLE_RUNTIMES=libcxx;libcxxabi"\
-          "-DCMAKE_INSTALL_PREFIX=../install" \
-          ../runtimes
-    - name: Build
-      run: |
-        cd build
-        ninja
-    - name: Install
-      run: |
-        cd build
-        ninja install
+      run: libcxx/utils/ci/run-buildbot generic-cxx26
+      env:
+        CC: clang-18
+        CXX: clang++-18
+        CMAKE: /opt/bin/cmake

>From d518bac241f41cbc3bedcaf52ee351ec9cf2f228 Mon Sep 17 00:00:00 2001
From: eric <eric at efcs.ca>
Date: Thu, 9 Nov 2023 15:48:31 -0500
Subject: [PATCH 03/20] attempt matrix

---
 .../workflows/libcxx-example-workflow.yaml    | 23 ++++++++++++++-----
 1 file changed, 17 insertions(+), 6 deletions(-)

diff --git a/.github/workflows/libcxx-example-workflow.yaml b/.github/workflows/libcxx-example-workflow.yaml
index 119bbec837684df..7d501b67ec601c3 100644
--- a/.github/workflows/libcxx-example-workflow.yaml
+++ b/.github/workflows/libcxx-example-workflow.yaml
@@ -5,15 +5,26 @@ on: pull_request
 
 # Comment
 jobs:
-  build:
+  build_and_test:
     runs-on: libcxx-runners-large
+    continue-on-error: false
+    strategy:
+      fail-fast: true
+      matrix:
+        config: ['generic-cxx26', 'generic-cxx03', 'modules']
+        cc: ['clang-18']
+        cxx: ['clang++-18']
+        include:
+          config: 'generic-gcc'
+          cc: 'gcc-13'
+          cxx: 'g++-13'
+      max_concurrency: 2
     steps:
     - uses: actions/checkout at v4
       with:
         fetch-depth: 5
-    - name: Create Paths
-      run: libcxx/utils/ci/run-buildbot generic-cxx26
+    - name: ${{ matrix.config }}
+      run: libcxx/utils/ci/run-buildbot ${{ matrix.config }}
       env:
-        CC: clang-18
-        CXX: clang++-18
-        CMAKE: /opt/bin/cmake
+        CC: ${{ matrix.cc }}
+        CXX: ${{ matrix.cxx }}

>From 0bd6d48c7330985fd8ae049dc6aba8c78c1d68af Mon Sep 17 00:00:00 2001
From: eric <eric at efcs.ca>
Date: Thu, 9 Nov 2023 15:51:12 -0500
Subject: [PATCH 04/20] attempt matrix

---
 .github/workflows/libcxx-example-workflow.yaml | 1 -
 1 file changed, 1 deletion(-)

diff --git a/.github/workflows/libcxx-example-workflow.yaml b/.github/workflows/libcxx-example-workflow.yaml
index 7d501b67ec601c3..45fd21eec20b880 100644
--- a/.github/workflows/libcxx-example-workflow.yaml
+++ b/.github/workflows/libcxx-example-workflow.yaml
@@ -18,7 +18,6 @@ jobs:
           config: 'generic-gcc'
           cc: 'gcc-13'
           cxx: 'g++-13'
-      max_concurrency: 2
     steps:
     - uses: actions/checkout at v4
       with:

>From 5d40ff3ec1a93429044f836fffc9309cee43ac09 Mon Sep 17 00:00:00 2001
From: eric <eric at efcs.ca>
Date: Thu, 9 Nov 2023 15:53:57 -0500
Subject: [PATCH 05/20] attempt matrix

---
 .github/workflows/libcxx-example-workflow.yaml | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/.github/workflows/libcxx-example-workflow.yaml b/.github/workflows/libcxx-example-workflow.yaml
index 45fd21eec20b880..d46e82e6ee18e60 100644
--- a/.github/workflows/libcxx-example-workflow.yaml
+++ b/.github/workflows/libcxx-example-workflow.yaml
@@ -1,8 +1,6 @@
 name: Build and Test libc++
 
 on: pull_request
-
-
 # Comment
 jobs:
   build_and_test:
@@ -15,9 +13,9 @@ jobs:
         cc: ['clang-18']
         cxx: ['clang++-18']
         include:
-          config: 'generic-gcc'
-          cc: 'gcc-13'
-          cxx: 'g++-13'
+          - config: 'generic-gcc'
+            cc: 'gcc-13'
+            cxx: 'g++-13'
     steps:
     - uses: actions/checkout at v4
       with:

>From 704d02208d72c7da09b600ba82cbb4ae729bd10c Mon Sep 17 00:00:00 2001
From: eric <eric at efcs.ca>
Date: Thu, 9 Nov 2023 16:01:38 -0500
Subject: [PATCH 06/20] attempt matrix

---
 .github/workflows/libcxx-example-workflow.yaml | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/.github/workflows/libcxx-example-workflow.yaml b/.github/workflows/libcxx-example-workflow.yaml
index d46e82e6ee18e60..0b037afd592acf2 100644
--- a/.github/workflows/libcxx-example-workflow.yaml
+++ b/.github/workflows/libcxx-example-workflow.yaml
@@ -1,6 +1,12 @@
 name: Build and Test libc++
 
 on: pull_request
+concurrency: ${{ github.user }}-libcxx
+
+
+concurrency:
+  group: ${{ github.workflow }}-${{ github.ref }}
+  cancel-in-progress: true
 # Comment
 jobs:
   build_and_test:
@@ -16,6 +22,9 @@ jobs:
           - config: 'generic-gcc'
             cc: 'gcc-13'
             cxx: 'g++-13'
+      concurrency:
+        group: ${{ github.sha }}-libcxx
+        cancel-in-progress: true
     steps:
     - uses: actions/checkout at v4
       with:

>From 03d5fbcb92508240a74a0a0824346775c0103431 Mon Sep 17 00:00:00 2001
From: eric <eric at efcs.ca>
Date: Thu, 9 Nov 2023 16:02:14 -0500
Subject: [PATCH 07/20] attempt matrix

---
 .github/workflows/libcxx-example-workflow.yaml | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/.github/workflows/libcxx-example-workflow.yaml b/.github/workflows/libcxx-example-workflow.yaml
index 0b037afd592acf2..c9ade624c9ac8ef 100644
--- a/.github/workflows/libcxx-example-workflow.yaml
+++ b/.github/workflows/libcxx-example-workflow.yaml
@@ -4,9 +4,6 @@ on: pull_request
 concurrency: ${{ github.user }}-libcxx
 
 
-concurrency:
-  group: ${{ github.workflow }}-${{ github.ref }}
-  cancel-in-progress: true
 # Comment
 jobs:
   build_and_test:

>From 43091cfd5186d8e77b52d6ae7c7ee0e530ce773a Mon Sep 17 00:00:00 2001
From: eric <eric at efcs.ca>
Date: Thu, 9 Nov 2023 16:02:44 -0500
Subject: [PATCH 08/20] attempt matrix

---
 .github/workflows/libcxx-example-workflow.yaml | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/.github/workflows/libcxx-example-workflow.yaml b/.github/workflows/libcxx-example-workflow.yaml
index c9ade624c9ac8ef..aa7df709b401f9a 100644
--- a/.github/workflows/libcxx-example-workflow.yaml
+++ b/.github/workflows/libcxx-example-workflow.yaml
@@ -19,9 +19,9 @@ jobs:
           - config: 'generic-gcc'
             cc: 'gcc-13'
             cxx: 'g++-13'
-      concurrency:
-        group: ${{ github.sha }}-libcxx
-        cancel-in-progress: true
+    concurrency:
+      group: ${{ github.sha }}-libcxx
+      cancel-in-progress: true
     steps:
     - uses: actions/checkout at v4
       with:

>From 763db7ccd63143f03694ae1b3cb2e8e8f667057e Mon Sep 17 00:00:00 2001
From: eric <eric at efcs.ca>
Date: Thu, 9 Nov 2023 16:05:11 -0500
Subject: [PATCH 09/20] attempt matrix

---
 .github/workflows/libcxx-example-workflow.yaml | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/.github/workflows/libcxx-example-workflow.yaml b/.github/workflows/libcxx-example-workflow.yaml
index aa7df709b401f9a..97c278c367c91b2 100644
--- a/.github/workflows/libcxx-example-workflow.yaml
+++ b/.github/workflows/libcxx-example-workflow.yaml
@@ -1,7 +1,7 @@
 name: Build and Test libc++
 
 on: pull_request
-concurrency: ${{ github.user }}-libcxx
+concurrency: ${{ github.user }}
 
 
 # Comment
@@ -21,7 +21,6 @@ jobs:
             cxx: 'g++-13'
     concurrency:
       group: ${{ github.sha }}-libcxx
-      cancel-in-progress: true
     steps:
     - uses: actions/checkout at v4
       with:

>From 4911b1406428aec8382ed87e81312626db037d7b Mon Sep 17 00:00:00 2001
From: eric <eric at efcs.ca>
Date: Thu, 9 Nov 2023 16:06:16 -0500
Subject: [PATCH 10/20] attempt matrix

---
 .github/workflows/libcxx-example-workflow.yaml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/libcxx-example-workflow.yaml b/.github/workflows/libcxx-example-workflow.yaml
index 97c278c367c91b2..bbb46b4456acce4 100644
--- a/.github/workflows/libcxx-example-workflow.yaml
+++ b/.github/workflows/libcxx-example-workflow.yaml
@@ -1,7 +1,7 @@
 name: Build and Test libc++
 
 on: pull_request
-concurrency: ${{ github.user }}
+concurrency: ${{ github.actor }}
 
 
 # Comment

>From 83d4e0ecf582abcde4712a444fd2deca3110bec7 Mon Sep 17 00:00:00 2001
From: eric <eric at efcs.ca>
Date: Thu, 9 Nov 2023 16:23:17 -0500
Subject: [PATCH 11/20] attempt matrix

---
 .github/workflows/libcxx-example-workflow.yaml | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/.github/workflows/libcxx-example-workflow.yaml b/.github/workflows/libcxx-example-workflow.yaml
index bbb46b4456acce4..8faab624b127f66 100644
--- a/.github/workflows/libcxx-example-workflow.yaml
+++ b/.github/workflows/libcxx-example-workflow.yaml
@@ -1,7 +1,7 @@
 name: Build and Test libc++
 
 on: pull_request
-concurrency: ${{ github.actor }}
+concurrency: ${{ github.actor }}-large-workflow
 
 
 # Comment
@@ -12,15 +12,26 @@ jobs:
     strategy:
       fail-fast: true
       matrix:
-        config: ['generic-cxx26', 'generic-cxx03', 'modules']
+        config: ['generic-cxx26', 'generic-cxx03', 'modules', 'generic-cxx11', 'generic-cxx14', 'generic-cxx17',
+                 'generic-cxx20', 'generic-cxx23', 'asan', 'msan', 'tsan', 'ubsan']
         cc: ['clang-18']
         cxx: ['clang++-18']
         include:
           - config: 'generic-gcc'
             cc: 'gcc-13'
             cxx: 'g++-13'
+          - config: 'generic-gcc-cxx11'
+            cc: 'gcc-13'
+            cxx: 'g++-13'
+          - config: 'generic-cxx23'
+            cc: 'clang-16'
+            cxx: 'clang++-16'
+          - config: 'generic-cxx23'
+            cc: 'clang-17'
+            cxx: 'clang++-17'
     concurrency:
       group: ${{ github.sha }}-libcxx
+    id: ${{ matrix.config }}-${{ matrix.cxx }}
     steps:
     - uses: actions/checkout at v4
       with:

>From c69f4e1124afc3d016839be15b8f6fccd4e5ac02 Mon Sep 17 00:00:00 2001
From: eric <eric at efcs.ca>
Date: Thu, 9 Nov 2023 16:32:32 -0500
Subject: [PATCH 12/20] rename

---
 .../workflows/libcxx-example-workflow.yaml    |   2 +-
 libcxx/utils/ci/actions-runner/Dockerfile     | 147 ++++++++++++++++++
 .../ci/actions-runner/docker-compose.yml      |   7 +
 3 files changed, 155 insertions(+), 1 deletion(-)
 create mode 100644 libcxx/utils/ci/actions-runner/Dockerfile
 create mode 100644 libcxx/utils/ci/actions-runner/docker-compose.yml

diff --git a/.github/workflows/libcxx-example-workflow.yaml b/.github/workflows/libcxx-example-workflow.yaml
index 8faab624b127f66..753b0cddf0f9701 100644
--- a/.github/workflows/libcxx-example-workflow.yaml
+++ b/.github/workflows/libcxx-example-workflow.yaml
@@ -12,7 +12,7 @@ jobs:
     strategy:
       fail-fast: true
       matrix:
-        config: ['generic-cxx26', 'generic-cxx03', 'modules', 'generic-cxx11', 'generic-cxx14', 'generic-cxx17',
+        config: ['generic-cxx26', 'generic-cxx03', 'generic-modules', 'generic-cxx11', 'generic-cxx14', 'generic-cxx17',
                  'generic-cxx20', 'generic-cxx23', 'asan', 'msan', 'tsan', 'ubsan']
         cc: ['clang-18']
         cxx: ['clang++-18']
diff --git a/libcxx/utils/ci/actions-runner/Dockerfile b/libcxx/utils/ci/actions-runner/Dockerfile
new file mode 100644
index 000000000000000..b2f38433cf415f8
--- /dev/null
+++ b/libcxx/utils/ci/actions-runner/Dockerfile
@@ -0,0 +1,147 @@
+#===----------------------------------------------------------------------===##
+#
+# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+# See https://llvm.org/LICENSE.txt for license information.
+# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+#
+#===----------------------------------------------------------------------===##
+
+#
+# This Dockerfile describes the base image used to run the various libc++
+# build bots. By default, the image runs the Buildkite Agent, however one
+# can also just start the image with a shell to debug CI failures.
+#
+# To start a Buildkite Agent, run it as:
+#   $ docker run --env-file <secrets> -it $(docker build -q libcxx/utils/ci)
+#
+# The environment variables in `<secrets>` should be the ones necessary
+# to run a BuildKite agent:
+#
+#   BUILDKITE_AGENT_TOKEN=<token>
+#
+# If you're only looking to run the Docker image locally for debugging a
+# build bot, see the `run-buildbot-container` script located in this directory.
+#
+# A pre-built version of this image is maintained on DockerHub as ldionne/libcxx-builder.
+# To update the image, rebuild it and push it to ldionne/libcxx-builder (which
+# will obviously only work if you have permission to do so).
+#
+#   $ docker build -t ldionne/libcxx-builder libcxx/utils/ci
+#   $ docker push ldionne/libcxx-builder
+#
+
+FROM ghcr.io/actions/actions-runner:latest AS OTHER
+ENV GCC_LATEST_VERSION=13
+
+# Make sure apt-get doesn't try to prompt for stuff like our time zone, etc.
+ENV DEBIAN_FRONTEND=noninteractive
+
+RUN sudo apt-get update  \
+    && sudo apt-get install -y --no-install-recommends \
+        apt-transport-https \
+        apt-utils \
+        bash \
+        build-essential \
+        ca-certificates \
+        ccache \
+        cmake \
+        curl \
+        g++ \
+        gdb \
+        git \
+        gnupg \
+        language-pack-en \
+        language-pack-fr \
+        language-pack-ja \
+        language-pack-ru \
+        language-pack-zh-hans \
+        libedit-dev \
+        libncurses5-dev \
+        libpython3-dev \
+        libxml2-dev \
+        lsb-release \
+        ninja-build \
+        python3 \
+        python3-dev \
+        python3-distutils \
+        python3-psutil \
+        python3-venv \
+        software-properties-common \
+        swig3.0 \
+        uuid-dev \
+        uuid-runtime \
+        wget \
+    && sudo rm -rf /var/lib/apt/lists/*
+
+RUN sudo add-apt-repository ppa:ubuntu-toolchain-r/test \
+    && sudo apt-get update \
+    && sudo apt-get install -y \
+        gcc-$GCC_LATEST_VERSION \
+        g++-$GCC_LATEST_VERSION \
+        gcc-$((GCC_LATEST_VERSION - 1)) \
+        g++-$((GCC_LATEST_VERSION - 1)) \
+    && sudo rm -rf /var/lib/apt/lists/*
+
+# Install various tools used by the build or the test suite
+#RUN apt-get update && apt-get install -y ninja-build python3 python3-distutils python3-psutil git gdb ccache
+# TODO add ninja-build once 1.11 is available in Ubuntu, also remove the manual installation.
+
+RUN <<EOF
+ sudo wget -qO /usr/local/bin/ninja.gz https://github.com/ninja-build/ninja/releases/latest/download/ninja-linux.zip
+ sudo gunzip /usr/local/bin/ninja.gz
+ sudo chmod a+x /usr/local/bin/ninja
+EOF
+
+# These two are not enabled by default so generate them
+RUN <<EOF
+  sudo printf "fr_CA ISO-8859-1\ncs_CZ ISO-8859-2" >> /etc/locale.gen
+  sudo mkdir /usr/local/share/i1en/
+  sudo printf "fr_CA ISO-8859-1\ncs_CZ ISO-8859-2" >> /usr/local/share/i1en/SUPPORTED
+  sudo locale-gen
+EOF
+
+# Install Clang <latest>, <latest-1> and ToT, which are the ones we support.
+# We also install <latest-2> because we need to support the "latest-1" of the
+# current LLVM release branch, which is effectively the <latest-2> of the
+# tip-of-trunk LLVM. For example, after branching LLVM 14 but before branching
+# 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.
+# LLVM POST-BRANCH bump version
+ENV LLVM_HEAD_VERSION=18
+
+RUN <<EOF
+  wget https://apt.llvm.org/llvm.sh -O /tmp/llvm.sh
+  sudo bash /tmp/llvm.sh $(($LLVM_HEAD_VERSION - 3)) all # for CI transitions
+  sudo bash /tmp/llvm.sh $(($LLVM_HEAD_VERSION - 2)) all # previous release
+  sudo bash /tmp/llvm.sh $(($LLVM_HEAD_VERSION - 1)) all # latest release
+  sudo bash /tmp/llvm.sh $LLVM_HEAD_VERSION          all # current ToT
+EOF
+
+# Install clang-scan-deps, which is required to build modules; always all supported versions.
+#RUN sudo apt-get update && sudo apt-get install -y clang-tools-$(($LLVM_HEAD_VERSION - 3)) \
+#                                         clang-tools-$(($LLVM_HEAD_VERSION - 2)) \
+#                                         clang-tools-$(($LLVM_HEAD_VERSION - 1)) \
+#                                         clang-tools-$LLVM_HEAD_VERSION \
+#     clang-format-$(($LLVM_HEAD_VERSION - 2)) clang-format-$(($LLVM_HEAD_VERSION - 1)) \
+#    clang-tidy-$(($LLVM_HEAD_VERSION - 2)) clang-tidy-$(($LLVM_HEAD_VERSION - 1)) clang-tidy-$LLVM_HEAD_VERSION \
+#    llvm-$(($LLVM_HEAD_VERSION - 2))-dev llvm-$(($LLVM_HEAD_VERSION - 1))-dev     llvm-$LLVM_HEAD_VERSION-dev \
+#                                     libclang-$(($LLVM_HEAD_VERSION - 2))-dev libclang-$(($LLVM_HEAD_VERSION - 1))-dev libclang-$LLVM_HEAD_VERSION-dev \
+#                                                                                                                       libomp5-$LLVM_HEAD_VERSION
+#
+# Install a newer CMake for modules
+# TODO Remove the duplicated installation when all runtimes can be build with CMake 3.28.
+RUN <<EOF
+  wget https://github.com/Kitware/CMake/releases/download/v3.21.1/cmake-3.21.1-linux-x86_64.sh -O /tmp/install-cmake.sh
+  sudo bash /tmp/install-cmake.sh --prefix=/usr --exclude-subdir --skip-license
+  rm /tmp/install-cmake.sh
+
+  wget https://github.com/Kitware/CMake/releases/download/v3.27.1/cmake-3.27.1-linux-x86_64.sh -O /tmp/install-cmake.sh
+  sudo bash /tmp/install-cmake.sh --prefix=/opt --exclude-subdir --skip-license
+  rm /tmp/install-cmake.sh
+
+  wget https://github.com/Kitware/CMake/releases/download/v3.28.0-rc4/cmake-3.28.0-rc4-linux-x86_64.sh -O /tmp/install-cmake.sh
+  sudo mkdir /opt/cmake-3.28
+  sudo bash /tmp/install-cmake.sh --prefix=/opt/cmake-3.28 --exclude-subdir --skip-license
+  rm /tmp/install-cmake.sh
+EOF
diff --git a/libcxx/utils/ci/actions-runner/docker-compose.yml b/libcxx/utils/ci/actions-runner/docker-compose.yml
new file mode 100644
index 000000000000000..824f77c6e73366d
--- /dev/null
+++ b/libcxx/utils/ci/actions-runner/docker-compose.yml
@@ -0,0 +1,7 @@
+version: '3.8'
+services:
+  libcxx-actions-runner:
+    build:
+      context: .
+      dockerfile: Dockerfile
+    image: ghcr.io/libcxx/libcxx-actions-runner:latest

>From df08610366d5e06817915ed7b77010c63dfc9aaa Mon Sep 17 00:00:00 2001
From: eric <eric at efcs.ca>
Date: Thu, 9 Nov 2023 16:39:11 -0500
Subject: [PATCH 13/20] rename

---
 .github/workflows/libcxx-example-workflow.yaml | 1 -
 1 file changed, 1 deletion(-)

diff --git a/.github/workflows/libcxx-example-workflow.yaml b/.github/workflows/libcxx-example-workflow.yaml
index 753b0cddf0f9701..ff7777cc2f38ec5 100644
--- a/.github/workflows/libcxx-example-workflow.yaml
+++ b/.github/workflows/libcxx-example-workflow.yaml
@@ -31,7 +31,6 @@ jobs:
             cxx: 'clang++-17'
     concurrency:
       group: ${{ github.sha }}-libcxx
-    id: ${{ matrix.config }}-${{ matrix.cxx }}
     steps:
     - uses: actions/checkout at v4
       with:

>From 5630ff1ee2034884d5a528d987513bc8e9a847fc Mon Sep 17 00:00:00 2001
From: eric <eric at efcs.ca>
Date: Thu, 9 Nov 2023 17:04:48 -0500
Subject: [PATCH 14/20] try steps

---
 .../workflows/libcxx-example-workflow.yaml    | 81 +++++++++++++++----
 1 file changed, 67 insertions(+), 14 deletions(-)

diff --git a/.github/workflows/libcxx-example-workflow.yaml b/.github/workflows/libcxx-example-workflow.yaml
index ff7777cc2f38ec5..5fb4a09e1448a9f 100644
--- a/.github/workflows/libcxx-example-workflow.yaml
+++ b/.github/workflows/libcxx-example-workflow.yaml
@@ -3,34 +3,26 @@ name: Build and Test libc++
 on: pull_request
 concurrency: ${{ github.actor }}-large-workflow
 
+permissions:
+  checks: write
+  pull-requests: write
 
 # Comment
 jobs:
-  build_and_test:
+  first_group:
     runs-on: libcxx-runners-large
     continue-on-error: false
     strategy:
       fail-fast: true
+      max-parallel: 1
       matrix:
-        config: ['generic-cxx26', 'generic-cxx03', 'generic-modules', 'generic-cxx11', 'generic-cxx14', 'generic-cxx17',
-                 'generic-cxx20', 'generic-cxx23', 'asan', 'msan', 'tsan', 'ubsan']
+        config: ['generic-cxx26', 'generic-cxx03', 'generic-modules']
         cc: ['clang-18']
         cxx: ['clang++-18']
         include:
           - config: 'generic-gcc'
             cc: 'gcc-13'
             cxx: 'g++-13'
-          - config: 'generic-gcc-cxx11'
-            cc: 'gcc-13'
-            cxx: 'g++-13'
-          - config: 'generic-cxx23'
-            cc: 'clang-16'
-            cxx: 'clang++-16'
-          - config: 'generic-cxx23'
-            cc: 'clang-17'
-            cxx: 'clang++-17'
-    concurrency:
-      group: ${{ github.sha }}-libcxx
     steps:
     - uses: actions/checkout at v4
       with:
@@ -40,3 +32,64 @@ jobs:
       env:
         CC: ${{ matrix.cc }}
         CXX: ${{ matrix.cxx }}
+  standards:
+    runs-on: libcxx-runners-large
+    continue-on-error: false
+    strategy:
+      fail-fast: true
+      max-parallel: 1
+      matrix:
+        config: [ 'generic-cxx11', 'generic-cxx14', 'generic-cxx17',
+                  'generic-cxx20', 'generic-cxx23' ]
+    steps:
+      - uses: actions/checkout at v4
+        with:
+          fetch-depth: 5
+      - name: ${{ matrix.config }}
+        run: libcxx/utils/ci/run-buildbot ${{ matrix.config }}
+        env:
+          CC: 'clang-18'
+          CXX: 'clang++-18'
+  sanitizers:
+    runs-on: libcxx-runners-large
+    continue-on-error: false
+    strategy:
+      fail-fast: true
+      max-parallel: 1
+      matrix:
+        config: [ 'asan', 'msan', 'tsan', 'ubsan' ]
+    steps:
+      - uses: actions/checkout at v4
+        with:
+          fetch-depth: 5
+      - name: ${{ matrix.config }}
+        run: libcxx/utils/ci/run-buildbot ${{ matrix.config }}
+        env:
+          CC: clang-18
+          CXX: clang++-18
+    legacy_compilers:
+      runs-on: libcxx-runners-large
+      continue-on-error: false
+      strategy:
+        fail-fast: true
+        max-parallel: 1
+        matrix:
+          include:
+            - config: 'generic-gcc-cxx11'
+              cc: 'gcc-13'
+              cxx: 'g++-13'
+            - config: 'generic-cxx23'
+              cc: 'clang-16'
+              cxx: 'clang++-16'
+            - config: 'generic-cxx23'
+              cc: 'clang-17'
+              cxx: 'clang++-17'
+      steps:
+        - uses: actions/checkout at v4
+          with:
+            fetch-depth: 5
+        - name: ${{ matrix.config }}
+          run: libcxx/utils/ci/run-buildbot ${{ matrix.config }}
+          env:
+            CC: ${{ matrix.cc }}
+            CXX: ${{ matrix.cxx }}

>From a50c3c00b4c69e0959b9d12dfb397eaf4db1d1ba Mon Sep 17 00:00:00 2001
From: eric <eric at efcs.ca>
Date: Thu, 9 Nov 2023 17:05:43 -0500
Subject: [PATCH 15/20] try steps

---
 .github/workflows/libcxx-example-workflow.yaml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/libcxx-example-workflow.yaml b/.github/workflows/libcxx-example-workflow.yaml
index 5fb4a09e1448a9f..cac246a6cebea39 100644
--- a/.github/workflows/libcxx-example-workflow.yaml
+++ b/.github/workflows/libcxx-example-workflow.yaml
@@ -57,7 +57,7 @@ jobs:
       fail-fast: true
       max-parallel: 1
       matrix:
-        config: [ 'asan', 'msan', 'tsan', 'ubsan' ]
+        config: [ 'generic-asan', 'generic-msan', 'generic-tsan', 'generic-ubsan' ]
     steps:
       - uses: actions/checkout at v4
         with:

>From bad01b3fdf001cc24e005cdc11cc0829e80ab864 Mon Sep 17 00:00:00 2001
From: eric <eric at efcs.ca>
Date: Thu, 9 Nov 2023 17:07:39 -0500
Subject: [PATCH 16/20] try steps

---
 .github/workflows/libcxx-example-workflow.yaml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/libcxx-example-workflow.yaml b/.github/workflows/libcxx-example-workflow.yaml
index cac246a6cebea39..fdaf6cdd986b9d1 100644
--- a/.github/workflows/libcxx-example-workflow.yaml
+++ b/.github/workflows/libcxx-example-workflow.yaml
@@ -67,7 +67,7 @@ jobs:
         env:
           CC: clang-18
           CXX: clang++-18
-    legacy_compilers:
+  legacy_compilers:
       runs-on: libcxx-runners-large
       continue-on-error: false
       strategy:

>From f6b3d15042371950aedd30205807204d3a660b1d Mon Sep 17 00:00:00 2001
From: eric <eric at efcs.ca>
Date: Thu, 9 Nov 2023 17:14:26 -0500
Subject: [PATCH 17/20] try again

---
 .github/workflows/libcxx-example-workflow.yaml | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/.github/workflows/libcxx-example-workflow.yaml b/.github/workflows/libcxx-example-workflow.yaml
index fdaf6cdd986b9d1..b821a80f95b0770 100644
--- a/.github/workflows/libcxx-example-workflow.yaml
+++ b/.github/workflows/libcxx-example-workflow.yaml
@@ -7,6 +7,9 @@ permissions:
   checks: write
   pull-requests: write
 
+env:
+  CMAKE: "/opt/bin/cmake"
+
 # Comment
 jobs:
   first_group:
@@ -34,6 +37,7 @@ jobs:
         CXX: ${{ matrix.cxx }}
   standards:
     runs-on: libcxx-runners-large
+    needs: first_group
     continue-on-error: false
     strategy:
       fail-fast: true

>From fa65f86141dbd4101f273402db68489d79a3d3a0 Mon Sep 17 00:00:00 2001
From: eric <eric at efcs.ca>
Date: Thu, 9 Nov 2023 17:16:51 -0500
Subject: [PATCH 18/20] try again

---
 .github/workflows/libcxx-example-workflow.yaml | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

diff --git a/.github/workflows/libcxx-example-workflow.yaml b/.github/workflows/libcxx-example-workflow.yaml
index b821a80f95b0770..fb664e23cc65c7d 100644
--- a/.github/workflows/libcxx-example-workflow.yaml
+++ b/.github/workflows/libcxx-example-workflow.yaml
@@ -1,7 +1,9 @@
 name: Build and Test libc++
 
 on: pull_request
-concurrency: ${{ github.actor }}-large-workflow
+concurrency:
+  group: ${{ github.workflow }}-${{ github.ref }}
+  cancel-in-progress: true
 
 permissions:
   checks: write
@@ -17,7 +19,7 @@ jobs:
     continue-on-error: false
     strategy:
       fail-fast: true
-      max-parallel: 1
+      max-parallel: 2
       matrix:
         config: ['generic-cxx26', 'generic-cxx03', 'generic-modules']
         cc: ['clang-18']
@@ -41,7 +43,7 @@ jobs:
     continue-on-error: false
     strategy:
       fail-fast: true
-      max-parallel: 1
+      max-parallel: 2
       matrix:
         config: [ 'generic-cxx11', 'generic-cxx14', 'generic-cxx17',
                   'generic-cxx20', 'generic-cxx23' ]
@@ -55,11 +57,12 @@ jobs:
           CC: 'clang-18'
           CXX: 'clang++-18'
   sanitizers:
-    runs-on: libcxx-runners-large
+    runs-on: libcxx-runners-small
+    needs: [ first_group, standards ]
     continue-on-error: false
     strategy:
       fail-fast: true
-      max-parallel: 1
+      max-parallel: 8
       matrix:
         config: [ 'generic-asan', 'generic-msan', 'generic-tsan', 'generic-ubsan' ]
     steps:
@@ -72,11 +75,11 @@ jobs:
           CC: clang-18
           CXX: clang++-18
   legacy_compilers:
-      runs-on: libcxx-runners-large
+      runs-on: libcxx-runners-small
       continue-on-error: false
       strategy:
         fail-fast: true
-        max-parallel: 1
+        max-parallel: 8
         matrix:
           include:
             - config: 'generic-gcc-cxx11'

>From c3c60c61a86c9b0ab39cc8ae377149fc789d5791 Mon Sep 17 00:00:00 2001
From: eric <eric at efcs.ca>
Date: Thu, 9 Nov 2023 17:23:23 -0500
Subject: [PATCH 19/20] fix

---
 .../workflows/libcxx-example-workflow.yaml    | 49 ++++++++++---------
 1 file changed, 25 insertions(+), 24 deletions(-)

diff --git a/.github/workflows/libcxx-example-workflow.yaml b/.github/workflows/libcxx-example-workflow.yaml
index fb664e23cc65c7d..77c72d131fa81ca 100644
--- a/.github/workflows/libcxx-example-workflow.yaml
+++ b/.github/workflows/libcxx-example-workflow.yaml
@@ -2,7 +2,7 @@ name: Build and Test libc++
 
 on: pull_request
 concurrency:
-  group: ${{ github.workflow }}-${{ github.ref }}
+  group: ${{ github.workflow }}-${{ github.event.pull_request.number }}
   cancel-in-progress: true
 
 permissions:
@@ -15,11 +15,11 @@ env:
 # Comment
 jobs:
   first_group:
-    runs-on: libcxx-runners-large
+    runs-on: libcxx-runners-small
     continue-on-error: false
     strategy:
       fail-fast: true
-      max-parallel: 2
+      max-parallel: 4
       matrix:
         config: ['generic-cxx26', 'generic-cxx03', 'generic-modules']
         cc: ['clang-18']
@@ -38,12 +38,12 @@ jobs:
         CC: ${{ matrix.cc }}
         CXX: ${{ matrix.cxx }}
   standards:
-    runs-on: libcxx-runners-large
+    runs-on: libcxx-runners-small
     needs: first_group
     continue-on-error: false
     strategy:
       fail-fast: true
-      max-parallel: 2
+      max-parallel: 4
       matrix:
         config: [ 'generic-cxx11', 'generic-cxx14', 'generic-cxx17',
                   'generic-cxx20', 'generic-cxx23' ]
@@ -56,30 +56,13 @@ jobs:
         env:
           CC: 'clang-18'
           CXX: 'clang++-18'
-  sanitizers:
-    runs-on: libcxx-runners-small
-    needs: [ first_group, standards ]
-    continue-on-error: false
-    strategy:
-      fail-fast: true
-      max-parallel: 8
-      matrix:
-        config: [ 'generic-asan', 'generic-msan', 'generic-tsan', 'generic-ubsan' ]
-    steps:
-      - uses: actions/checkout at v4
-        with:
-          fetch-depth: 5
-      - name: ${{ matrix.config }}
-        run: libcxx/utils/ci/run-buildbot ${{ matrix.config }}
-        env:
-          CC: clang-18
-          CXX: clang++-18
+
   legacy_compilers:
       runs-on: libcxx-runners-small
       continue-on-error: false
       strategy:
         fail-fast: true
-        max-parallel: 8
+        max-parallel: 4
         matrix:
           include:
             - config: 'generic-gcc-cxx11'
@@ -100,3 +83,21 @@ jobs:
           env:
             CC: ${{ matrix.cc }}
             CXX: ${{ matrix.cxx }}
+  sanitizers:
+    runs-on: libcxx-runners-small
+    needs: [ first_group, legacy_compilers, standards  ]
+    continue-on-error: false
+    strategy:
+      fail-fast: true
+      max-parallel: 4
+      matrix:
+        config: [ 'generic-asan', 'generic-msan', 'generic-tsan', 'generic-ubsan' ]
+    steps:
+      - uses: actions/checkout at v4
+        with:
+          fetch-depth: 5
+      - name: ${{ matrix.config }}
+        run: libcxx/utils/ci/run-buildbot ${{ matrix.config }}
+        env:
+          CC: clang-18
+          CXX: clang++-18

>From a62f64b84778602940d1316854720a24123beff0 Mon Sep 17 00:00:00 2001
From: eric <eric at efcs.ca>
Date: Thu, 9 Nov 2023 17:27:37 -0500
Subject: [PATCH 20/20] fix

---
 .../workflows/libcxx-example-workflow.yaml    | 48 +++++++++----------
 1 file changed, 24 insertions(+), 24 deletions(-)

diff --git a/.github/workflows/libcxx-example-workflow.yaml b/.github/workflows/libcxx-example-workflow.yaml
index 77c72d131fa81ca..1e3ecaf052ffdfc 100644
--- a/.github/workflows/libcxx-example-workflow.yaml
+++ b/.github/workflows/libcxx-example-workflow.yaml
@@ -14,7 +14,7 @@ env:
 
 # Comment
 jobs:
-  first_group:
+  sanity:
     runs-on: libcxx-runners-small
     continue-on-error: false
     strategy:
@@ -37,29 +37,10 @@ jobs:
       env:
         CC: ${{ matrix.cc }}
         CXX: ${{ matrix.cxx }}
-  standards:
-    runs-on: libcxx-runners-small
-    needs: first_group
-    continue-on-error: false
-    strategy:
-      fail-fast: true
-      max-parallel: 4
-      matrix:
-        config: [ 'generic-cxx11', 'generic-cxx14', 'generic-cxx17',
-                  'generic-cxx20', 'generic-cxx23' ]
-    steps:
-      - uses: actions/checkout at v4
-        with:
-          fetch-depth: 5
-      - name: ${{ matrix.config }}
-        run: libcxx/utils/ci/run-buildbot ${{ matrix.config }}
-        env:
-          CC: 'clang-18'
-          CXX: 'clang++-18'
-
-  legacy_compilers:
+  legacy:
       runs-on: libcxx-runners-small
       continue-on-error: false
+      needs: [ sanity ]
       strategy:
         fail-fast: true
         max-parallel: 4
@@ -83,13 +64,32 @@ jobs:
           env:
             CC: ${{ matrix.cc }}
             CXX: ${{ matrix.cxx }}
-  sanitizers:
+  standards:
     runs-on: libcxx-runners-small
-    needs: [ first_group, legacy_compilers, standards  ]
+    needs: [ sanity, legacy ]
     continue-on-error: false
     strategy:
       fail-fast: true
       max-parallel: 4
+      matrix:
+        config: [ 'generic-cxx11', 'generic-cxx14', 'generic-cxx17',
+                  'generic-cxx20', 'generic-cxx23' ]
+    steps:
+      - uses: actions/checkout at v4
+        with:
+          fetch-depth: 5
+      - name: ${{ matrix.config }}
+        run: libcxx/utils/ci/run-buildbot ${{ matrix.config }}
+        env:
+          CC: 'clang-18'
+          CXX: 'clang++-18'
+  sanitizers:
+    runs-on: libcxx-runners-large
+    needs: [ sanity, legacy, standards ]
+    continue-on-error: false
+    strategy:
+      fail-fast: true
+      max-parallel: 1
       matrix:
         config: [ 'generic-asan', 'generic-msan', 'generic-tsan', 'generic-ubsan' ]
     steps:



More information about the llvm-commits mailing list