ldionne created this revision.
Herald added subscribers: mstorsjo, arichardson.
Herald added a project: All.
ldionne requested review of this revision.
Herald added projects: clang, libc++.
Herald added subscribers: libcxx-commits, cfe-commits.
Herald added a reviewer: libc++.

Previously, we would trigger the usual libc++ CI pipeline if libc++ were
modified. If Clang was modified too, however, we would not trigger its
sub-pipeline. This change fixes that.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D141423

Files:
  clang/foo.txt
  libcxx/utils/ci/buildkite-pipeline-clang.yml
  libcxx/utils/ci/buildkite-pipeline.yml
  libcxx/utils/ci/generate-buildkite-pipeline

Index: libcxx/utils/ci/generate-buildkite-pipeline
===================================================================
--- libcxx/utils/ci/generate-buildkite-pipeline
+++ libcxx/utils/ci/generate-buildkite-pipeline
@@ -12,15 +12,17 @@
 #
 
 if git diff --name-only HEAD~1 | grep -q -E "^libcxx/|^libcxxabi/|^libunwind/|^runtimes/|^cmake/"; then
-  LIBCXX_CHANGED=true
+  cat <<EOF
+env:
+  - RUN_LIBCXX_PRECOMMIT: "true"
+EOF
 fi
 
 if git diff --name-only HEAD~1 | grep -q -E "^clang/"; then
-  CLANG_CHANGED=true
+  cat <<EOF
+env:
+  - RUN_CLANG_PRECOMMIT: "true"
+EOF
 fi
 
-if [[ "${CLANG_CHANGED}" == "true" && "${LIBCXX_CHANGED}" != "true" ]]; then
-  cat libcxx/utils/ci/buildkite-pipeline-clang.yml
-else
-  cat libcxx/utils/ci/buildkite-pipeline.yml
-fi
+cat libcxx/utils/ci/buildkite-pipeline.yml
Index: libcxx/utils/ci/buildkite-pipeline.yml
===================================================================
--- libcxx/utils/ci/buildkite-pipeline.yml
+++ libcxx/utils/ci/buildkite-pipeline.yml
@@ -27,265 +27,19 @@
     LLVM_HEAD_VERSION: "16"
     GCC_STABLE_VERSION: "12"
 steps:
-  #
-  # Light pre-commit tests for things like formatting or when people forget
-  # to update generated files.
-  #
-  - label: "Format"
-    command: "libcxx/utils/ci/run-buildbot check-format"
-    artifact_paths:
-      - "**/clang-format.patch"
-    env:
-        GIT_CLANG_FORMAT: "/usr/bin/git-clang-format-${LLVM_STABLE_VERSION}"
-    agents:
-      queue: "libcxx-builders"
-      os: "linux"
-    retry:
-      automatic:
-        - exit_status: -1  # Agent was lost
-          limit: 2
-    soft_fail:
-        - exit_status: 1
-    timeout_in_minutes: 120
-
-  - label: "Generated output"
-    command: "libcxx/utils/ci/run-buildbot check-generated-output"
-    artifact_paths:
-      - "**/generated_output.patch"
-      - "**/generated_output.status"
-    agents:
-      queue: "libcxx-builders"
-      os: "linux"
-    retry:
-      automatic:
-        - exit_status: -1  # Agent was lost
-          limit: 2
-    timeout_in_minutes: 120
-
-  - label: "Documentation"
-    command: "libcxx/utils/ci/run-buildbot documentation"
-    artifact_paths:
-      - "**/test-results.xml"
-    agents:
-      queue: "libcxx-builders"
-      os: "linux"
-    retry:
-      automatic:
-        - exit_status: -1  # Agent was lost
-          limit: 2
-    timeout_in_minutes: 120
-
-  #
-  # General testing with the default configuration, under all the supported
-  # Standard modes, with Clang and GCC. This catches most issues upfront.
-  # The goal of this step is to catch most issues while being very fast.
-  #
-  - wait
-
-  - label: "GCC ${GCC_STABLE_VERSION} / C++latest"
-    command: "libcxx/utils/ci/run-buildbot generic-gcc"
-    artifact_paths:
-      - "**/test-results.xml"
-      - "**/*.abilist"
-    env:
-        CC: "gcc-${GCC_STABLE_VERSION}"
-        CXX: "g++-${GCC_STABLE_VERSION}"
-    agents:
-      queue: "libcxx-builders"
-      os: "linux"
-    retry:
-      automatic:
-        - exit_status: -1  # Agent was lost
-          limit: 2
-    timeout_in_minutes: 120
-
-  - label: "C++2b"
-    command: "libcxx/utils/ci/run-buildbot generic-cxx2b"
-    artifact_paths:
-      - "**/test-results.xml"
-      - "**/*.abilist"
-    env:
-        CC: "clang-${LLVM_HEAD_VERSION}"
-        CXX: "clang++-${LLVM_HEAD_VERSION}"
-    agents:
-      queue: "libcxx-builders"
-      os: "linux"
-    retry:
-      automatic:
-        - exit_status: -1  # Agent was lost
-          limit: 2
-    timeout_in_minutes: 120
-
-  - label: "Modular build"
-    command: "libcxx/utils/ci/run-buildbot generic-modules"
-    artifact_paths:
-      - "**/test-results.xml"
-      - "**/*.abilist"
-    env:
-        CC: "clang-${LLVM_HEAD_VERSION}"
-        CXX: "clang++-${LLVM_HEAD_VERSION}"
-    agents:
-      queue: "libcxx-builders"
-      os: "linux"
-    retry:
-      automatic:
-        - exit_status: -1  # Agent was lost
-          limit: 2
-    timeout_in_minutes: 120
-
-  - label: "C++11"
-    command: "libcxx/utils/ci/run-buildbot generic-cxx11"
-    artifact_paths:
-      - "**/test-results.xml"
-      - "**/*.abilist"
-    env:
-        CC: "clang-${LLVM_HEAD_VERSION}"
-        CXX: "clang++-${LLVM_HEAD_VERSION}"
-    agents:
-      queue: "libcxx-builders"
-      os: "linux"
-    retry:
-      automatic:
-        - exit_status: -1  # Agent was lost
-          limit: 2
-    timeout_in_minutes: 120
-
-  - label: "C++03"
-    command: "libcxx/utils/ci/run-buildbot generic-cxx03"
-    artifact_paths:
-      - "**/test-results.xml"
-      - "**/*.abilist"
-    env:
-        CC: "clang-${LLVM_HEAD_VERSION}"
-        CXX: "clang++-${LLVM_HEAD_VERSION}"
-    agents:
-      queue: "libcxx-builders"
-      os: "linux"
-    retry:
-      automatic:
-        - exit_status: -1  # Agent was lost
-          limit: 2
-    timeout_in_minutes: 120
-
-  #
-  # All other supported configurations of libc++.
-  #
-  - wait
-
-  - label: "C++20"
-    command: "libcxx/utils/ci/run-buildbot generic-cxx20"
-    artifact_paths:
-      - "**/test-results.xml"
-      - "**/*.abilist"
-    env:
-        CC: "clang-${LLVM_HEAD_VERSION}"
-        CXX: "clang++-${LLVM_HEAD_VERSION}"
-    agents:
-      queue: "libcxx-builders"
-      os: "linux"
-    retry:
-      automatic:
-        - exit_status: -1  # Agent was lost
-          limit: 2
-    timeout_in_minutes: 120
-
-  - label: "C++17"
-    command: "libcxx/utils/ci/run-buildbot generic-cxx17"
-    artifact_paths:
-      - "**/test-results.xml"
-      - "**/*.abilist"
-    env:
-        CC: "clang-${LLVM_HEAD_VERSION}"
-        CXX: "clang++-${LLVM_HEAD_VERSION}"
-    agents:
-      queue: "libcxx-builders"
-      os: "linux"
-    retry:
-      automatic:
-        - exit_status: -1  # Agent was lost
-          limit: 2
-    timeout_in_minutes: 120
-
-  - label: "C++14"
-    command: "libcxx/utils/ci/run-buildbot generic-cxx14"
-    artifact_paths:
-      - "**/test-results.xml"
-      - "**/*.abilist"
-    env:
-        CC: "clang-${LLVM_HEAD_VERSION}"
-        CXX: "clang++-${LLVM_HEAD_VERSION}"
-    agents:
-      queue: "libcxx-builders"
-      os: "linux"
-    retry:
-      automatic:
-        - exit_status: -1  # Agent was lost
-          limit: 2
-    timeout_in_minutes: 120
-
-  # Tests with the supported compilers.
-  - label: "GCC ${GCC_STABLE_VERSION} / C++11"
-    command: "libcxx/utils/ci/run-buildbot generic-gcc-cxx11"
-    artifact_paths:
-      - "**/test-results.xml"
-      - "**/*.abilist"
-    env:
-        CC: "gcc-${GCC_STABLE_VERSION}"
-        CXX: "g++-${GCC_STABLE_VERSION}"
-    agents:
-      queue: "libcxx-builders"
-      os: "linux"
-    retry:
-      automatic:
-        - exit_status: -1  # Agent was lost
-          limit: 2
-    timeout_in_minutes: 120
-
-  - label: "Clang 14"
-    command: "libcxx/utils/ci/run-buildbot generic-cxx2b"
-    artifact_paths:
-      - "**/test-results.xml"
-      - "**/*.abilist"
-    env:
-        CC: "clang-14"
-        CXX: "clang++-14"
-    agents:
-      queue: "libcxx-builders"
-      os: "linux"
-    retry:
-      automatic:
-        - exit_status: -1  # Agent was lost
-          limit: 2
-    timeout_in_minutes: 120
-
-  - label: "Clang 15"
-    command: "libcxx/utils/ci/run-buildbot generic-cxx2b"
-    artifact_paths:
-      - "**/test-results.xml"
-      - "**/*.abilist"
-    env:
-        CC: "clang-15"
-        CXX: "clang++-15"
-    agents:
-      queue: "libcxx-builders"
-      os: "linux"
-    retry:
-      automatic:
-        - exit_status: -1  # Agent was lost
-          limit: 2
-    timeout_in_minutes: 120
-
-  # Tests with the sanitizers.
-  - group: "Sanitizers"
-    steps:
-    - label: "ASAN"
-      command: "libcxx/utils/ci/run-buildbot generic-asan"
+- group: "Running normal libc++ pre-commit CI"
+  if: "build.env('RUN_LIBCXX_PRECOMMIT') != null"
+  steps:
+    #
+    # Light pre-commit tests for things like formatting or when people forget
+    # to update generated files.
+    #
+    - label: "Format"
+      command: "libcxx/utils/ci/run-buildbot check-format"
       artifact_paths:
