philnik updated this revision to Diff 538208.
philnik marked 2 inline comments as done.
philnik added a comment.
Herald added a project: clang.
Herald added a subscriber: cfe-commits.

Address comments


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D153920/new/

https://reviews.llvm.org/D153920

Files:
  clang/utils/ci/buildkite-pipeline.yml
  clang/utils/ci/run-buildbot
  libcxx/utils/ci/buildkite-pipeline-clang.yml
  libcxx/utils/ci/generate-buildkite-pipeline
  libcxx/utils/ci/run-buildbot

Index: libcxx/utils/ci/run-buildbot
===================================================================
--- libcxx/utils/ci/run-buildbot
+++ libcxx/utils/ci/run-buildbot
@@ -203,6 +203,9 @@
     # Check if the diff is empty, fail otherwise.
     ! grep -q '^--- a' ${BUILD_DIR}/clang-format.patch
 ;;
+check-format-clang)
+    ! grep -rnI '[[:blank:]]$' clang/lib clang/include clang/docs
+;;
 check-generated-output)
     # `! foo` doesn't work properly with `set -e`, use `! foo || false` instead.
     # https://stackoverflow.com/questions/57681955/set-e-does-not-respect-logical-not
Index: libcxx/utils/ci/generate-buildkite-pipeline
===================================================================
--- libcxx/utils/ci/generate-buildkite-pipeline
+++ libcxx/utils/ci/generate-buildkite-pipeline
@@ -11,16 +11,4 @@
 # This script generates the appropriate libc++ CI pipeline based on which project(s) were changed.
 #
 
-if git diff --name-only HEAD~1 | grep -q -E "^libcxx/|^libcxxabi/|^libunwind/|^runtimes/|^cmake/"; then
-  LIBCXX_CHANGED=true
-fi
-
-if git diff --name-only HEAD~1 | grep -q -E "^clang/"; then
-  CLANG_CHANGED=true
-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-clang.yml
Index: clang/utils/ci/run-buildbot
===================================================================
--- /dev/null
+++ clang/utils/ci/run-buildbot
@@ -0,0 +1,170 @@
+#!/usr/bin/env bash
+#===----------------------------------------------------------------------===##
+#
+# 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
+#
+#===----------------------------------------------------------------------===##
+
+set -ex
+set -o pipefail
+unset LANG
+unset LC_ALL
+unset LC_COLLATE
+
+PROGNAME="$(basename "${0}")"
+
+function usage() {
+cat <<EOF
+Usage:
+${PROGNAME} [options] <BUILDER>
+
+[-h|--help]         Display this help and exit.
+
+--llvm-root <DIR>   Path to the root of the LLVM monorepo. By default, we try
+                    to figure it out based on the current working directory.
+
+--build-dir <DIR>   The directory to use for building the library. By default,
+                    this is '<llvm-root>/build/<builder>'.
+
+--osx-roots <DIR>   Path to pre-downloaded macOS dylibs. By default, we download
+                    them from Green Dragon. This is only relevant at all when
+                    running back-deployment testing if one wants to override
+                    the old dylibs we use to run the tests with different ones.
+Environment variables
+CC                  The C compiler to use, this value is used by CMake. This
+                    variable is optional.
+
+CXX                 The C++ compiler to use, this value is used by CMake. This
+                    variable is optional.
+
+CMAKE               The CMake binary to use. This variable is optional.
+EOF
+}
+
+if [[ $# == 0 ]]; then
+   usage
+   exit 0
+fi
+
+while [[ $# -gt 0 ]]; do
+    case ${1} in
+        -h|--help)
+            usage
+            exit 0
+            ;;
+        --llvm-root)
+            MONOREPO_ROOT="${2}"
+            shift; shift
+            ;;
+        --build-dir)
+            BUILD_DIR="${2}"
+            shift; shift
+            ;;
+        --osx-roots)
+            OSX_ROOTS="${2}"
+            shift; shift
+            ;;
+        *)
+            BUILDER="${1}"
+            shift
+            ;;
+    esac
+done
+
+MONOREPO_ROOT="${MONOREPO_ROOT:="$(git rev-parse --show-toplevel)"}"
+BUILD_DIR="${BUILD_DIR:=${MONOREPO_ROOT}/build/${BUILDER}}"
+INSTALL_DIR="${BUILD_DIR}/install"
+
+# If we can find Ninja/CMake provided by Xcode, use those since we know their
+# version will generally work with the Clang shipped in Xcode (e.g. if Clang
+# knows about -std=c++20, the CMake bundled in Xcode will probably know about
+# that flag too).
+if xcrun --find ninja &>/dev/null; then
+    NINJA="$(xcrun --find ninja)"
+elif which ninja &>/dev/null; then
+    # The current implementation of modules needs the absolute path to the ninja
+    # binary.
+    # TODO MODULES Is this still needed when CMake has libc++ module support?
+    NINJA="$(which ninja)"
+else
+    NINJA="ninja"
+fi
+
+if [ -z "${CMAKE}" ]; then
+    if xcrun --find cmake &>/dev/null; then
+        CMAKE="$(xcrun --find cmake)"
+    else
+        CMAKE="cmake"
+    fi
+fi
+
+# Print the version of a few tools to aid diagnostics in some cases
+${CMAKE} --version
+${NINJA} --version
+
+if [ ! -z "${CXX}" ]; then ${CXX} --version; fi
+
+case "${BUILDER}" in
+check-format)
+    ! grep -rnI '[[:blank:]]$' clang/lib clang/include clang/docs
+;;
+build-clang)
+    mkdir install
+    # We use Release here to avoid including debug information. Otherwise, the
+    # clang binary is very large, which is problematic because we need to upload
+    # the artifacts for other jobs to use. This may seem like nothing, but with
+    # the number of jobs we run daily, this can result in thousands of GB of
+    # network I/O.
+    cmake                                                                      \
+        -S llvm                                                                \
+        -B build                                                               \
+        -G Ninja                                                               \
+        -DCMAKE_CXX_COMPILER_LAUNCHER="ccache"                                 \
+        -DCMAKE_BUILD_TYPE=Release                                             \
+        -DCMAKE_INSTALL_PREFIX=install                                         \
+        -DLLVM_ENABLE_PROJECTS="clang;compiler-rt"                             \
+
+    ninja -C build install-clang install-clang-resource-headers
+    ccache -s
+    tar -cJvf install.tar.xz install/
+    buildkite-agent artifact upload --debug install.tar.xz
+;;
+generic-cxx03)
+    buildkite-agent artifact download install.tar.xz .
+    tar -xvf install.tar.xz
+    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
+;;
+generic-cxx26)
+    buildkite-agent artifact download install.tar.xz .
+    tar -xvf install.tar.xz
+    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-cxx26
+;;
+generic-modules)
+    buildkite-agent artifact download install.tar.xz .
+    tar -xvf install.tar.xz
+    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
+;;
+#################################################################
+# Insert vendor-specific internal configurations below.
+#
+# This allows vendors to extend this file with their own internal
+# configurations without running into merge conflicts with upstream.
+#################################################################
+
+#################################################################
+*)
+    echo "${BUILDER} is not a known configuration"
+    exit 1
+;;
+esac
Index: clang/utils/ci/buildkite-pipeline.yml
===================================================================
--- clang/utils/ci/buildkite-pipeline.yml
+++ clang/utils/ci/buildkite-pipeline.yml
@@ -19,7 +19,7 @@
 steps:
   - label: "Format"
     commands:
