[libcxx-commits] [libcxx] [libc++] Re-add a script to trigger the libc++ Buildkite pipeline (PR #146730)

Louis Dionne via libcxx-commits libcxx-commits at lists.llvm.org
Wed Jul 2 08:42:30 PDT 2025


https://github.com/ldionne created https://github.com/llvm/llvm-project/pull/146730

This was removed in 99cdc26c94 when the LLVM monorepo Buildkite setup was removed. Libc++ previously relied on the LLVM monorepo pipeline to trigger its own pipeline when needed. Since there is no LLVM monorepo pipeline anymore, we must trigger the libc++ Buildkite pipeline on every pull request and use this script to determine which jobs to actually start based on the files that are touched by the PR.

>From 84f4411e64fd3d0524529a4d95c2795f83251a63 Mon Sep 17 00:00:00 2001
From: Louis Dionne <ldionne.2 at gmail.com>
Date: Wed, 2 Jul 2025 11:39:02 -0400
Subject: [PATCH] [libc++] Re-add a script to trigger the libc++ Buildkite
 pipeline

This was removed in 99cdc26c94 when the LLVM monorepo Buildkite setup
was removed. Libc++ previously relied on the LLVM monorepo pipeline to
trigger its own pipeline when needed. Since there is no LLVM monorepo
pipeline anymore, we must trigger the libc++ Buildkite pipeline on every
pull request and use this script to determine which jobs to actually
start based on the files that are touched by the PR.
---
 libcxx/utils/ci/buildkite-pipeline-trigger.sh | 34 +++++++++++++++++++
 1 file changed, 34 insertions(+)
 create mode 100755 libcxx/utils/ci/buildkite-pipeline-trigger.sh

diff --git a/libcxx/utils/ci/buildkite-pipeline-trigger.sh b/libcxx/utils/ci/buildkite-pipeline-trigger.sh
new file mode 100755
index 0000000000000..4661cd54fad42
--- /dev/null
+++ b/libcxx/utils/ci/buildkite-pipeline-trigger.sh
@@ -0,0 +1,34 @@
+# ===----------------------------------------------------------------------===##
+#
+# 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 script determines whether the libc++ Buildkite pipeline should be triggered
+# on a change. This is required because Buildkite gets notified for every PR in the
+# LLVM monorepo, and we make it a no-op unless the libc++ pipeline needs to be triggered.
+#
+
+# Set by buildkite
+: ${BUILDKITE_PULL_REQUEST_BASE_BRANCH:=}
+
+# Fetch origin to have an up to date merge base for the diff.
+git fetch origin
+# List of files affected by this commit
+: ${MODIFIED_FILES:=$(git diff --name-only origin/${BUILDKITE_PULL_REQUEST_BASE_BRANCH}...HEAD)}
+
+echo "Files modified:" >&2
+echo "$MODIFIED_FILES" >&2
+modified_dirs=$(echo "$MODIFIED_FILES" | cut -d'/' -f1 | sort -u)
+echo "Directories modified:" >&2
+echo "$modified_dirs" >&2
+
+# If libc++ or one of the runtimes directories changed, trigger the libc++ Buildkite pipeline.
+if echo "$modified_dirs" | grep -q -E "^(libcxx|libcxxabi|libunwind|runtimes|cmake)$"; then
+    buildkite-agent pipeline upload libcxx/utils/ci/buildkite-pipeline.yml
+else
+    echo "No Buildkite jobs to trigger"
+fi



More information about the libcxx-commits mailing list