-        - "**/test-results.xml"
-        - "**/*.abilist"
+        - "**/clang-format.patch"
       env:
-          CC: "clang-${LLVM_HEAD_VERSION}"
-          CXX: "clang++-${LLVM_HEAD_VERSION}"
+          GIT_CLANG_FORMAT: "/usr/bin/git-clang-format-${LLVM_STABLE_VERSION}"
       agents:
         queue: "libcxx-builders"
         os: "linux"
@@ -293,16 +47,15 @@
         automatic:
           - exit_status: -1  # Agent was lost
             limit: 2
+      soft_fail:
+          - exit_status: 1
       timeout_in_minutes: 120
 
-    - label: "TSAN"
-      command: "libcxx/utils/ci/run-buildbot generic-tsan"
+    - label: "Generated output"
+      command: "libcxx/utils/ci/run-buildbot check-generated-output"
       artifact_paths:
-        - "**/test-results.xml"
-        - "**/*.abilist"
-      env:
-          CC: "clang-${LLVM_HEAD_VERSION}"
-          CXX: "clang++-${LLVM_HEAD_VERSION}"
+        - "**/generated_output.patch"
+        - "**/generated_output.status"
       agents:
         queue: "libcxx-builders"
         os: "linux"
@@ -312,14 +65,10 @@
             limit: 2
       timeout_in_minutes: 120
 
-    - label: "UBSAN"
-      command: "libcxx/utils/ci/run-buildbot generic-ubsan"
+    - label: "Documentation"
+      command: "libcxx/utils/ci/run-buildbot documentation"
       artifact_paths:
         - "**/test-results.xml"
-        - "**/*.abilist"
-      env:
-          CC: "clang-${LLVM_HEAD_VERSION}"
-          CXX: "clang++-${LLVM_HEAD_VERSION}"
       agents:
         queue: "libcxx-builders"
         os: "linux"
@@ -329,14 +78,21 @@
             limit: 2
       timeout_in_minutes: 120
 
-    - label: "MSAN"
-      command: "libcxx/utils/ci/run-buildbot generic-msan"
+    #
+    # General testing with the default configuration, under all the supported
+    # Standard modes, with Clang and GCC. This catches most issues upfront.
+    # The goal of this step is to catch most issues while being very fast.
+    #
+    - wait
+
+    - label: "GCC ${GCC_STABLE_VERSION} / C++latest"
+      command: "libcxx/utils/ci/run-buildbot generic-gcc"
       artifact_paths:
         - "**/test-results.xml"
         - "**/*.abilist"
       env:
-          CC: "clang-${LLVM_HEAD_VERSION}"
-          CXX: "clang++-${LLVM_HEAD_VERSION}"
+          CC: "gcc-${GCC_STABLE_VERSION}"
+          CXX: "g++-${GCC_STABLE_VERSION}"
       agents:
         queue: "libcxx-builders"
         os: "linux"
@@ -346,134 +102,8 @@
             limit: 2
       timeout_in_minutes: 120
 