-      - "! grep -rnI '[[:blank:]]$' clang/lib clang/include clang/docs || false"
+      - "clang/utils/ci/run-buildbot check-format"
 
     agents:
       queue: "libcxx-builders"
@@ -34,15 +34,7 @@
 
   - label: "Building clang"
     commands:
-      - "mkdir install"
-      # We use Release here to avoid including debug information. Otherwise, the clang binary is very large, which
-      # is problematic because we need to upload the artifacts for other jobs to use. This may seem like nothing,
-      # but with the number of jobs we run daily, this can result in thousands of GB of network I/O.
-      - "cmake -S llvm -B build -G Ninja -DCMAKE_CXX_COMPILER_LAUNCHER=\"ccache\" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install -DLLVM_ENABLE_PROJECTS=\"clang;compiler-rt\""
-      - "ninja -C build install-clang install-clang-resource-headers"
-      - "ccache -s"
-      - "tar -cJvf install.tar.xz install/"
-      - "buildkite-agent artifact upload --debug install.tar.xz"
+      - "clang/utils/ci/run-buildbot build-clang"
     env:
         CC: "clang-${LLVM_HEAD_VERSION}"
         CXX: "clang++-${LLVM_HEAD_VERSION}"
@@ -59,12 +51,7 @@
 
   - label: "C++03"
     commands:
-      - "buildkite-agent artifact download install.tar.xz ."
-      - "tar -xvf install.tar.xz"
-      - "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"
+      - "clang/utils/ci/run-buildbot generic-cxx03"
     artifact_paths:
       - "**/test-results.xml"
       - "**/crash_diagnostics/*"
@@ -82,12 +69,7 @@
 
   - label: "C++26"
     commands:
-      - "buildkite-agent artifact download install.tar.xz ."
-      - "tar -xvf install.tar.xz"
-      - "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-cxx26"
+      - "clang/utils/ci/run-buildbot generic-cxx26"
     artifact_paths:
       - "**/test-results.xml"
       - "**/crash_diagnostics/*"
@@ -105,12 +87,7 @@
 
   - label: "Modules"
     commands:
-      - "buildkite-agent artifact download install.tar.xz ."
-      - "tar -xvf install.tar.xz"
-      - "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"
+      - "clang/utils/ci/run-buildbot generic-modules"
     artifact_paths:
       - "**/test-results.xml"
       - "**/crash_diagnostics/*"
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to