[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