-  # Tests with the various supported ways to build libc++.
-  - label: "Bootstrapping build"
-    command: "libcxx/utils/ci/run-buildbot bootstrapping-build"
-    artifact_paths:
-      - "**/test-results.xml"
-      - "**/*.abilist"
-      - "**/crash_diagnostics/*"
-    env:
-        CC: "clang-${LLVM_HEAD_VERSION}"
-        CXX: "clang++-${LLVM_HEAD_VERSION}"
-        LLVM_SYMBOLIZER_PATH: "/usr/bin/llvm-symbolizer-${LLVM_HEAD_VERSION}"
-        CLANG_CRASH_DIAGNOSTICS_DIR: "crash_diagnostics"
-    agents:
-      queue: "libcxx-builders"
-      os: "linux"
-    retry:
-      automatic:
-        - exit_status: -1  # Agent was lost
-          limit: 2
-    timeout_in_minutes: 120
-
-  # Tests with various build configurations.
-  - label: "Static libraries"
-    command: "libcxx/utils/ci/run-buildbot generic-static"
-    artifact_paths:
-      - "**/test-results.xml"
-      - "**/*.abilist"
-    env:
-        CC: "clang-${LLVM_HEAD_VERSION}"
-        CXX: "clang++-${LLVM_HEAD_VERSION}"
-    agents:
-      queue: "libcxx-builders"
-      os: "linux"
-    retry:
-      automatic:
-        - exit_status: -1  # Agent was lost
-          limit: 2
-    timeout_in_minutes: 120
-
-  - label: "Shared library with merged ABI and unwinder libraries"
-    command: "libcxx/utils/ci/run-buildbot generic-merged"
-    artifact_paths:
-      - "**/test-results.xml"
-      - "**/*.abilist"
-    env:
-        CC: "clang-${LLVM_HEAD_VERSION}"
-        CXX: "clang++-${LLVM_HEAD_VERSION}"
-    agents:
-      queue: "libcxx-builders"
-      os: "linux"
-    retry:
-      automatic:
-        - exit_status: -1  # Agent was lost
-          limit: 2
-    timeout_in_minutes: 120
-
-  - label: "Assertions enabled"
-    command: "libcxx/utils/ci/run-buildbot generic-assertions"
-    artifact_paths:
-      - "**/test-results.xml"
-      - "**/*.abilist"
-    env:
-        CC: "clang-${LLVM_HEAD_VERSION}"
-        CXX: "clang++-${LLVM_HEAD_VERSION}"
-    agents:
-      queue: "libcxx-builders"
-      os: "linux"
-    retry:
-      automatic:
-        - exit_status: -1  # Agent was lost
-          limit: 2
-    timeout_in_minutes: 120
-
-  - label: "Debug mode"
-    command: "libcxx/utils/ci/run-buildbot generic-debug-mode"
-    artifact_paths:
-      - "**/test-results.xml"
-      - "**/*.abilist"
-    env:
-        CC: "clang-${LLVM_HEAD_VERSION}"
-        CXX: "clang++-${LLVM_HEAD_VERSION}"
-    agents:
-      queue: "libcxx-builders"
-      os: "linux"
-    retry:
-      automatic:
-        - exit_status: -1  # Agent was lost
-          limit: 2
-    timeout_in_minutes: 120
-
-  - label: "No transitive includes"
-    command: "libcxx/utils/ci/run-buildbot generic-no-transitive-includes"
-    artifact_paths:
-      - "**/test-results.xml"
-      - "**/*.abilist"
-    env:
-        CC: "clang-${LLVM_HEAD_VERSION}"
-        CXX: "clang++-${LLVM_HEAD_VERSION}"
-    agents:
-      queue: "libcxx-builders"
-      os: "linux"
-    retry:
-      automatic:
-        - exit_status: -1  # Agent was lost
-          limit: 2
-    timeout_in_minutes: 120
-
-  - label: "With LLVM's libunwind"
-    command: "libcxx/utils/ci/run-buildbot generic-with_llvm_unwinder"
-    artifact_paths:
-      - "**/test-results.xml"
-      - "**/*.abilist"
-    env:
-        CC: "clang-${LLVM_HEAD_VERSION}"
-        CXX: "clang++-${LLVM_HEAD_VERSION}"
-    agents:
-      queue: "libcxx-builders"
-      os: "linux"
-    retry:
-      automatic:
-        - exit_status: -1  # Agent was lost
-          limit: 2
-    timeout_in_minutes: 120
-
-  - group: "Parts disabled"
-    steps:
-    - label: "No threads"
-      command: "libcxx/utils/ci/run-buildbot generic-no-threads"
+    - label: "C++2b"
+      command: "libcxx/utils/ci/run-buildbot generic-cxx2b"
       artifact_paths:
         - "**/test-results.xml"
         - "**/*.abilist"
@@ -489,8 +119,8 @@
             limit: 2
       timeout_in_minutes: 120
 
-    - label: "No filesystem"
-      command: "libcxx/utils/ci/run-buildbot generic-no-filesystem"
+    - label: "Modular build"
+      command: "libcxx/utils/ci/run-buildbot generic-modules"
       artifact_paths:
         - "**/test-results.xml"
         - "**/*.abilist"
@@ -506,8 +136,8 @@
             limit: 2
       timeout_in_minutes: 120
 
-    - label: "No random device"
-      command: "libcxx/utils/ci/run-buildbot generic-no-random_device"
+    - label: "C++11"
+      command: "libcxx/utils/ci/run-buildbot generic-cxx11"
       artifact_paths:
         - "**/test-results.xml"
         - "**/*.abilist"
@@ -523,8 +153,8 @@
             limit: 2
       timeout_in_minutes: 120
 
-    - label: "No fstream"
-      command: "libcxx/utils/ci/run-buildbot generic-no-fstream"
+    - label: "C++03"
+      command: "libcxx/utils/ci/run-buildbot generic-cxx03"
       artifact_paths:
         - "**/test-results.xml"
         - "**/*.abilist"
@@ -540,8 +170,13 @@
             limit: 2
       timeout_in_minutes: 120
 
-    - label: "No locale"
-      command: "libcxx/utils/ci/run-buildbot generic-no-localization"
+    #
+    # All other supported configurations of libc++.
+    #
+    - wait
+
+    - label: "C++20"
+      command: "libcxx/utils/ci/run-buildbot generic-cxx20"
       artifact_paths:
         - "**/test-results.xml"
         - "**/*.abilist"
@@ -557,8 +192,8 @@
             limit: 2
       timeout_in_minutes: 120
 
-    - label: "No Unicode"
-      command: "libcxx/utils/ci/run-buildbot generic-no-unicode"
+    - label: "C++17"
+      command: "libcxx/utils/ci/run-buildbot generic-cxx17"
       artifact_paths:
         - "**/test-results.xml"
         - "**/*.abilist"
@@ -574,8 +209,8 @@
             limit: 2
       timeout_in_minutes: 120
 
-    - label: "No wide characters"
-      command: "libcxx/utils/ci/run-buildbot generic-no-wide-characters"
+    - label: "C++14"
+      command: "libcxx/utils/ci/run-buildbot generic-cxx14"
       artifact_paths:
         - "**/test-results.xml"
         - "**/*.abilist"
@@ -591,14 +226,15 @@
             limit: 2
       timeout_in_minutes: 120
 
-    - label: "No experimental features"
-      command: "libcxx/utils/ci/run-buildbot generic-no-experimental"
+    # Tests with the supported compilers.
+    - label: "GCC ${GCC_STABLE_VERSION} / C++11"
+      command: "libcxx/utils/ci/run-buildbot generic-gcc-cxx11"
       artifact_paths:
         - "**/test-results.xml"
         - "**/*.abilist"
       env:
-          CC: "clang-${LLVM_HEAD_VERSION}"
-          CXX: "clang++-${LLVM_HEAD_VERSION}"
+          CC: "gcc-${GCC_STABLE_VERSION}"
+          CXX: "g++-${GCC_STABLE_VERSION}"
       agents:
         queue: "libcxx-builders"
         os: "linux"
@@ -608,14 +244,14 @@
             limit: 2
       timeout_in_minutes: 120
 
-    - label: "No exceptions"
-      command: "libcxx/utils/ci/run-buildbot generic-noexceptions"
+    - label: "Clang 14"
+      command: "libcxx/utils/ci/run-buildbot generic-cxx2b"
       artifact_paths:
         - "**/test-results.xml"
         - "**/*.abilist"
       env:
-          CC: "clang-${LLVM_HEAD_VERSION}"
-          CXX: "clang++-${LLVM_HEAD_VERSION}"
+          CC: "clang-14"
+          CXX: "clang++-14"
       agents:
         queue: "libcxx-builders"
         os: "linux"
@@ -625,347 +261,810 @@
             limit: 2
       timeout_in_minutes: 120
 
-  - label: "Unstable ABI"
-    command: "libcxx/utils/ci/run-buildbot generic-abi-unstable"
-    artifact_paths:
-      - "**/test-results.xml"
-      - "**/*.abilist"
-    env:
-        CC: "clang-${LLVM_HEAD_VERSION}"
-        CXX: "clang++-${LLVM_HEAD_VERSION}"
-    agents:
-      queue: "libcxx-builders"
-      os: "linux"
-    retry:
-      automatic:
-        - exit_status: -1  # Agent was lost
-          limit: 2
-    timeout_in_minutes: 120
-
-  # Other non-testing CI jobs
-  - label: "Benchmarks"
-    command: "libcxx/utils/ci/run-buildbot benchmarks"
-    artifact_paths:
-      - "**/test-results.xml"
-      - "**/*.abilist"
-    env:
-        CC: "clang-${LLVM_HEAD_VERSION}"
-        CXX: "clang++-${LLVM_HEAD_VERSION}"
-    agents:
-      queue: "libcxx-builders"
-      os: "linux"
-    retry:
-      automatic:
-        - exit_status: -1  # Agent was lost
-          limit: 2
-    timeout_in_minutes: 120
-
-  # Tests on non-Unix platforms
-  - group: ":windows: Windows"
-    steps:
-    - label: "Clang-cl (DLL)"
-      command: "bash libcxx/utils/ci/run-buildbot clang-cl-dll"
+    - label: "Clang 15"
+      command: "libcxx/utils/ci/run-buildbot generic-cxx2b"
       artifact_paths:
         - "**/test-results.xml"
         - "**/*.abilist"
+      env:
+          CC: "clang-15"
+          CXX: "clang++-15"
       agents:
-        queue: "windows"
+        queue: "libcxx-builders"
+        os: "linux"
       retry:
         automatic:
           - exit_status: -1  # Agent was lost
             limit: 2
       timeout_in_minutes: 120
 
-    - label: "Clang-cl (Static)"
-      command: "bash libcxx/utils/ci/run-buildbot clang-cl-static"
-      artifact_paths:
-        - "**/test-results.xml"
-        - "**/*.abilist"
-      agents:
-        queue: "windows"
-      retry:
-        automatic:
-          - exit_status: -1  # Agent was lost
-            limit: 2
-      timeout_in_minutes: 120
+    # Tests with the sanitizers.
+    - group: "Sanitizers"
+      steps:
+      - label: "ASAN"
+        command: "libcxx/utils/ci/run-buildbot generic-asan"
+        artifact_paths:
+          - "**/test-results.xml"
+          - "**/*.abilist"
+        env:
+            CC: "clang-${LLVM_HEAD_VERSION}"
+            CXX: "clang++-${LLVM_HEAD_VERSION}"
+        agents:
+          queue: "libcxx-builders"
+          os: "linux"
+        retry:
+          automatic:
+            - exit_status: -1  # Agent was lost
+              limit: 2
+        timeout_in_minutes: 120
 
-    - label: "Clang-cl (no vcruntime exceptions)"
-      command: "bash libcxx/utils/ci/run-buildbot clang-cl-no-vcruntime"
-      artifact_paths:
-        - "**/test-results.xml"
-        - "**/*.abilist"
-      agents:
-        queue: "windows"
-      retry:
-        automatic:
-          - exit_status: -1  # Agent was lost
-            limit: 2
+      - label: "TSAN"
+        command: "libcxx/utils/ci/run-buildbot generic-tsan"
+        artifact_paths:
+          - "**/test-results.xml"
+          - "**/*.abilist"
+        env:
+            CC: "clang-${LLVM_HEAD_VERSION}"
+            CXX: "clang++-${LLVM_HEAD_VERSION}"
+        agents:
+          queue: "libcxx-builders"
+          os: "linux"
+        retry:
+          automatic:
+            - exit_status: -1  # Agent was lost
+              limit: 2
+        timeout_in_minutes: 120
 
-    - label: "MinGW (DLL, x86_64)"
-      command: "bash libcxx/utils/ci/run-buildbot mingw-dll"
-      artifact_paths:
-        - "**/test-results.xml"
-        - "**/*.abilist"
-      agents:
-        queue: "windows"
-      retry:
-        automatic:
-          - exit_status: -1  # Agent was lost
-            limit: 2
-      timeout_in_minutes: 120
+      - label: "UBSAN"
+        command: "libcxx/utils/ci/run-buildbot generic-ubsan"
+        artifact_paths:
+          - "**/test-results.xml"
+          - "**/*.abilist"
+        env:
+            CC: "clang-${LLVM_HEAD_VERSION}"
+            CXX: "clang++-${LLVM_HEAD_VERSION}"
+        agents:
+          queue: "libcxx-builders"
+          os: "linux"
+        retry:
+          automatic:
+            - exit_status: -1  # Agent was lost
+              limit: 2
+        timeout_in_minutes: 120
 
-    - label: "MinGW (Static, x86_64)"
-      command: "bash libcxx/utils/ci/run-buildbot mingw-static"
-      artifact_paths:
-        - "**/test-results.xml"
-        - "**/*.abilist"
-      agents:
-        queue: "windows"
-      retry:
-        automatic:
-          - exit_status: -1  # Agent was lost
-            limit: 2
-      timeout_in_minutes: 120
+      - label: "MSAN"
+        command: "libcxx/utils/ci/run-buildbot generic-msan"
+        artifact_paths:
+          - "**/test-results.xml"
+          - "**/*.abilist"
+        env:
+            CC: "clang-${LLVM_HEAD_VERSION}"
+            CXX: "clang++-${LLVM_HEAD_VERSION}"
+        agents:
+          queue: "libcxx-builders"
+          os: "linux"
+        retry:
+          automatic:
+            - exit_status: -1  # Agent was lost
+              limit: 2
+        timeout_in_minutes: 120
 
-    - label: "MinGW (DLL, i686)"
-      command: "bash libcxx/utils/ci/run-buildbot mingw-dll-i686"
+    # Tests with the various supported ways to build libc++.
+    - label: "Bootstrapping build"
+      command: "libcxx/utils/ci/run-buildbot bootstrapping-build"
       artifact_paths:
         - "**/test-results.xml"
         - "**/*.abilist"
+        - "**/crash_diagnostics/*"
+      env:
+          CC: "clang-${LLVM_HEAD_VERSION}"
+          CXX: "clang++-${LLVM_HEAD_VERSION}"
+          LLVM_SYMBOLIZER_PATH: "/usr/bin/llvm-symbolizer-${LLVM_HEAD_VERSION}"
+          CLANG_CRASH_DIAGNOSTICS_DIR: "crash_diagnostics"
       agents:
-        queue: "windows"
+        queue: "libcxx-builders"
+        os: "linux"
       retry:
         automatic:
           - exit_status: -1  # Agent was lost
             limit: 2
       timeout_in_minutes: 120
 
-  - group: ":apple: Apple"
-    steps:
-    - label: "MacOS x86_64"
-      command: "libcxx/utils/ci/run-buildbot apple-cxx20"
+    # Tests with various build configurations.
+    - label: "Static libraries"
+      command: "libcxx/utils/ci/run-buildbot generic-static"
       artifact_paths:
         - "**/test-results.xml"
         - "**/*.abilist"
+      env:
+          CC: "clang-${LLVM_HEAD_VERSION}"
+          CXX: "clang++-${LLVM_HEAD_VERSION}"
       agents:
         queue: "libcxx-builders"
-        os: "macos"
-        arch: "x86_64"
+        os: "linux"
       retry:
         automatic:
           - exit_status: -1  # Agent was lost
             limit: 2
       timeout_in_minutes: 120
 
-    - label: "MacOS arm64"
-      command: "libcxx/utils/ci/run-buildbot apple-cxx20"
+    - label: "Shared library with merged ABI and unwinder libraries"
+      command: "libcxx/utils/ci/run-buildbot generic-merged"
       artifact_paths:
         - "**/test-results.xml"
         - "**/*.abilist"
+      env:
+          CC: "clang-${LLVM_HEAD_VERSION}"
+          CXX: "clang++-${LLVM_HEAD_VERSION}"
       agents:
         queue: "libcxx-builders"
-        os: "macos"
-        arch: "arm64"
+        os: "linux"
       retry:
         automatic:
           - exit_status: -1  # Agent was lost
             limit: 2
       timeout_in_minutes: 120
 
