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
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits