diff --git a/libcxx/utils/ci/buildkite-pipeline-clang.yml b/libcxx/utils/ci/buildkite-pipeline-clang.yml new file mode 100644 --- /dev/null +++ b/libcxx/utils/ci/buildkite-pipeline-clang.yml @@ -0,0 +1,159 @@ +#===----------------------------------------------------------------------===## +# +# 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: + # TODO: - They all test the same standard version right now. + # - Find a way to reuse the artifact of the just-built Clang. + - label: "Bootstrapping build / C++03" + 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 + + - label: "Bootstrapping build / C++11" + 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 + + - label: "Bootstrapping build / C++14" + 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 + + - label: "Bootstrapping build / C++17" + 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 + + - label: "Bootstrapping build / C++20" + 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 + + - label: "Bootstrapping build / C++2b" + 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 + + - label: "Bootstrapping build / Modules" + 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 diff --git a/libcxx/utils/ci/buildkite-pipeline-premerge.sh b/libcxx/utils/ci/buildkite-pipeline-premerge.sh --- a/libcxx/utils/ci/buildkite-pipeline-premerge.sh +++ b/libcxx/utils/ci/buildkite-pipeline-premerge.sh @@ -15,10 +15,8 @@ # Invoked by CI on pre-merge check for a commit. # -DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" - -if ! git diff --name-only HEAD~1 | grep -q -E "^libcxx/|^libcxxabi/|^libunwind/|^runtimes/|^cmake/"; then - # libcxx/, libcxxabi/, libunwind/, runtimes/ or cmake/ are not affected +if ! git diff --name-only HEAD~1 | grep -q -E "^libcxx/|^libcxxabi/|^libunwind/|^runtimes/|^cmake/|^clang/"; then + # libcxx/, libcxxabi/, libunwind/, runtimes/, cmake/ or clang/ are not affected exit 0 fi diff --git a/libcxx/utils/ci/generate-buildkite-pipeline b/libcxx/utils/ci/generate-buildkite-pipeline --- a/libcxx/utils/ci/generate-buildkite-pipeline +++ b/libcxx/utils/ci/generate-buildkite-pipeline @@ -7,4 +7,16 @@ # #===----------------------------------------------------------------------===## -cat libcxx/utils/ci/buildkite-pipeline.yml +# +# This script generates the appropriate libc++ CI pipeline based on which project(s) were changed. +# + +# TODO: Remove this -- we're just trying to test the Clang pipeline right now +cat libcxx/utils/ci/buildkite-pipeline-clang.yml +exit 0 + +if git diff --name-only HEAD~1 | grep -q -E "^libcxx/|^libcxxabi/|^libunwind/|^runtimes/|^cmake/"; then + cat libcxx/utils/ci/buildkite-pipeline.yml +elif git diff --name-only HEAD~1 | grep -q -E "^clang/"; then + cat libcxx/utils/ci/buildkite-pipeline-clang.yml +fi