-    # Build with the configuration we use to generate libc++.dylib on Apple platforms
-    - label: "Apple system"
-      command: "libcxx/utils/ci/run-buildbot apple-system"
+    - label: "Assertions enabled"
+      command: "libcxx/utils/ci/run-buildbot generic-assertions"
       artifact_paths:
         - "**/test-results.xml"
         - "**/*.abilist"
+      env:
+          CC: "clang-${LLVM_HEAD_VERSION}"
+          CXX: "clang++-${LLVM_HEAD_VERSION}"
       agents:
         queue: "libcxx-builders"
-        os: "macos"
-        arch: "arm64" # This can technically run on any architecture, but we have more resources on arm64 so we pin this job to arm64
+        os: "linux"
       retry:
         automatic:
           - exit_status: -1  # Agent was lost
             limit: 2
       timeout_in_minutes: 120
 
-    # Test back-deployment to older Apple platforms
-    - label: "Apple back-deployment macosx10.9"
-      command: "libcxx/utils/ci/run-buildbot apple-system-backdeployment-10.9"
+    - label: "Debug mode"
+      command: "libcxx/utils/ci/run-buildbot generic-debug-mode"
       artifact_paths:
         - "**/test-results.xml"
         - "**/*.abilist"
+      env:
+          CC: "clang-${LLVM_HEAD_VERSION}"
+          CXX: "clang++-${LLVM_HEAD_VERSION}"
       agents:
         queue: "libcxx-builders"
-        os: "macos"
-        arch: "x86_64" # We need to use x86_64 for back-deployment CI on this target since macOS didn't support arm64 back then.
+        os: "linux"
       retry:
         automatic:
           - exit_status: -1  # Agent was lost
             limit: 2
       timeout_in_minutes: 120
 
-    - label: "Apple back-deployment macosx10.15"
-      command: "libcxx/utils/ci/run-buildbot apple-system-backdeployment-10.15"
+    - label: "No transitive includes"
+      command: "libcxx/utils/ci/run-buildbot generic-no-transitive-includes"
       artifact_paths:
         - "**/test-results.xml"
         - "**/*.abilist"
+      env:
+          CC: "clang-${LLVM_HEAD_VERSION}"
+          CXX: "clang++-${LLVM_HEAD_VERSION}"
       agents:
         queue: "libcxx-builders"
-        os: "macos"
-        arch: "x86_64" # We need to use x86_64 for back-deployment CI on this target since macOS didn't support arm64 back then.
+        os: "linux"
       retry:
         automatic:
           - exit_status: -1  # Agent was lost
             limit: 2
       timeout_in_minutes: 120
 
-    - label: "Apple back-deployment macosx11.0 arm64"
-      command: "libcxx/utils/ci/run-buildbot apple-system-backdeployment-11.0"
+    - label: "With LLVM's libunwind"
+      command: "libcxx/utils/ci/run-buildbot generic-with_llvm_unwinder"
       artifact_paths:
         - "**/test-results.xml"
         - "**/*.abilist"
+      env:
+          CC: "clang-${LLVM_HEAD_VERSION}"
+          CXX: "clang++-${LLVM_HEAD_VERSION}"
       agents:
         queue: "libcxx-builders"
-        os: "macos"
-        arch: "arm64"
+        os: "linux"
       retry:
         automatic:
           - exit_status: -1  # Agent was lost
             limit: 2
       timeout_in_minutes: 120
 
-    - label: "Apple back-deployment with assertions enabled"
-      command: "libcxx/utils/ci/run-buildbot apple-system-backdeployment-assertions-11.0"
+    - group: "Parts disabled"
+      steps:
+      - label: "No threads"
+        command: "libcxx/utils/ci/run-buildbot generic-no-threads"
+        artifact_paths:
+          - "**/test-results.xml"
+          - "**/*.abilist"
+        env:
+            CC: "clang-${LLVM_HEAD_VERSION}"
+            CXX: "clang++-${LLVM_HEAD_VERSION}"
+        agents:
+          queue: "libcxx-builders"
+          os: "linux"
+        retry:
+          automatic:
+            - exit_status: -1  # Agent was lost
+              limit: 2
+        timeout_in_minutes: 120
+
+      - label: "No filesystem"
+        command: "libcxx/utils/ci/run-buildbot generic-no-filesystem"
+        artifact_paths:
+          - "**/test-results.xml"
+          - "**/*.abilist"
+        env:
+            CC: "clang-${LLVM_HEAD_VERSION}"
+            CXX: "clang++-${LLVM_HEAD_VERSION}"
+        agents:
+          queue: "libcxx-builders"
+          os: "linux"
+        retry:
+          automatic:
+            - exit_status: -1  # Agent was lost
+              limit: 2
+        timeout_in_minutes: 120
+
+      - label: "No random device"
+        command: "libcxx/utils/ci/run-buildbot generic-no-random_device"
+        artifact_paths:
+          - "**/test-results.xml"
+          - "**/*.abilist"
+        env:
+            CC: "clang-${LLVM_HEAD_VERSION}"
+            CXX: "clang++-${LLVM_HEAD_VERSION}"
+        agents:
+          queue: "libcxx-builders"
+          os: "linux"
+        retry:
+          automatic:
+            - exit_status: -1  # Agent was lost
+              limit: 2
+        timeout_in_minutes: 120
+
+      - label: "No fstream"
+        command: "libcxx/utils/ci/run-buildbot generic-no-fstream"
+        artifact_paths:
+          - "**/test-results.xml"
+          - "**/*.abilist"
+        env:
+            CC: "clang-${LLVM_HEAD_VERSION}"
+            CXX: "clang++-${LLVM_HEAD_VERSION}"
+        agents:
+          queue: "libcxx-builders"
+          os: "linux"
+        retry:
+          automatic:
+            - exit_status: -1  # Agent was lost
+              limit: 2
+        timeout_in_minutes: 120
+
+      - label: "No locale"
+        command: "libcxx/utils/ci/run-buildbot generic-no-localization"
+        artifact_paths:
+          - "**/test-results.xml"
+          - "**/*.abilist"
+        env:
+            CC: "clang-${LLVM_HEAD_VERSION}"
+            CXX: "clang++-${LLVM_HEAD_VERSION}"
+        agents:
+          queue: "libcxx-builders"
+          os: "linux"
+        retry:
+          automatic:
+            - exit_status: -1  # Agent was lost
+              limit: 2
+        timeout_in_minutes: 120
+
+      - label: "No Unicode"
+        command: "libcxx/utils/ci/run-buildbot generic-no-unicode"
+        artifact_paths:
+          - "**/test-results.xml"
+          - "**/*.abilist"
+        env:
+            CC: "clang-${LLVM_HEAD_VERSION}"
+            CXX: "clang++-${LLVM_HEAD_VERSION}"
+        agents:
+          queue: "libcxx-builders"
+          os: "linux"
+        retry:
+          automatic:
+            - exit_status: -1  # Agent was lost
+              limit: 2
+        timeout_in_minutes: 120
+
+      - label: "No wide characters"
+        command: "libcxx/utils/ci/run-buildbot generic-no-wide-characters"
+        artifact_paths:
+          - "**/test-results.xml"
+          - "**/*.abilist"
+        env:
+            CC: "clang-${LLVM_HEAD_VERSION}"
+            CXX: "clang++-${LLVM_HEAD_VERSION}"
+        agents:
+          queue: "libcxx-builders"
+          os: "linux"
+        retry:
+          automatic:
+            - exit_status: -1  # Agent was lost
+              limit: 2
+        timeout_in_minutes: 120
+
+      - label: "No experimental features"
+        command: "libcxx/utils/ci/run-buildbot generic-no-experimental"
+        artifact_paths:
+          - "**/test-results.xml"
+          - "**/*.abilist"
+        env:
+            CC: "clang-${LLVM_HEAD_VERSION}"
+            CXX: "clang++-${LLVM_HEAD_VERSION}"
+        agents:
+          queue: "libcxx-builders"
+          os: "linux"
+        retry:
+          automatic:
+            - exit_status: -1  # Agent was lost
+              limit: 2
+        timeout_in_minutes: 120
+
+      - label: "No exceptions"
+        command: "libcxx/utils/ci/run-buildbot generic-noexceptions"
+        artifact_paths:
+          - "**/test-results.xml"
+          - "**/*.abilist"
+        env:
+            CC: "clang-${LLVM_HEAD_VERSION}"
+            CXX: "clang++-${LLVM_HEAD_VERSION}"
+        agents:
+          queue: "libcxx-builders"
+          os: "linux"
+        retry:
+          automatic:
+            - exit_status: -1  # Agent was lost
+              limit: 2
+        timeout_in_minutes: 120
+
+    - label: "Unstable ABI"
+      command: "libcxx/utils/ci/run-buildbot generic-abi-unstable"
       artifact_paths:
         - "**/test-results.xml"
         - "**/*.abilist"
