[llvm] Add macOS premerge check workflow (PR #207435)
Mishal Shah via llvm-commits
llvm-commits at lists.llvm.org
Sat Jul 4 00:05:13 PDT 2026
https://github.com/shahmishal updated https://github.com/llvm/llvm-project/pull/207435
>From 4592973b72322eec62908bbec6409cb6b9b3ff90 Mon Sep 17 00:00:00 2001
From: Mishal Shah <mishal_shah at apple.com>
Date: Fri, 3 Jul 2026 10:41:33 -0700
Subject: [PATCH 1/3] Add macOS premerge check workflow
Added a premerge check workflow for macOS self-hosted runners to build and test projects.
---
.github/workflows/premerge.yaml | 38 +++++++++++++++++++++++++++++++++
1 file changed, 38 insertions(+)
diff --git a/.github/workflows/premerge.yaml b/.github/workflows/premerge.yaml
index d506e631e2f21..4825b80da2c76 100644
--- a/.github/workflows/premerge.yaml
+++ b/.github/workflows/premerge.yaml
@@ -248,3 +248,41 @@ jobs:
# The libcxx tests fail, so we are skipping the runtime targets.
ninja -C build ${project_check_targets}
+
+ premerge-check-macos-self-hosted-runners:
+ name: Build and Test macOS
+ runs-on: [self-hosted, macos, apple-runners]
+ if: >-
+ github.repository_owner == 'llvm' &&
+ (github.event_name != 'pull_request' || github.event.action != 'closed')
+ steps:
+ - name: Checkout LLVM
+ uses: actions/checkout at de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ with:
+ persist-credentials: false
+ fetch-depth: 2
+ - name: Install Ninja
+ run: |
+ brew install ninja
+ - name: Build and Test
+ run: |
+ source <(git diff --name-only HEAD~1...HEAD | python3 .ci/compute_projects.py)
+
+ if [[ "${projects_to_build}" == "" ]]; then
+ echo "No projects to build"
+ exit 0
+ fi
+
+ echo "Building projects: ${projects_to_build}"
+ echo "Running project checks targets: ${project_check_targets}"
+
+ xcrun cmake -G Ninja \
+ -B build \
+ -S llvm \
+ -DLLVM_ENABLE_PROJECTS="${projects_to_build}" \
+ -DLLVM_DISABLE_ASSEMBLY_FILES=ON \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DLLDB_INCLUDE_TESTS=OFF \
+ -DLLVM_ENABLE_ASSERTIONS=ON \
+
+ ninja -C build ${project_check_targets}
>From 880315710e05b23174e500f50618fea78c691d37 Mon Sep 17 00:00:00 2001
From: Mishal Shah <mishal_shah at apple.com>
Date: Fri, 3 Jul 2026 23:38:41 -0700
Subject: [PATCH 2/3] Enhance debug output in premerge workflow
Added debug statements to display changed files and building information.
---
.github/workflows/premerge.yaml | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/.github/workflows/premerge.yaml b/.github/workflows/premerge.yaml
index 4825b80da2c76..18fc6eb01c409 100644
--- a/.github/workflows/premerge.yaml
+++ b/.github/workflows/premerge.yaml
@@ -266,16 +266,23 @@ jobs:
brew install ninja
- name: Build and Test
run: |
+ echo "** Debug **"
+ git diff --name-only HEAD~1...HEAD
+ echo "** Debug **"
+
source <(git diff --name-only HEAD~1...HEAD | python3 .ci/compute_projects.py)
+ echo "Building projects: ${projects_to_build}"
+ echo "Running project checks targets: ${project_check_targets}"
+ echo "Building runtimes: ${runtimes_to_build}"
+ echo "Running runtimes checks targets: ${runtimes_check_targets}"
+ echo "Running runtimes checks requiring reconfiguring targets: ${runtimes_check_targets_needs_reconfig}"
+
if [[ "${projects_to_build}" == "" ]]; then
echo "No projects to build"
exit 0
fi
- echo "Building projects: ${projects_to_build}"
- echo "Running project checks targets: ${project_check_targets}"
-
xcrun cmake -G Ninja \
-B build \
-S llvm \
>From 263f980a7052f165f26e8e4f7a49cb890966cfc4 Mon Sep 17 00:00:00 2001
From: Mishal Shah <mishal_shah at apple.com>
Date: Sat, 4 Jul 2026 00:02:52 -0700
Subject: [PATCH 3/3] [Github] Fix macOS self-hosted premerge env var sourcing
source <(...) via process substitution silently produces empty variables under macOS's bash 3.2, causing the job to skip building any projects. Write compute_projects.py output to a temp file and source that instead.
---
.github/workflows/premerge.yaml | 7 ++-----
1 file changed, 2 insertions(+), 5 deletions(-)
diff --git a/.github/workflows/premerge.yaml b/.github/workflows/premerge.yaml
index 18fc6eb01c409..2a1aa447fcd54 100644
--- a/.github/workflows/premerge.yaml
+++ b/.github/workflows/premerge.yaml
@@ -266,11 +266,8 @@ jobs:
brew install ninja
- name: Build and Test
run: |
- echo "** Debug **"
- git diff --name-only HEAD~1...HEAD
- echo "** Debug **"
-
- source <(git diff --name-only HEAD~1...HEAD | python3 .ci/compute_projects.py)
+ git diff --name-only HEAD~1...HEAD | python3 .ci/compute_projects.py > /tmp/env_vars.sh
+ source /tmp/env_vars.sh
echo "Building projects: ${projects_to_build}"
echo "Running project checks targets: ${project_check_targets}"
More information about the llvm-commits
mailing list