[libcxx] [llvm] [libc++] Make CC and CXX environment variables mandatory in run-buildbot (PR #166875)
Louis Dionne via llvm-commits
llvm-commits at lists.llvm.org
Wed Nov 19 10:31:39 PST 2025
https://github.com/ldionne updated https://github.com/llvm/llvm-project/pull/166875
>From 18ed95ca379257645c58a5e493ed8bcd295c8bb3 Mon Sep 17 00:00:00 2001
From: Louis Dionne <ldionne.2 at gmail.com>
Date: Thu, 6 Nov 2025 14:27:41 -1000
Subject: [PATCH 1/4] [libc++] Fix local runs of the bootstrapping-build job
The bootstrapping-build job defined in run-buildbot required the
CC and CXX environment variables to be defined even though run-buildbot
documents these environment variables as being optional.
It also required ccache, which may not be available for local builds.
This patch tweaks the script slightly to better deal with the absence
of these environment variables/tools.
---
.github/workflows/libcxx-build-and-test.yaml | 29 ++++---
.../libcxx-check-generated-files.yml | 3 +
libcxx/docs/AddingNewCIJobs.rst | 3 +
libcxx/utils/ci/buildkite-pipeline.yml | 30 +++++++
libcxx/utils/ci/run-buildbot | 81 ++++++++++++-------
5 files changed, 105 insertions(+), 41 deletions(-)
diff --git a/.github/workflows/libcxx-build-and-test.yaml b/.github/workflows/libcxx-build-and-test.yaml
index 7dad30f994fd1..6a6ef62af565d 100644
--- a/.github/workflows/libcxx-build-and-test.yaml
+++ b/.github/workflows/libcxx-build-and-test.yaml
@@ -223,6 +223,9 @@ jobs:
source .venv/bin/activate
python -m pip install psutil
xcrun bash libcxx/utils/ci/run-buildbot ${{ matrix.config }}
+ env:
+ CC: clang
+ CXX: clang++
- uses: actions/upload-artifact at 330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
if: always() # Upload artifacts even if the build or test suite fails
with:
@@ -241,16 +244,16 @@ jobs:
fail-fast: false
matrix:
include:
- - { config: clang-cl-dll, mingw: false }
- - { config: clang-cl-static, mingw: false }
- - { config: clang-cl-no-vcruntime, mingw: false }
- - { config: clang-cl-debug, mingw: false }
- - { config: clang-cl-static-crt, mingw: false }
- - { config: mingw-dll, mingw: true }
- - { config: mingw-static, mingw: true }
- - { config: mingw-dll-i686, mingw: true }
- - { config: mingw-incomplete-sysroot, mingw: true }
- - { config: mingw-static, mingw: true, runner: windows-11-arm }
+ - { config: clang-cl-dll, mingw: false, cc: clang-cl, cxx: clang-cl }
+ - { config: clang-cl-static, mingw: false, cc: clang-cl, cxx: clang-cl }
+ - { config: clang-cl-no-vcruntime, mingw: false, cc: clang-cl, cxx: clang-cl }
+ - { config: clang-cl-debug, mingw: false, cc: clang-cl, cxx: clang-cl }
+ - { config: clang-cl-static-crt, mingw: false, cc: clang-cl, cxx: clang-cl }
+ - { config: mingw-dll, mingw: true, cc: clang-cl, cxx: clang-cl }
+ - { config: mingw-dll, mingw: true, cc: i686-w64-mingw32-clang, cxx: i686-w64-mingw32-clang++ }
+ - { config: mingw-static, mingw: true, cc: clang-cl, cxx: clang-cl }
+ - { config: mingw-incomplete-sysroot, mingw: true, cc: clang-cl, cxx: clang-cl }
+ - { config: mingw-static, mingw: true, cc: clang-cl, cxx: clang-cl, runner: windows-11-arm }
runs-on: ${{ matrix.runner != '' && matrix.runner || 'windows-2022' }}
steps:
- uses: actions/checkout at 08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
@@ -286,5 +289,7 @@ jobs:
run: |
echo "c:\Program Files\LLVM\bin" | Out-File -FilePath $Env:GITHUB_PATH -Encoding utf8 -Append
- name: Build and test
- run: |
- bash libcxx/utils/ci/run-buildbot ${{ matrix.config }}
+ run: bash libcxx/utils/ci/run-buildbot ${{ matrix.config }}
+ env:
+ CC: ${{ matrix.cc }}
+ CXX: ${{ matrix.cxx }}
diff --git a/.github/workflows/libcxx-check-generated-files.yml b/.github/workflows/libcxx-check-generated-files.yml
index ba97ccc64ba70..d8b67fe387bc3 100644
--- a/.github/workflows/libcxx-check-generated-files.yml
+++ b/.github/workflows/libcxx-check-generated-files.yml
@@ -22,3 +22,6 @@ jobs:
- name: Check generated files
run: libcxx/utils/ci/run-buildbot check-generated-output
+ env:
+ CC: cc
+ CXX: c++
diff --git a/libcxx/docs/AddingNewCIJobs.rst b/libcxx/docs/AddingNewCIJobs.rst
index 9d749c0d866f2..7a12728b98919 100644
--- a/libcxx/docs/AddingNewCIJobs.rst
+++ b/libcxx/docs/AddingNewCIJobs.rst
@@ -28,6 +28,9 @@ An example of a job definition is:
- label: "C++11"
command: "libcxx/utils/ci/run-buildbot generic-cxx11"
+ env:
+ CC: clang
+ CXX: clang++
artifact_paths:
- "**/test-results.xml"
agents:
diff --git a/libcxx/utils/ci/buildkite-pipeline.yml b/libcxx/utils/ci/buildkite-pipeline.yml
index 2ac69c38ebffa..d1a1b8bc355ab 100644
--- a/libcxx/utils/ci/buildkite-pipeline.yml
+++ b/libcxx/utils/ci/buildkite-pipeline.yml
@@ -37,6 +37,9 @@ steps:
steps:
- label: AArch64
command: libcxx/utils/ci/run-buildbot aarch64
+ env:
+ CC: clang
+ CXX: clang++
agents:
queue: libcxx-builders-linaro-arm
arch: aarch64
@@ -44,6 +47,9 @@ steps:
- label: AArch64 -fno-exceptions
command: libcxx/utils/ci/run-buildbot aarch64-no-exceptions
+ env:
+ CC: clang
+ CXX: clang++
agents:
queue: libcxx-builders-linaro-arm
arch: aarch64
@@ -51,6 +57,9 @@ steps:
- label: Armv8
command: libcxx/utils/ci/run-buildbot armv8
+ env:
+ CC: clang
+ CXX: clang++
agents:
queue: libcxx-builders-linaro-arm
arch: armv8l
@@ -58,6 +67,9 @@ steps:
- label: Armv8 -fno-exceptions
command: libcxx/utils/ci/run-buildbot armv8-no-exceptions
+ env:
+ CC: clang
+ CXX: clang++
agents:
queue: libcxx-builders-linaro-arm
arch: armv8l
@@ -65,6 +77,9 @@ steps:
- label: Armv7
command: libcxx/utils/ci/run-buildbot armv7
+ env:
+ CC: clang
+ CXX: clang++
agents:
queue: libcxx-builders-linaro-arm
arch: armv8l
@@ -72,6 +87,9 @@ steps:
- label: Armv7 -fno-exceptions
command: libcxx/utils/ci/run-buildbot armv7-no-exceptions
+ env:
+ CC: clang
+ CXX: clang++
agents:
queue: libcxx-builders-linaro-arm
arch: armv8l
@@ -79,6 +97,9 @@ steps:
- label: Armv7-M picolibc
command: libcxx/utils/ci/run-buildbot armv7m-picolibc
+ env:
+ CC: clang
+ CXX: clang++
agents:
queue: libcxx-builders-linaro-arm
arch: aarch64
@@ -86,6 +107,9 @@ steps:
- label: Armv7-M picolibc -fno-exceptions
command: libcxx/utils/ci/run-buildbot armv7m-picolibc-no-exceptions
+ env:
+ CC: clang
+ CXX: clang++
agents:
queue: libcxx-builders-linaro-arm
arch: aarch64
@@ -131,6 +155,9 @@ steps:
steps:
- label: Android 5.0, x86 NDK
command: libcxx/utils/ci/run-buildbot android-ndk-21-def-x86
+ env:
+ CC: /opt/android/clang/clang-current/bin/clang
+ CXX: /opt/android/clang/clang-current/bin/clang++
agents:
queue: libcxx-builders
os: android
@@ -138,6 +165,9 @@ steps:
- label: Android 13, x86_64 NDK
command: libcxx/utils/ci/run-buildbot android-ndk-33-goog-x86_64
+ env:
+ CC: /opt/android/clang/clang-current/bin/clang
+ CXX: /opt/android/clang/clang-current/bin/clang++
agents:
queue: libcxx-builders
os: android
diff --git a/libcxx/utils/ci/run-buildbot b/libcxx/utils/ci/run-buildbot
index 7442361627104..19ad913c807cd 100755
--- a/libcxx/utils/ci/run-buildbot
+++ b/libcxx/utils/ci/run-buildbot
@@ -30,17 +30,41 @@ ${PROGNAME} [options] <BUILDER>
Environment variables
CC The C compiler to use, this value is used by CMake. This
- variable is optional.
+ variable is mandatory.
CXX The C++ compiler to use, this value is used by CMake. This
- variable is optional.
-
-CLANG_FORMAT The clang-format binary to use when generating the format
- ignore list.
+ variable is mandatory.
+CCACHE The ccache binary to use. This variable is optional and is only
+ used by the bootstrapping build.
EOF
}
+function step() {
+ endstep
+ set +x
+ if [[ ! -z ${GITHUB_ACTIONS+x} ]]; then
+ echo "::group::$1"
+ export IN_GROUP=1
+ else
+ echo "--- $1"
+ fi
+ set -x
+}
+
+function endstep() {
+ set +x
+ if [[ ! -z ${GITHUB_ACTIONS+x} ]] && [[ ! -z ${IN_GROUP+x} ]]; then
+ echo "::endgroup::"
+ unset IN_GROUP
+ fi
+ set -x
+}
+
+function error() {
+ echo "::error::$1"
+}
+
if [[ $# == 0 ]]; then
usage
exit 0
@@ -96,6 +120,23 @@ function error() {
echo "::error::$1"
}
+if [ -z ${CC+x} ]; then
+ error "Environment variable CC must be defined"
+ exit 1
+fi
+
+if [ -z ${CXX+x} ]; then
+ error "Environment variable CXX must be defined"
+ exit 1
+fi
+
+# Print the version of a few tools to aid diagnostics in some cases
+step "Diagnose tools in use"
+cmake --version
+ninja --version
+${CC} --version
+${CXX} --version
+
function clean() {
rm -rf "${BUILD_DIR}"
}
@@ -127,11 +168,7 @@ function generate-cmake() {
}
function generate-cmake-libcxx-win() {
- generate-cmake-base \
- -DLLVM_ENABLE_RUNTIMES="libcxx" \
- -DCMAKE_C_COMPILER=clang-cl \
- -DCMAKE_CXX_COMPILER=clang-cl \
- "${@}"
+ generate-cmake-base -DLLVM_ENABLE_RUNTIMES="libcxx" "${@}"
}
function generate-cmake-android() {
@@ -215,12 +252,6 @@ function test-armv7m-picolibc() {
check-runtimes
}
-# Print the version of a few tools to aid diagnostics in some cases
-step "Diagnose tools in use"
-cmake --version
-ninja --version
-if [ ! -z "${CXX}" ]; then ${CXX} --version; fi
-
case "${BUILDER}" in
check-generated-output)
# `! foo` doesn't work properly with `set -e`, use `! foo || false` instead.
@@ -357,12 +388,16 @@ generic-ubsan)
bootstrapping-build)
clean
+ if [ ! -z ${CCACHE+x} ]; then
+ COMPILER_LAUNCHER="-DCMAKE_CXX_COMPILER_LAUNCHER=${CCACHE}"
+ fi
+
step "Generating CMake"
cmake \
-S "${MONOREPO_ROOT}/llvm" \
-B "${BUILD_DIR}" \
-GNinja \
- -DCMAKE_CXX_COMPILER_LAUNCHER="ccache" \
+ ${COMPILER_LAUNCHER} \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX="${INSTALL_DIR}" \
-DLLVM_ENABLE_PROJECTS="clang;lldb" \
@@ -690,14 +725,6 @@ mingw-static)
-DLIBUNWIND_ENABLE_SHARED=OFF
check-runtimes
;;
-mingw-dll-i686)
- clean
- generate-cmake \
- -DCMAKE_C_COMPILER=i686-w64-mingw32-clang \
- -DCMAKE_CXX_COMPILER=i686-w64-mingw32-clang++ \
- -C "${MONOREPO_ROOT}/libcxx/cmake/caches/MinGW.cmake"
- check-runtimes
-;;
mingw-incomplete-sysroot)
# When bringing up a new cross compiler from scratch, we build
# libunwind/libcxx in a setup where the toolchain is incomplete and
@@ -742,10 +769,6 @@ android-ndk-*)
fi
ARCH=$(arch_of_emu_img ${ANDROID_EMU_IMG})
- # Use the Android compiler by default.
- export CC=${CC:-/opt/android/clang/clang-current/bin/clang}
- export CXX=${CXX:-/opt/android/clang/clang-current/bin/clang++}
-
# The NDK libc++_shared.so is always built against the oldest supported API
# level. When tests are run against a device with a newer API level, test
# programs can be built for any supported API level, but building for the
>From 7973664f33c499062c885a1b0db7e12fb476a057 Mon Sep 17 00:00:00 2001
From: Louis Dionne <ldionne.2 at gmail.com>
Date: Sat, 8 Nov 2025 10:06:12 -1000
Subject: [PATCH 2/4] Fix compiler used on Linaro CI jobs
---
libcxx/utils/ci/buildkite-pipeline.yml | 32 +++++++++++++-------------
1 file changed, 16 insertions(+), 16 deletions(-)
diff --git a/libcxx/utils/ci/buildkite-pipeline.yml b/libcxx/utils/ci/buildkite-pipeline.yml
index d1a1b8bc355ab..1938d9a67af28 100644
--- a/libcxx/utils/ci/buildkite-pipeline.yml
+++ b/libcxx/utils/ci/buildkite-pipeline.yml
@@ -38,8 +38,8 @@ steps:
- label: AArch64
command: libcxx/utils/ci/run-buildbot aarch64
env:
- CC: clang
- CXX: clang++
+ CC: cc
+ CXX: c++
agents:
queue: libcxx-builders-linaro-arm
arch: aarch64
@@ -48,8 +48,8 @@ steps:
- label: AArch64 -fno-exceptions
command: libcxx/utils/ci/run-buildbot aarch64-no-exceptions
env:
- CC: clang
- CXX: clang++
+ CC: cc
+ CXX: c++
agents:
queue: libcxx-builders-linaro-arm
arch: aarch64
@@ -58,8 +58,8 @@ steps:
- label: Armv8
command: libcxx/utils/ci/run-buildbot armv8
env:
- CC: clang
- CXX: clang++
+ CC: cc
+ CXX: c++
agents:
queue: libcxx-builders-linaro-arm
arch: armv8l
@@ -68,8 +68,8 @@ steps:
- label: Armv8 -fno-exceptions
command: libcxx/utils/ci/run-buildbot armv8-no-exceptions
env:
- CC: clang
- CXX: clang++
+ CC: cc
+ CXX: c++
agents:
queue: libcxx-builders-linaro-arm
arch: armv8l
@@ -78,8 +78,8 @@ steps:
- label: Armv7
command: libcxx/utils/ci/run-buildbot armv7
env:
- CC: clang
- CXX: clang++
+ CC: cc
+ CXX: c++
agents:
queue: libcxx-builders-linaro-arm
arch: armv8l
@@ -88,8 +88,8 @@ steps:
- label: Armv7 -fno-exceptions
command: libcxx/utils/ci/run-buildbot armv7-no-exceptions
env:
- CC: clang
- CXX: clang++
+ CC: cc
+ CXX: c++
agents:
queue: libcxx-builders-linaro-arm
arch: armv8l
@@ -98,8 +98,8 @@ steps:
- label: Armv7-M picolibc
command: libcxx/utils/ci/run-buildbot armv7m-picolibc
env:
- CC: clang
- CXX: clang++
+ CC: cc
+ CXX: c++
agents:
queue: libcxx-builders-linaro-arm
arch: aarch64
@@ -108,8 +108,8 @@ steps:
- label: Armv7-M picolibc -fno-exceptions
command: libcxx/utils/ci/run-buildbot armv7m-picolibc-no-exceptions
env:
- CC: clang
- CXX: clang++
+ CC: cc
+ CXX: c++
agents:
queue: libcxx-builders-linaro-arm
arch: aarch64
>From a0f7d110c1c78d7a758584a0041630792cfea2fe Mon Sep 17 00:00:00 2001
From: Louis Dionne <ldionne.2 at gmail.com>
Date: Mon, 10 Nov 2025 12:55:10 -0500
Subject: [PATCH 3/4] Fix compiler used by MinGW jobs
---
.github/workflows/libcxx-build-and-test.yaml | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/.github/workflows/libcxx-build-and-test.yaml b/.github/workflows/libcxx-build-and-test.yaml
index 6a6ef62af565d..a124c552e425c 100644
--- a/.github/workflows/libcxx-build-and-test.yaml
+++ b/.github/workflows/libcxx-build-and-test.yaml
@@ -249,11 +249,11 @@ jobs:
- { config: clang-cl-no-vcruntime, mingw: false, cc: clang-cl, cxx: clang-cl }
- { config: clang-cl-debug, mingw: false, cc: clang-cl, cxx: clang-cl }
- { config: clang-cl-static-crt, mingw: false, cc: clang-cl, cxx: clang-cl }
- - { config: mingw-dll, mingw: true, cc: clang-cl, cxx: clang-cl }
+ - { config: mingw-dll, mingw: true, cc: cc, cxx: c++ }
- { config: mingw-dll, mingw: true, cc: i686-w64-mingw32-clang, cxx: i686-w64-mingw32-clang++ }
- - { config: mingw-static, mingw: true, cc: clang-cl, cxx: clang-cl }
- - { config: mingw-incomplete-sysroot, mingw: true, cc: clang-cl, cxx: clang-cl }
- - { config: mingw-static, mingw: true, cc: clang-cl, cxx: clang-cl, runner: windows-11-arm }
+ - { config: mingw-static, mingw: true, cc: cc, cxx: c++ }
+ - { config: mingw-incomplete-sysroot, mingw: true, cc: cc, cxx: c++ }
+ - { config: mingw-static, mingw: true, cc: cc, cxx: c++, runner: windows-11-arm }
runs-on: ${{ matrix.runner != '' && matrix.runner || 'windows-2022' }}
steps:
- uses: actions/checkout at 08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
>From d9aff069960f68dbf9799eabea1423ddcace8f7a Mon Sep 17 00:00:00 2001
From: Louis Dionne <ldionne.2 at gmail.com>
Date: Wed, 19 Nov 2025 13:31:25 -0500
Subject: [PATCH 4/4] Remove functions that were moved around
---
libcxx/utils/ci/run-buildbot | 25 -------------------------
1 file changed, 25 deletions(-)
diff --git a/libcxx/utils/ci/run-buildbot b/libcxx/utils/ci/run-buildbot
index 19ad913c807cd..9dd76043acd8c 100755
--- a/libcxx/utils/ci/run-buildbot
+++ b/libcxx/utils/ci/run-buildbot
@@ -95,31 +95,6 @@ MONOREPO_ROOT="${MONOREPO_ROOT:="$(git rev-parse --show-toplevel)"}"
BUILD_DIR="${BUILD_DIR:=${MONOREPO_ROOT}/build/${BUILDER}}"
INSTALL_DIR="${BUILD_DIR}/install"
-function step() {
- endstep
- set +x
- if [[ ! -z ${GITHUB_ACTIONS+x} ]]; then
- echo "::group::$1"
- export IN_GROUP=1
- else
- echo "--- $1"
- fi
- set -x
-}
-
-function endstep() {
- set +x
- if [[ ! -z ${GITHUB_ACTIONS+x} ]] && [[ ! -z ${IN_GROUP+x} ]]; then
- echo "::endgroup::"
- unset IN_GROUP
- fi
- set -x
-}
-
-function error() {
- echo "::error::$1"
-}
-
if [ -z ${CC+x} ]; then
error "Environment variable CC must be defined"
exit 1
More information about the llvm-commits
mailing list