+      env:
+          CC: "clang-${LLVM_HEAD_VERSION}"
+          CXX: "clang++-${LLVM_HEAD_VERSION}"
       agents:
         queue: "libcxx-builders"
-        os: "macos"
+        os: "linux"
       retry:
         automatic:
           - exit_status: -1  # Agent was lost
             limit: 2
       timeout_in_minutes: 120
 
-  - group: "ARM"
-    steps:
-    - label: "AArch64"
-      command: "libcxx/utils/ci/run-buildbot aarch64"
+    # Other non-testing CI jobs
+    - label: "Benchmarks"
+      command: "libcxx/utils/ci/run-buildbot benchmarks"
       artifact_paths:
         - "**/test-results.xml"
         - "**/*.abilist"
+      env:
+          CC: "clang-${LLVM_HEAD_VERSION}"
+          CXX: "clang++-${LLVM_HEAD_VERSION}"
       agents:
-        queue: "libcxx-builders-linaro-arm"
-        arch: "aarch64"
+        queue: "libcxx-builders"
+        os: "linux"
       retry:
         automatic:
           - exit_status: -1  # Agent was lost
             limit: 2
       timeout_in_minutes: 120
 
-    - label: "AArch64 -fno-exceptions"
-      command: "libcxx/utils/ci/run-buildbot aarch64-noexceptions"
-      artifact_paths:
-        - "**/test-results.xml"
-        - "**/*.abilist"
-      agents:
-        queue: "libcxx-builders-linaro-arm"
-        arch: "aarch64"
-      retry:
-        automatic:
-          - exit_status: -1  # Agent was lost
-            limit: 2
-      timeout_in_minutes: 120
+    # Tests on non-Unix platforms
+    - group: ":windows: Windows"
+      steps:
+      - label: "Clang-cl (DLL)"
+        command: "bash libcxx/utils/ci/run-buildbot clang-cl-dll"
+        artifact_paths:
+          - "**/test-results.xml"
+          - "**/*.abilist"
+        agents:
+          queue: "windows"
+        retry:
+          automatic:
+            - exit_status: -1  # Agent was lost
+              limit: 2
+        timeout_in_minutes: 120
 
-    - label: "Armv8"
-      command: "libcxx/utils/ci/run-buildbot armv8"
-      artifact_paths:
-        - "**/test-results.xml"
-        - "**/*.abilist"
-      agents:
-        queue: "libcxx-builders-linaro-arm"
-        arch: "armv8l"
-      retry:
-        automatic:
-          - exit_status: -1  # Agent was lost
-            limit: 2
-      timeout_in_minutes: 120
+      - label: "Clang-cl (Static)"
+        command: "bash libcxx/utils/ci/run-buildbot clang-cl-static"
+        artifact_paths:
+          - "**/test-results.xml"
+          - "**/*.abilist"
+        agents:
+          queue: "windows"
+        retry:
+          automatic:
+            - exit_status: -1  # Agent was lost
+              limit: 2
+        timeout_in_minutes: 120
 
-    - label: "Armv8 -fno-exceptions"
-      command: "libcxx/utils/ci/run-buildbot armv8-noexceptions"
-      artifact_paths:
-        - "**/test-results.xml"
-        - "**/*.abilist"
-      agents:
-        queue: "libcxx-builders-linaro-arm"
-        arch: "armv8l"
-      retry:
-        automatic:
-          - exit_status: -1  # Agent was lost
-            limit: 2
-      timeout_in_minutes: 120
+      - label: "Clang-cl (no vcruntime exceptions)"
+        command: "bash libcxx/utils/ci/run-buildbot clang-cl-no-vcruntime"
+        artifact_paths:
+          - "**/test-results.xml"
+          - "**/*.abilist"
+        agents:
+          queue: "windows"
+        retry:
+          automatic:
+            - exit_status: -1  # Agent was lost
+              limit: 2
 
-    - label: "Armv7"
-      command: "libcxx/utils/ci/run-buildbot armv7"
-      artifact_paths:
-        - "**/test-results.xml"
-        - "**/*.abilist"
+      - label: "MinGW (DLL, x86_64)"
+        command: "bash libcxx/utils/ci/run-buildbot mingw-dll"
+        artifact_paths:
+          - "**/test-results.xml"
+          - "**/*.abilist"
+        agents:
+          queue: "windows"
+        retry:
+          automatic:
+            - exit_status: -1  # Agent was lost
+              limit: 2
+        timeout_in_minutes: 120
+
+      - label: "MinGW (Static, x86_64)"
+        command: "bash libcxx/utils/ci/run-buildbot mingw-static"
+        artifact_paths:
+          - "**/test-results.xml"
+          - "**/*.abilist"
+        agents:
+          queue: "windows"
+        retry:
+          automatic:
+            - exit_status: -1  # Agent was lost
+              limit: 2
+        timeout_in_minutes: 120
+
+      - label: "MinGW (DLL, i686)"
+        command: "bash libcxx/utils/ci/run-buildbot mingw-dll-i686"
+        artifact_paths:
+          - "**/test-results.xml"
+          - "**/*.abilist"
+        agents:
+          queue: "windows"
+        retry:
+          automatic:
+            - exit_status: -1  # Agent was lost
+              limit: 2
+        timeout_in_minutes: 120
+
+    - group: ":apple: Apple"
+      steps:
+      - label: "MacOS x86_64"
+        command: "libcxx/utils/ci/run-buildbot apple-cxx20"
+        artifact_paths:
+          - "**/test-results.xml"
+          - "**/*.abilist"
+        agents:
+          queue: "libcxx-builders"
+          os: "macos"
+          arch: "x86_64"
+        retry:
+          automatic:
+            - exit_status: -1  # Agent was lost
+              limit: 2
+        timeout_in_minutes: 120
+
+      - label: "MacOS arm64"
+        command: "libcxx/utils/ci/run-buildbot apple-cxx20"
+        artifact_paths:
+          - "**/test-results.xml"
+          - "**/*.abilist"
+        agents:
+          queue: "libcxx-builders"
+          os: "macos"
+          arch: "arm64"
+        retry:
+          automatic:
+            - exit_status: -1  # Agent was lost
+              limit: 2
+        timeout_in_minutes: 120
+
+      # Build with the configuration we use to generate libc++.dylib on Apple platforms
+      - label: "Apple system"
+        command: "libcxx/utils/ci/run-buildbot apple-system"
+        artifact_paths:
+          - "**/test-results.xml"
+          - "**/*.abilist"
+        agents:
+          queue: "libcxx-builders"
+          os: "macos"
+          arch: "arm64" # This can technically run on any architecture, but we have more resources on arm64 so we pin this job to arm64
+        retry:
+          automatic:
+            - exit_status: -1  # Agent was lost
+              limit: 2
+        timeout_in_minutes: 120
+
+      # Test back-deployment to older Apple platforms
+      - label: "Apple back-deployment macosx10.9"
+        command: "libcxx/utils/ci/run-buildbot apple-system-backdeployment-10.9"
+        artifact_paths:
+          - "**/test-results.xml"
+          - "**/*.abilist"
+        agents:
+          queue: "libcxx-builders"
+          os: "macos"
+          arch: "x86_64" # We need to use x86_64 for back-deployment CI on this target since macOS didn't support arm64 back then.
+        retry:
+          automatic:
+            - exit_status: -1  # Agent was lost
+              limit: 2
+        timeout_in_minutes: 120
+
+      - label: "Apple back-deployment macosx10.15"
+        command: "libcxx/utils/ci/run-buildbot apple-system-backdeployment-10.15"
+        artifact_paths:
+          - "**/test-results.xml"
+          - "**/*.abilist"
+        agents:
+          queue: "libcxx-builders"
+          os: "macos"
+          arch: "x86_64" # We need to use x86_64 for back-deployment CI on this target since macOS didn't support arm64 back then.
+        retry:
+          automatic:
+            - exit_status: -1  # Agent was lost
+              limit: 2
+        timeout_in_minutes: 120
+
+      - label: "Apple back-deployment macosx11.0 arm64"
+        command: "libcxx/utils/ci/run-buildbot apple-system-backdeployment-11.0"
+        artifact_paths:
+          - "**/test-results.xml"
+          - "**/*.abilist"
+        agents:
+          queue: "libcxx-builders"
+          os: "macos"
+          arch: "arm64"
+        retry:
+          automatic:
+            - exit_status: -1  # Agent was lost
+              limit: 2
+        timeout_in_minutes: 120
+
+      - label: "Apple back-deployment with assertions enabled"
+        command: "libcxx/utils/ci/run-buildbot apple-system-backdeployment-assertions-11.0"
+        artifact_paths:
+          - "**/test-results.xml"
+          - "**/*.abilist"
+        agents:
+          queue: "libcxx-builders"
+          os: "macos"
+        retry:
+          automatic:
+            - exit_status: -1  # Agent was lost
+              limit: 2
+        timeout_in_minutes: 120
+
+    - group: "ARM"
+      steps:
+      - label: "AArch64"
+        command: "libcxx/utils/ci/run-buildbot aarch64"
+        artifact_paths:
+          - "**/test-results.xml"
+          - "**/*.abilist"
+        agents:
+          queue: "libcxx-builders-linaro-arm"
+          arch: "aarch64"
+        retry:
+          automatic:
+            - exit_status: -1  # Agent was lost
+              limit: 2
+        timeout_in_minutes: 120
+
+      - label: "AArch64 -fno-exceptions"
+        command: "libcxx/utils/ci/run-buildbot aarch64-noexceptions"
+        artifact_paths:
+          - "**/test-results.xml"
+          - "**/*.abilist"
+        agents:
+          queue: "libcxx-builders-linaro-arm"
+          arch: "aarch64"
+        retry:
+          automatic:
+            - exit_status: -1  # Agent was lost
+              limit: 2
+        timeout_in_minutes: 120
+
+      - label: "Armv8"
+        command: "libcxx/utils/ci/run-buildbot armv8"
+        artifact_paths:
+          - "**/test-results.xml"
+          - "**/*.abilist"
+        agents:
+          queue: "libcxx-builders-linaro-arm"
+          arch: "armv8l"
+        retry:
+          automatic:
+            - exit_status: -1  # Agent was lost
+              limit: 2
+        timeout_in_minutes: 120
+
+      - label: "Armv8 -fno-exceptions"
+        command: "libcxx/utils/ci/run-buildbot armv8-noexceptions"
+        artifact_paths:
+          - "**/test-results.xml"
+          - "**/*.abilist"
+        agents:
+          queue: "libcxx-builders-linaro-arm"
+          arch: "armv8l"
+        retry:
+          automatic:
+            - exit_status: -1  # Agent was lost
+              limit: 2
+        timeout_in_minutes: 120
+
+      - label: "Armv7"
+        command: "libcxx/utils/ci/run-buildbot armv7"
+        artifact_paths:
+          - "**/test-results.xml"
+          - "**/*.abilist"
+        agents:
+          queue: "libcxx-builders-linaro-arm"
+          arch: "armv8l" # Compiling for v7, running on v8 hardware
+        retry:
+          automatic:
+            - exit_status: -1  # Agent was lost
+              limit: 2
+        timeout_in_minutes: 120
+
+      - label: "Armv7 -fno-exceptions"
+        command: "libcxx/utils/ci/run-buildbot armv7-noexceptions"
+        artifact_paths:
+          - "**/test-results.xml"
+          - "**/*.abilist"
+        agents:
+          queue: "libcxx-builders-linaro-arm"
+          arch: "armv8l" # Compiling for v7, running on v8 hardware
+        retry:
+          automatic:
+            - exit_status: -1  # Agent was lost
+              limit: 2
+        timeout_in_minutes: 120
+
+    - group: "AIX"
+      steps:
+      - label: "AIX (32-bit)"
+        command: "libcxx/utils/ci/run-buildbot aix"
+        artifact_paths:
+          - "**/test-results.xml"
+          - "**/*.abilist"
+        env:
+            CC: "clang"
+            CXX: "clang++"
+            OBJECT_MODE: "32"
+        agents:
+            queue: libcxx-builders
+            os: aix
+        retry:
+          automatic:
+            - exit_status: -1  # Agent was lost
+              limit: 2
+        timeout_in_minutes: 120
+
+      - label: "AIX (64-bit)"
+        command: "libcxx/utils/ci/run-buildbot aix"
+        artifact_paths:
+          - "**/test-results.xml"
+          - "**/*.abilist"
+        env:
+            CC: "clang"
+            CXX: "clang++"
+            OBJECT_MODE: "64"
+        agents:
+            queue: libcxx-builders
+            os: aix
+        retry:
+          automatic:
+            - exit_status: -1  # Agent was lost
+              limit: 2
+        timeout_in_minutes: 120
+
+#
+# This group describes the various pre-commit CI bots used to test Clang against
+# libc++ under various configurations. Unlike the usual libc++ CI pipeline,
+# which aims to test libc++ itself, this pipeline aims to test Clang by
+# compiling libc++ and running its test suite against the just-built Clang,
+# in various configurations.
+#
+- group: "Testing libc++ against just-built Clang"
+  if: "build.env('RUN_CLANG_PRECOMMIT') != null"
+  steps:
+    - label: "Building clang"
+      commands:
+        - "mkdir install"
+        - "cmake -S llvm -B build -G Ninja -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX=install -DLLVM_ENABLE_PROJECTS=\"clang;compiler-rt\""
+        - "ninja -C build install-clang install-clang-resource-headers"
+        - "buildkite-agent artifact upload 'install/**/*'"
+      env:
+          CC: "clang-${LLVM_HEAD_VERSION}"
+          CXX: "clang++-${LLVM_HEAD_VERSION}"
       agents:
-        queue: "libcxx-builders-linaro-arm"
-        arch: "armv8l" # Compiling for v7, running on v8 hardware
+        queue: "libcxx-builders"
+        os: "linux"
       retry:
         automatic:
           - exit_status: -1  # Agent was lost
             limit: 2
       timeout_in_minutes: 120
 
-    - label: "Armv7 -fno-exceptions"
-      command: "libcxx/utils/ci/run-buildbot armv7-noexceptions"
+    - wait
+
+    - label: "C++03"
+      commands:
+        - "buildkite-agent artifact download 'install/**' ."
+        - "export CC=$(pwd)/install/bin/clang"
+        - "export CXX=$(pwd)/install/bin/clang++"
+        - "chmod +x install/bin/clang install/bin/clang++"
+        - "libcxx/utils/ci/run-buildbot generic-cxx03"
       artifact_paths:
         - "**/test-results.xml"
-        - "**/*.abilist"
+        - "**/crash_diagnostics/*"
+      env:
+          LLVM_SYMBOLIZER_PATH: "/usr/bin/llvm-symbolizer-${LLVM_HEAD_VERSION}" # TODO: Should we build that from scratch?
+          CLANG_CRASH_DIAGNOSTICS_DIR: "crash_diagnostics"
       agents:
-        queue: "libcxx-builders-linaro-arm"
-        arch: "armv8l" # Compiling for v7, running on v8 hardware
+        queue: "libcxx-builders"
+        os: "linux"
       retry:
         automatic:
           - exit_status: -1  # Agent was lost
             limit: 2
       timeout_in_minutes: 120
 
-  - group: "AIX"
-    steps:
-    - label: "AIX (32-bit)"
-      command: "libcxx/utils/ci/run-buildbot aix"
+    - label: "C++2b"
+      commands:
+        - "buildkite-agent artifact download 'install/**' ."
+        - "export CC=$(pwd)/install/bin/clang"
+        - "export CXX=$(pwd)/install/bin/clang++"
+        - "chmod +x install/bin/clang install/bin/clang++"
+        - "libcxx/utils/ci/run-buildbot generic-cxx2b"
       artifact_paths:
         - "**/test-results.xml"
-        - "**/*.abilist"
+        - "**/crash_diagnostics/*"
       env:
-          CC: "clang"
-          CXX: "clang++"
-          OBJECT_MODE: "32"
+          LLVM_SYMBOLIZER_PATH: "/usr/bin/llvm-symbolizer-${LLVM_HEAD_VERSION}" # TODO: Should we build that from scratch?
+          CLANG_CRASH_DIAGNOSTICS_DIR: "crash_diagnostics"
       agents:
-          queue: libcxx-builders
-          os: aix
+        queue: "libcxx-builders"
+        os: "linux"
       retry:
         automatic:
           - exit_status: -1  # Agent was lost
             limit: 2
       timeout_in_minutes: 120
 
-    - label: "AIX (64-bit)"
-      command: "libcxx/utils/ci/run-buildbot aix"
+    - label: "Modules"
+      commands:
+        - "buildkite-agent artifact download 'install/**' ."
+        - "export CC=$(pwd)/install/bin/clang"
+        - "export CXX=$(pwd)/install/bin/clang++"
+        - "chmod +x install/bin/clang install/bin/clang++"
+        - "libcxx/utils/ci/run-buildbot generic-modules"
       artifact_paths:
         - "**/test-results.xml"
-        - "**/*.abilist"
+        - "**/crash_diagnostics/*"
       env:
-          CC: "clang"
-          CXX: "clang++"
-          OBJECT_MODE: "64"
+          LLVM_SYMBOLIZER_PATH: "/usr/bin/llvm-symbolizer-${LLVM_HEAD_VERSION}" # TODO: Should we build that from scratch?
+          CLANG_CRASH_DIAGNOSTICS_DIR: "crash_diagnostics"
       agents:
-          queue: libcxx-builders
-          os: aix
+        queue: "libcxx-builders"
+        os: "linux"
       retry:
         automatic:
           - exit_status: -1  # Agent was lost
Index: libcxx/utils/ci/buildkite-pipeline-clang.yml
===================================================================
--- libcxx/utils/ci/buildkite-pipeline-clang.yml
+++ /dev/null
@@ -1,103 +0,0 @@
-#===----------------------------------------------------------------------===##
-#
-# 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 file describes the various pre-commit CI bots used to test Clang against
-# libc++ under various configurations. Unlike the usual libc++ CI pipeline,
-# which aims to test libc++ itself, this pipeline aims to test Clang by
-# compiling libc++ and running its test suite against the just-built Clang,
-# in various configurations.
-#
-env:
-    LLVM_HEAD_VERSION: "16"
-steps:
-  - label: "Building clang"
-    commands:
-      - "mkdir install"
-      - "cmake -S llvm -B build -G Ninja -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX=install -DLLVM_ENABLE_PROJECTS=\"clang;compiler-rt\""
-      - "ninja -C build install-clang install-clang-resource-headers"
-      - "buildkite-agent artifact upload 'install/**/*'"
-    env:
-        CC: "clang-${LLVM_HEAD_VERSION}"
-        CXX: "clang++-${LLVM_HEAD_VERSION}"
-    agents:
-      queue: "libcxx-builders"
-      os: "linux"
-    retry:
-      automatic:
-        - exit_status: -1  # Agent was lost
-          limit: 2
-    timeout_in_minutes: 120
-
-  - wait
-
-  - label: "C++03"
-    commands:
-      - "buildkite-agent artifact download 'install/**' ."
-      - "export CC=$(pwd)/install/bin/clang"
-      - "export CXX=$(pwd)/install/bin/clang++"
-      - "chmod +x install/bin/clang install/bin/clang++"
-      - "libcxx/utils/ci/run-buildbot generic-cxx03"
-    artifact_paths:
-      - "**/test-results.xml"
-      - "**/crash_diagnostics/*"
-    env:
-        LLVM_SYMBOLIZER_PATH: "/usr/bin/llvm-symbolizer-${LLVM_HEAD_VERSION}" # TODO: Should we build that from scratch?
-        CLANG_CRASH_DIAGNOSTICS_DIR: "crash_diagnostics"
-    agents:
-      queue: "libcxx-builders"
-      os: "linux"
-    retry:
-      automatic:
-        - exit_status: -1  # Agent was lost
-          limit: 2
-    timeout_in_minutes: 120
-
-  - label: "C++2b"
-    commands:
-      - "buildkite-agent artifact download 'install/**' ."
-      - "export CC=$(pwd)/install/bin/clang"
-      - "export CXX=$(pwd)/install/bin/clang++"
-      - "chmod +x install/bin/clang install/bin/clang++"
-      - "libcxx/utils/ci/run-buildbot generic-cxx2b"
-    artifact_paths:
-      - "**/test-results.xml"
-      - "**/crash_diagnostics/*"
-    env:
-        LLVM_SYMBOLIZER_PATH: "/usr/bin/llvm-symbolizer-${LLVM_HEAD_VERSION}" # TODO: Should we build that from scratch?
-        CLANG_CRASH_DIAGNOSTICS_DIR: "crash_diagnostics"
-    agents:
-      queue: "libcxx-builders"
-      os: "linux"
-    retry:
-      automatic:
-        - exit_status: -1  # Agent was lost
-          limit: 2
-    timeout_in_minutes: 120
-
-  - label: "Modules"
-    commands:
-      - "buildkite-agent artifact download 'install/**' ."
-      - "export CC=$(pwd)/install/bin/clang"
-      - "export CXX=$(pwd)/install/bin/clang++"
-      - "chmod +x install/bin/clang install/bin/clang++"
-      - "libcxx/utils/ci/run-buildbot generic-modules"
-    artifact_paths:
-      - "**/test-results.xml"
-      - "**/crash_diagnostics/*"
-    env:
-        LLVM_SYMBOLIZER_PATH: "/usr/bin/llvm-symbolizer-${LLVM_HEAD_VERSION}" # TODO: Should we build that from scratch?
-        CLANG_CRASH_DIAGNOSTICS_DIR: "crash_diagnostics"
-    agents:
-      queue: "libcxx-builders"
-      os: "linux"
-    retry:
-      automatic:
-        - exit_status: -1  # Agent was lost
-          limit: 2
-    timeout_in_minutes: 120
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
  • [PATCH] D141423: Trigger the... Louis Dionne via Phabricator via cfe-commits

Reply via email to