[llvm] Arm windows wix (PR #216523)

Tom Stellard via llvm-commits llvm-commits at lists.llvm.org
Sun Aug 23 00:22:17 PDT 2026


https://github.com/tstellar updated https://github.com/llvm/llvm-project/pull/216523

>From a27ef945111a3235d9841d3bd25ec13c5a587119 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Thu, 13 Aug 2026 15:06:25 -0700
Subject: [PATCH 01/57] workflows/release-binaries: Disable LTO and PGO for PR
 testing on Windows ARM

Otherwise they will run into the 6 hour timeout and fail every time.
---
 .github/workflows/release-binaries.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/release-binaries.yml b/.github/workflows/release-binaries.yml
index 36c04523fda06..ee450cdf0498c 100644
--- a/.github/workflows/release-binaries.yml
+++ b/.github/workflows/release-binaries.yml
@@ -197,7 +197,7 @@ jobs:
           # These runners cannot build the full release package faster than
           # the 6 hours timeout limit, so we need to use a configuration
           # that builds more quickly.
-          macos-14)
+          macos-14 | windows-11-arm)
             bootstrap_prefix="BOOTSTRAP"
             target_cmake_flags="$target_cmake_flags -DLLVM_RELEASE_ENABLE_LTO=OFF -DLLVM_RELEASE_ENABLE_PGO=OFF"
             ;;

>From 9e263f9bbd1469fabb1a150c50e1bb5fdae3b17a Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Thu, 13 Aug 2026 15:10:51 -0700
Subject: [PATCH 02/57] Revert "workflows/release-binaries: Disable LTO and PGO
 for PR testing on Windows ARM"

This reverts commit a27ef945111a3235d9841d3bd25ec13c5a587119.
---
 .github/workflows/release-binaries.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/release-binaries.yml b/.github/workflows/release-binaries.yml
index ee450cdf0498c..36c04523fda06 100644
--- a/.github/workflows/release-binaries.yml
+++ b/.github/workflows/release-binaries.yml
@@ -197,7 +197,7 @@ jobs:
           # These runners cannot build the full release package faster than
           # the 6 hours timeout limit, so we need to use a configuration
           # that builds more quickly.
-          macos-14 | windows-11-arm)
+          macos-14)
             bootstrap_prefix="BOOTSTRAP"
             target_cmake_flags="$target_cmake_flags -DLLVM_RELEASE_ENABLE_LTO=OFF -DLLVM_RELEASE_ENABLE_PGO=OFF"
             ;;

>From 6538f7552413c1861a009748cb75ebb02f2e1ec3 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Sat, 15 Aug 2026 12:05:54 -0700
Subject: [PATCH 03/57] Add --skip-pgo flag to build_llvm_release

---
 .github/workflows/release-binaries.yml    | 3 ++-
 llvm/utils/release/build_llvm_release.bat | 7 +++++--
 2 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/.github/workflows/release-binaries.yml b/.github/workflows/release-binaries.yml
index 36c04523fda06..df62f799f2380 100644
--- a/.github/workflows/release-binaries.yml
+++ b/.github/workflows/release-binaries.yml
@@ -289,10 +289,11 @@ jobs:
       env:
         INPUTS_RUNS_ON: ${{ inputs.runs-on }}
         LLVM_VERSION: ${{ needs.prepare.outputs.release-version }}
+        EXTRA_ARGS: ${{ case(needs.prepare.outputs.build-runs-on == 'windows-11-arm', '--disable-pgo', '') }}
       run: |
         subst S: ${{ github.workspace }}
         cd S:\llvm\utils\release\
-        .\build_llvm_release.bat "--$($env:RUNNER_ARCH.ToLower())" --version $env:LLVM_VERSION --local-python --skip-checkout
+      .\build_llvm_release.bat "--$($env:RUNNER_ARCH.ToLower())" --version $env:LLVM_VERSION --local-python --skip-checkout $env:EXTRA_ARGS
         if ($env:INPUTS_RUNS_ON -eq "windows-11-arm") {
           $zstd = (Get-ChildItem -Recurse -Filter "zstd.exe" | Select-Object -First 1).fullName
           mv $zstd $env:GITHUB_WORKSPACE
diff --git a/llvm/utils/release/build_llvm_release.bat b/llvm/utils/release/build_llvm_release.bat
index f15065970a167..2e11452619ea2 100644
--- a/llvm/utils/release/build_llvm_release.bat
+++ b/llvm/utils/release/build_llvm_release.bat
@@ -10,7 +10,7 @@ goto begin
 echo Script for building the LLVM installer on Windows,
 echo used for the releases at https://github.com/llvm/llvm-project/releases
 echo.
-echo Usage: build_llvm_release.bat --version ^<version^> [--x86,--x64, --arm64] [--skip-checkout] [--local-python] [--force-msvc]
+echo Usage: build_llvm_release.bat --version ^<version^> [--x86,--x64, --arm64] [--skip-checkout] [--local-python] [--force-msvc] [--disable-pgo]
 echo.
 echo Options:
 echo --version: [required] version to build
@@ -40,6 +40,7 @@ set arm64=
 set skip-checkout=
 set local-python=
 set force-msvc=
+set disable-pgo=
 call :parse_args %*
 
 if "%help%" NEQ "" goto usage
@@ -353,7 +354,9 @@ set cmake_flags=%all_cmake_flags:\=/%
 
 mkdir build_%arch%
 cd build_%arch%
-call :do_generate_profile || exit /b 1
+if "%disable-pgo%" == "true" (
+  call :do_generate_profile || exit /b 1
+)
 cmake -GNinja %cmake_flags% ^
   -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra;lld;lldb;flang;mlir" ^
   %common_lldb_flags% ^

>From 169b295662dd3f566d7f3d80077b9d108d5d9760 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Sat, 15 Aug 2026 12:09:27 -0700
Subject: [PATCH 04/57] Debug

---
 .github/workflows/release-binaries-all.yml | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/.github/workflows/release-binaries-all.yml b/.github/workflows/release-binaries-all.yml
index 862300a8118e5..ccbb329966bc7 100644
--- a/.github/workflows/release-binaries-all.yml
+++ b/.github/workflows/release-binaries-all.yml
@@ -108,10 +108,6 @@ jobs:
         # We use ubuntu-22.04 rather than the latest version to make the built
         # binaries more portable (eg functional aginast older glibc).
         runs-on:
-          - ubuntu-22.04
-          - ubuntu-22.04-arm
-          - macos-14
-          - windows-2022
           - windows-11-arm
 
     uses: ./.github/workflows/release-binaries.yml

>From d171528852f8a1b7e3c4d82726b388a51c11e785 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Sat, 15 Aug 2026 12:20:00 -0700
Subject: [PATCH 05/57] Fix

---
 .github/workflows/release-binaries.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/release-binaries.yml b/.github/workflows/release-binaries.yml
index df62f799f2380..2c9442f62ebde 100644
--- a/.github/workflows/release-binaries.yml
+++ b/.github/workflows/release-binaries.yml
@@ -293,7 +293,7 @@ jobs:
       run: |
         subst S: ${{ github.workspace }}
         cd S:\llvm\utils\release\
-      .\build_llvm_release.bat "--$($env:RUNNER_ARCH.ToLower())" --version $env:LLVM_VERSION --local-python --skip-checkout $env:EXTRA_ARGS
+        .\build_llvm_release.bat "--$($env:RUNNER_ARCH.ToLower())" --version $env:LLVM_VERSION --local-python --skip-checkout $env:EXTRA_ARGS
         if ($env:INPUTS_RUNS_ON -eq "windows-11-arm") {
           $zstd = (Get-ChildItem -Recurse -Filter "zstd.exe" | Select-Object -First 1).fullName
           mv $zstd $env:GITHUB_WORKSPACE

>From 7291c0cae515e6dee098a26e3b2281e9ea07ab3f Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Sat, 15 Aug 2026 15:09:43 -0700
Subject: [PATCH 06/57] Fix

---
 llvm/utils/release/build_llvm_release.bat | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/llvm/utils/release/build_llvm_release.bat b/llvm/utils/release/build_llvm_release.bat
index 2e11452619ea2..b1c21478f210e 100644
--- a/llvm/utils/release/build_llvm_release.bat
+++ b/llvm/utils/release/build_llvm_release.bat
@@ -354,7 +354,7 @@ set cmake_flags=%all_cmake_flags:\=/%
 
 mkdir build_%arch%
 cd build_%arch%
-if "%disable-pgo%" == "true" (
+if "%disable-pgo%" != "true" (
   call :do_generate_profile || exit /b 1
 )
 cmake -GNinja %cmake_flags% ^

>From 4bbc89c2b8355da8d36433bd91269eb96b11fe21 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Sat, 15 Aug 2026 17:19:20 -0700
Subject: [PATCH 07/57] INstall Wix

---
 .github/workflows/release-binaries.yml | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/.github/workflows/release-binaries.yml b/.github/workflows/release-binaries.yml
index 2c9442f62ebde..2879ff55bb645 100644
--- a/.github/workflows/release-binaries.yml
+++ b/.github/workflows/release-binaries.yml
@@ -283,6 +283,10 @@ jobs:
         release_dir=`find "$BUILD_PREFIX/build" -iname 'stage2-bins'`
         mv "$release_dir/$RELEASE_BINARY_FILENAME" .
 
+    - name: Install Wix (Windows ARM64)
+      if: runner.os == 'Windows' && runner.arch == 'ARM64'
+      run: dotnet tool install --global wix
+
     - name: Build Windows
       id: build-windows
       if: runner.os == 'Windows'

>From a62023c2a604563391b957524f62c9b7d85b7ac3 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Sat, 15 Aug 2026 20:26:40 -0700
Subject: [PATCH 08/57] Fix condition

---
 llvm/utils/release/build_llvm_release.bat | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/llvm/utils/release/build_llvm_release.bat b/llvm/utils/release/build_llvm_release.bat
index b1c21478f210e..11ca0feab1349 100644
--- a/llvm/utils/release/build_llvm_release.bat
+++ b/llvm/utils/release/build_llvm_release.bat
@@ -354,7 +354,7 @@ set cmake_flags=%all_cmake_flags:\=/%
 
 mkdir build_%arch%
 cd build_%arch%
-if "%disable-pgo%" != "true" (
+if "%disable-pgo%" neq "true" (
   call :do_generate_profile || exit /b 1
 )
 cmake -GNinja %cmake_flags% ^

>From 9e09c66f4f6557466d018326c050abe929f6f809 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Mon, 17 Aug 2026 12:26:38 -0700
Subject: [PATCH 09/57] Fast build

---
 llvm/utils/release/build_llvm_release.bat | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/llvm/utils/release/build_llvm_release.bat b/llvm/utils/release/build_llvm_release.bat
index 11ca0feab1349..0d44406fb444c 100644
--- a/llvm/utils/release/build_llvm_release.bat
+++ b/llvm/utils/release/build_llvm_release.bat
@@ -10,7 +10,7 @@ goto begin
 echo Script for building the LLVM installer on Windows,
 echo used for the releases at https://github.com/llvm/llvm-project/releases
 echo.
-echo Usage: build_llvm_release.bat --version ^<version^> [--x86,--x64, --arm64] [--skip-checkout] [--local-python] [--force-msvc] [--disable-pgo]
+echo Usage: build_llvm_release.bat --version ^<version^> [--x86,--x64, --arm64] [--skip-checkout] [--local-python] [--force-msvc] [--fast-build]
 echo.
 echo Options:
 echo --version: [required] version to build
@@ -40,7 +40,7 @@ set arm64=
 set skip-checkout=
 set local-python=
 set force-msvc=
-set disable-pgo=
+set fast-build=
 call :parse_args %*
 
 if "%help%" NEQ "" goto usage
@@ -327,6 +327,7 @@ cmake -GNinja %cmake_flags% ^
   -DLLVM_TARGETS_TO_BUILD=Native ^
   %llvm_src%\llvm || exit /b 1
 ninja || ninja || ninja || exit /b 1
+if "%fast-build%" neq "true" (
 ninja check-llvm || ninja check-llvm || ninja check-llvm || exit /b 1
 ninja check-clang || ninja check-clang || ninja check-clang || exit /b 1
 ninja check-lld || ninja check-lld || ninja check-lld || exit /b 1
@@ -335,6 +336,7 @@ if "%arch%"=="amd64" (
 )
 ninja check-clang-tools || ninja check-clang-tools || ninja check-clang-tools || exit /b 1
 ninja check-clangd || ninja check-clangd || ninja check-clangd || exit /b 1
+)
 cd..
 
 REM CMake expects the paths that specifies the compiler and linker to be
@@ -354,7 +356,7 @@ set cmake_flags=%all_cmake_flags:\=/%
 
 mkdir build_%arch%
 cd build_%arch%
-if "%disable-pgo%" neq "true" (
+if "%fast-build%" neq "true" (
   call :do_generate_profile || exit /b 1
 )
 cmake -GNinja %cmake_flags% ^

>From ad7f393de7590b09fe21e1c1654350c677d3ff66 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Mon, 17 Aug 2026 14:02:57 -0700
Subject: [PATCH 10/57] Use --fast-build flag

---
 .github/workflows/release-binaries.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/release-binaries.yml b/.github/workflows/release-binaries.yml
index 2879ff55bb645..2db9371529a7e 100644
--- a/.github/workflows/release-binaries.yml
+++ b/.github/workflows/release-binaries.yml
@@ -293,7 +293,7 @@ jobs:
       env:
         INPUTS_RUNS_ON: ${{ inputs.runs-on }}
         LLVM_VERSION: ${{ needs.prepare.outputs.release-version }}
-        EXTRA_ARGS: ${{ case(needs.prepare.outputs.build-runs-on == 'windows-11-arm', '--disable-pgo', '') }}
+        EXTRA_ARGS: ${{ case(needs.prepare.outputs.build-runs-on == 'windows-11-arm', '--fast-build', '') }}
       run: |
         subst S: ${{ github.workspace }}
         cd S:\llvm\utils\release\

>From 1c10e8b0744ed07114628dceaa545fe05a2c6fea Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Mon, 17 Aug 2026 21:12:16 -0700
Subject: [PATCH 11/57] Fix wix install

---
 .github/workflows/release-binaries.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/release-binaries.yml b/.github/workflows/release-binaries.yml
index 2db9371529a7e..cfc88be912d82 100644
--- a/.github/workflows/release-binaries.yml
+++ b/.github/workflows/release-binaries.yml
@@ -285,7 +285,7 @@ jobs:
 
     - name: Install Wix (Windows ARM64)
       if: runner.os == 'Windows' && runner.arch == 'ARM64'
-      run: dotnet tool install --global wix
+      run: Install-ChocoPackage wixtoolset -ArgumentList "--force" 
 
     - name: Build Windows
       id: build-windows

>From 42435b993ee94c58f8f61233eed7f1574ac548f1 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Tue, 18 Aug 2026 06:42:29 -0700
Subject: [PATCH 12/57] Fix Wix install

---
 .github/workflows/release-binaries.yml | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/.github/workflows/release-binaries.yml b/.github/workflows/release-binaries.yml
index cfc88be912d82..8a3b0297f6521 100644
--- a/.github/workflows/release-binaries.yml
+++ b/.github/workflows/release-binaries.yml
@@ -283,9 +283,16 @@ jobs:
         release_dir=`find "$BUILD_PREFIX/build" -iname 'stage2-bins'`
         mv "$release_dir/$RELEASE_BINARY_FILENAME" .
 
+      # This is copied from https://github.com/actions/runner-images/blob/main/images/windows/scripts/build/Install-Wix.ps1
     - name: Install Wix (Windows ARM64)
       if: runner.os == 'Windows' && runner.arch == 'ARM64'
-      run: Install-ChocoPackage wixtoolset -ArgumentList "--force" 
+      run: |
+        Install-ChocoPackage wixtoolset -ArgumentList "--force"
+        Update-Environment
+        $currentPath = [System.Environment]::GetEnvironmentVariable("PATH", "Machine")
+        $newPath = $currentPath + ";$(Join-Path -Path $env:WIX -ChildPath "bin")"
+        [Environment]::SetEnvironmentVariable("PATH", $newPath, "Machine")
+        Update-Environment
 
     - name: Build Windows
       id: build-windows

>From 80390f51e3b5db22d24d14b5e6ede4883a040aea Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Tue, 18 Aug 2026 14:54:39 -0700
Subject: [PATCH 13/57] Debug

---
 .github/workflows/release-binaries.yml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/.github/workflows/release-binaries.yml b/.github/workflows/release-binaries.yml
index 8a3b0297f6521..a588f2df0b93d 100644
--- a/.github/workflows/release-binaries.yml
+++ b/.github/workflows/release-binaries.yml
@@ -293,6 +293,7 @@ jobs:
         $newPath = $currentPath + ";$(Join-Path -Path $env:WIX -ChildPath "bin")"
         [Environment]::SetEnvironmentVariable("PATH", $newPath, "Machine")
         Update-Environment
+        Get-ChildItem -Path C:\ -Filter candle.exe -Recurse
 
     - name: Build Windows
       id: build-windows

>From 2e359e808a33c11454be1d44e8a1d16a9ea7d42b Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Tue, 18 Aug 2026 15:15:24 -0700
Subject: [PATCH 14/57] Debug

---
 .github/workflows/release-binaries-all.yml | 1 +
 .github/workflows/release-binaries.yml     | 1 +
 2 files changed, 2 insertions(+)

diff --git a/.github/workflows/release-binaries-all.yml b/.github/workflows/release-binaries-all.yml
index ccbb329966bc7..4a1e51d58a2b0 100644
--- a/.github/workflows/release-binaries-all.yml
+++ b/.github/workflows/release-binaries-all.yml
@@ -108,6 +108,7 @@ jobs:
         # We use ubuntu-22.04 rather than the latest version to make the built
         # binaries more portable (eg functional aginast older glibc).
         runs-on:
+          - windows-2022
           - windows-11-arm
 
     uses: ./.github/workflows/release-binaries.yml
diff --git a/.github/workflows/release-binaries.yml b/.github/workflows/release-binaries.yml
index a588f2df0b93d..4d30a570d0b52 100644
--- a/.github/workflows/release-binaries.yml
+++ b/.github/workflows/release-binaries.yml
@@ -240,6 +240,7 @@ jobs:
       if: runner.os == 'Windows'
       run: |
         git config --global core.autocrlf false
+        Get-ChildItem -Path C:\ -Filter candle.exe -Recurse
 
     - name: Checkout LLVM
       uses: actions/checkout at df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3

>From c61cca1a2a7fbded80ac40108bc50fb72321cb99 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Tue, 18 Aug 2026 15:28:08 -0700
Subject: [PATCH 15/57] Debug

---
 .github/workflows/release-binaries.yml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/.github/workflows/release-binaries.yml b/.github/workflows/release-binaries.yml
index 4d30a570d0b52..8317781e74379 100644
--- a/.github/workflows/release-binaries.yml
+++ b/.github/workflows/release-binaries.yml
@@ -240,7 +240,7 @@ jobs:
       if: runner.os == 'Windows'
       run: |
         git config --global core.autocrlf false
-        Get-ChildItem -Path C:\ -Filter candle.exe -Recurse
+        Get-ChildItem -Path C:\ -Filter candle.exe -Recurse -ErrorAction SilentlyContinue
 
     - name: Checkout LLVM
       uses: actions/checkout at df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
@@ -294,7 +294,7 @@ jobs:
         $newPath = $currentPath + ";$(Join-Path -Path $env:WIX -ChildPath "bin")"
         [Environment]::SetEnvironmentVariable("PATH", $newPath, "Machine")
         Update-Environment
-        Get-ChildItem -Path C:\ -Filter candle.exe -Recurse
+        Get-ChildItem -Path C:\ -Filter candle.exe -Recurse -ErrorAction SilentlyContinue
 
     - name: Build Windows
       id: build-windows

>From 46e580903b15d6ee19e433a344279311856e64ae Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Wed, 19 Aug 2026 06:25:22 -0700
Subject: [PATCH 16/57] Fix wix install

---
 .github/workflows/release-binaries.yml | 8 +-------
 1 file changed, 1 insertion(+), 7 deletions(-)

diff --git a/.github/workflows/release-binaries.yml b/.github/workflows/release-binaries.yml
index 8317781e74379..9c789f449382c 100644
--- a/.github/workflows/release-binaries.yml
+++ b/.github/workflows/release-binaries.yml
@@ -284,16 +284,10 @@ jobs:
         release_dir=`find "$BUILD_PREFIX/build" -iname 'stage2-bins'`
         mv "$release_dir/$RELEASE_BINARY_FILENAME" .
 
-      # This is copied from https://github.com/actions/runner-images/blob/main/images/windows/scripts/build/Install-Wix.ps1
     - name: Install Wix (Windows ARM64)
       if: runner.os == 'Windows' && runner.arch == 'ARM64'
       run: |
-        Install-ChocoPackage wixtoolset -ArgumentList "--force"
-        Update-Environment
-        $currentPath = [System.Environment]::GetEnvironmentVariable("PATH", "Machine")
-        $newPath = $currentPath + ";$(Join-Path -Path $env:WIX -ChildPath "bin")"
-        [Environment]::SetEnvironmentVariable("PATH", $newPath, "Machine")
-        Update-Environment
+        dotnet tool install --global wix
         Get-ChildItem -Path C:\ -Filter candle.exe -Recurse -ErrorAction SilentlyContinue
 
     - name: Build Windows

>From 4de68f8641bb6b21dd3d13ab1dc3ccabf8f972bb Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Wed, 19 Aug 2026 07:44:11 -0700
Subject: [PATCH 17/57] Wix test

---
 .github/workflows/CMakeLists.txt |  3 +++
 .github/workflows/test.c         |  1 +
 .github/workflows/wix-test.yml   | 14 ++++++++++++++
 3 files changed, 18 insertions(+)
 create mode 100644 .github/workflows/CMakeLists.txt
 create mode 100644 .github/workflows/test.c
 create mode 100644 .github/workflows/wix-test.yml

diff --git a/.github/workflows/CMakeLists.txt b/.github/workflows/CMakeLists.txt
new file mode 100644
index 0000000000000..88974a7897d83
--- /dev/null
+++ b/.github/workflows/CMakeLists.txt
@@ -0,0 +1,3 @@
+
+cmake_minimum_required(VERSION 3.20.0)
+add_executable(test test.c)
diff --git a/.github/workflows/test.c b/.github/workflows/test.c
new file mode 100644
index 0000000000000..705d16172d175
--- /dev/null
+++ b/.github/workflows/test.c
@@ -0,0 +1 @@
+int main(int argc, char **argv) { }
diff --git a/.github/workflows/wix-test.yml b/.github/workflows/wix-test.yml
new file mode 100644
index 0000000000000..12ddf12d4584a
--- /dev/null
+++ b/.github/workflows/wix-test.yml
@@ -0,0 +1,14 @@
+on:
+  push:
+
+jobs:
+  wix-test:
+    runs-on: windows-11-arm
+    steps:
+      - shell: bash
+        run: |
+          dotnet tool install --global wix
+          cmake -G Ninja -S . -B build
+          ninja -C build package
+
+

>From ad1f13be240d00de18de82e3f686990e7f54dcc5 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Wed, 19 Aug 2026 07:45:23 -0700
Subject: [PATCH 18/57] Fix

---
 .github/workflows/wix-test.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/wix-test.yml b/.github/workflows/wix-test.yml
index 12ddf12d4584a..f0b7cae852a61 100644
--- a/.github/workflows/wix-test.yml
+++ b/.github/workflows/wix-test.yml
@@ -8,7 +8,7 @@ jobs:
       - shell: bash
         run: |
           dotnet tool install --global wix
-          cmake -G Ninja -S . -B build
+          cmake -G Ninja -S .github/workflows -B build
           ninja -C build package
 
 

>From a73d8f4cade3478e231d55e12bea9d38d8f49e4c Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Wed, 19 Aug 2026 07:47:52 -0700
Subject: [PATCH 19/57] Fix

---
 .github/workflows/wix-test.yml | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/.github/workflows/wix-test.yml b/.github/workflows/wix-test.yml
index f0b7cae852a61..555e5944e10ac 100644
--- a/.github/workflows/wix-test.yml
+++ b/.github/workflows/wix-test.yml
@@ -8,7 +8,10 @@ jobs:
       - shell: bash
         run: |
           dotnet tool install --global wix
-          cmake -G Ninja -S .github/workflows -B build
+          echo "int main(int argc, char **argv) { }" > test.c
+          echo "cmake_minimum_required(VERSION 3.20.0)" > CMakeLists.txt
+          echo "add_executable(test test.c)" >> CMakeLists.txt
+          cmake -G Ninja -S . -B build
           ninja -C build package
 
 

>From 55b293d37d2931f23f2eca50f266104e9a0bb537 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Wed, 19 Aug 2026 11:14:19 -0700
Subject: [PATCH 20/57] Fix

---
 .github/workflows/wix-test.yml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/.github/workflows/wix-test.yml b/.github/workflows/wix-test.yml
index 555e5944e10ac..64cafe89c4654 100644
--- a/.github/workflows/wix-test.yml
+++ b/.github/workflows/wix-test.yml
@@ -11,6 +11,7 @@ jobs:
           echo "int main(int argc, char **argv) { }" > test.c
           echo "cmake_minimum_required(VERSION 3.20.0)" > CMakeLists.txt
           echo "add_executable(test test.c)" >> CMakeLists.txt
+          echo "include(CPack)" >> CMakeLists.txt
           cmake -G Ninja -S . -B build
           ninja -C build package
 

>From c6104dd866c1c6c0b8755280013bc2fd38e3a61c Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Wed, 19 Aug 2026 11:15:26 -0700
Subject: [PATCH 21/57] Fix

---
 .github/workflows/wix-test.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/wix-test.yml b/.github/workflows/wix-test.yml
index 64cafe89c4654..5f2c028d2efbf 100644
--- a/.github/workflows/wix-test.yml
+++ b/.github/workflows/wix-test.yml
@@ -12,7 +12,7 @@ jobs:
           echo "cmake_minimum_required(VERSION 3.20.0)" > CMakeLists.txt
           echo "add_executable(test test.c)" >> CMakeLists.txt
           echo "include(CPack)" >> CMakeLists.txt
-          cmake -G Ninja -S . -B build
+          cmake -G Ninja -S . -B build -DCPACK_GENERATOR=WIX
           ninja -C build package
 
 

>From 64929afea52694a7185fa0b6c215c34f960a63ef Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Wed, 19 Aug 2026 11:17:44 -0700
Subject: [PATCH 22/57] Fix

---
 .github/workflows/wix-test.yml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/.github/workflows/wix-test.yml b/.github/workflows/wix-test.yml
index 5f2c028d2efbf..a0f5c9bd1264b 100644
--- a/.github/workflows/wix-test.yml
+++ b/.github/workflows/wix-test.yml
@@ -8,6 +8,7 @@ jobs:
       - shell: bash
         run: |
           dotnet tool install --global wix
+          choco install wixtoolset
           echo "int main(int argc, char **argv) { }" > test.c
           echo "cmake_minimum_required(VERSION 3.20.0)" > CMakeLists.txt
           echo "add_executable(test test.c)" >> CMakeLists.txt

>From 4d0ba4556966f2859e6a4c1751131c0228d92442 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Wed, 19 Aug 2026 11:19:48 -0700
Subject: [PATCH 23/57] Fix

---
 .github/workflows/wix-test.yml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/.github/workflows/wix-test.yml b/.github/workflows/wix-test.yml
index a0f5c9bd1264b..3b93d529d22e5 100644
--- a/.github/workflows/wix-test.yml
+++ b/.github/workflows/wix-test.yml
@@ -9,6 +9,7 @@ jobs:
         run: |
           dotnet tool install --global wix
           choco install wixtoolset
+          gcm candle.exe
           echo "int main(int argc, char **argv) { }" > test.c
           echo "cmake_minimum_required(VERSION 3.20.0)" > CMakeLists.txt
           echo "add_executable(test test.c)" >> CMakeLists.txt

>From 14b51e422409d8d66eabdd1cfa80af8f4004f916 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Wed, 19 Aug 2026 11:22:12 -0700
Subject: [PATCH 24/57] Fix

---
 .github/workflows/wix-test.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/wix-test.yml b/.github/workflows/wix-test.yml
index 3b93d529d22e5..f541dd1838ff4 100644
--- a/.github/workflows/wix-test.yml
+++ b/.github/workflows/wix-test.yml
@@ -9,7 +9,7 @@ jobs:
         run: |
           dotnet tool install --global wix
           choco install wixtoolset
-          gcm candle.exe
+          which candle.exe
           echo "int main(int argc, char **argv) { }" > test.c
           echo "cmake_minimum_required(VERSION 3.20.0)" > CMakeLists.txt
           echo "add_executable(test test.c)" >> CMakeLists.txt

>From a923768ad392adea5bf6b8e08080911e28ff502e Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Wed, 19 Aug 2026 11:24:41 -0700
Subject: [PATCH 25/57] Fix

---
 .github/workflows/wix-test.yml | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/.github/workflows/wix-test.yml b/.github/workflows/wix-test.yml
index f541dd1838ff4..2bbc6525cb866 100644
--- a/.github/workflows/wix-test.yml
+++ b/.github/workflows/wix-test.yml
@@ -9,7 +9,7 @@ jobs:
         run: |
           dotnet tool install --global wix
           choco install wixtoolset
-          which candle.exe
+          #which candle.exe
           echo "int main(int argc, char **argv) { }" > test.c
           echo "cmake_minimum_required(VERSION 3.20.0)" > CMakeLists.txt
           echo "add_executable(test test.c)" >> CMakeLists.txt
@@ -17,4 +17,7 @@ jobs:
           cmake -G Ninja -S . -B build -DCPACK_GENERATOR=WIX
           ninja -C build package
 
+      - shell: bash
+        run: |
+          which candle.exe
 

>From 065e1109c8fc0408443d01b78eb085be2ce49524 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Wed, 19 Aug 2026 11:26:48 -0700
Subject: [PATCH 26/57] Fix

---
 .github/workflows/wix-test.yml | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/.github/workflows/wix-test.yml b/.github/workflows/wix-test.yml
index 2bbc6525cb866..7a89f1d260b04 100644
--- a/.github/workflows/wix-test.yml
+++ b/.github/workflows/wix-test.yml
@@ -10,6 +10,12 @@ jobs:
           dotnet tool install --global wix
           choco install wixtoolset
           #which candle.exe
+
+      - shell: bash
+        run: |
+          which candle.exe
+      - shell: bash
+        run: |
           echo "int main(int argc, char **argv) { }" > test.c
           echo "cmake_minimum_required(VERSION 3.20.0)" > CMakeLists.txt
           echo "add_executable(test test.c)" >> CMakeLists.txt
@@ -17,7 +23,3 @@ jobs:
           cmake -G Ninja -S . -B build -DCPACK_GENERATOR=WIX
           ninja -C build package
 
-      - shell: bash
-        run: |
-          which candle.exe
-

>From cb9166a15a1c18ea09b4274a734b3b337ef2df34 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Wed, 19 Aug 2026 11:31:07 -0700
Subject: [PATCH 27/57] Fix

---
 .github/workflows/wix-test.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/wix-test.yml b/.github/workflows/wix-test.yml
index 7a89f1d260b04..59a22fcbbb92b 100644
--- a/.github/workflows/wix-test.yml
+++ b/.github/workflows/wix-test.yml
@@ -10,7 +10,7 @@ jobs:
           dotnet tool install --global wix
           choco install wixtoolset
           #which candle.exe
-
+      - run: echo "${env:WIX}bin" >> $env:GITHUB_PATH
       - shell: bash
         run: |
           which candle.exe

>From 2518d5104e4a56e682abfc7a672ffa0f76051e51 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Wed, 19 Aug 2026 15:15:29 -0700
Subject: [PATCH 28/57] Debug

---
 .github/workflows/wix-test.yml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/.github/workflows/wix-test.yml b/.github/workflows/wix-test.yml
index 59a22fcbbb92b..2b167bfdd68f2 100644
--- a/.github/workflows/wix-test.yml
+++ b/.github/workflows/wix-test.yml
@@ -10,6 +10,7 @@ jobs:
           dotnet tool install --global wix
           choco install wixtoolset
           #which candle.exe
+      - run: echo "${env:WIX}bin"
       - run: echo "${env:WIX}bin" >> $env:GITHUB_PATH
       - shell: bash
         run: |

>From 25395b1173f9ebf5a38bc6436a801036c56a4640 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Wed, 19 Aug 2026 15:31:46 -0700
Subject: [PATCH 29/57] Fix

---
 .github/workflows/wix-test.yml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/.github/workflows/wix-test.yml b/.github/workflows/wix-test.yml
index 2b167bfdd68f2..84b94f8fa2d1b 100644
--- a/.github/workflows/wix-test.yml
+++ b/.github/workflows/wix-test.yml
@@ -11,6 +11,7 @@ jobs:
           choco install wixtoolset
           #which candle.exe
       - run: echo "${env:WIX}bin"
+      - run: echo   "C:\Program Files (x86)\WiX Toolset v3.14\bin" >> $env:GITHUB_PATH
       - run: echo "${env:WIX}bin" >> $env:GITHUB_PATH
       - shell: bash
         run: |

>From d4bc3bb34bcdf800509cfccae2d5e4e347e44b44 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Wed, 19 Aug 2026 16:22:00 -0700
Subject: [PATCH 30/57] Fix

---
 .github/workflows/wix-test.yml | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/.github/workflows/wix-test.yml b/.github/workflows/wix-test.yml
index 84b94f8fa2d1b..2e8cf448cb6df 100644
--- a/.github/workflows/wix-test.yml
+++ b/.github/workflows/wix-test.yml
@@ -11,8 +11,9 @@ jobs:
           choco install wixtoolset
           #which candle.exe
       - run: echo "${env:WIX}bin"
-      - run: echo   "C:\Program Files (x86)\WiX Toolset v3.14\bin" >> $env:GITHUB_PATH
+      #- run: echo   "C:\Program Files (x86)\WiX Toolset v3.14\bin" >> $env:GITHUB_PATH
       - run: echo "${env:WIX}bin" >> $env:GITHUB_PATH
+      - run: Split-Path (Get-Command candle.exe).Source >> $env:GITHUB_PATH
       - shell: bash
         run: |
           which candle.exe

>From 0563ee45370d9d3bed502b784049177322b0a5cf Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Wed, 19 Aug 2026 16:31:38 -0700
Subject: [PATCH 31/57] Fix

---
 .github/workflows/wix-test.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/wix-test.yml b/.github/workflows/wix-test.yml
index 2e8cf448cb6df..7a9467ab52bde 100644
--- a/.github/workflows/wix-test.yml
+++ b/.github/workflows/wix-test.yml
@@ -13,7 +13,7 @@ jobs:
       - run: echo "${env:WIX}bin"
       #- run: echo   "C:\Program Files (x86)\WiX Toolset v3.14\bin" >> $env:GITHUB_PATH
       - run: echo "${env:WIX}bin" >> $env:GITHUB_PATH
-      - run: Split-Path (Get-Command candle.exe).Source >> $env:GITHUB_PATH
+      - run: Split-Path (Get-ChildItem -Path "C:\" -Filter candle.exe -Recurse -ErrorAction SilentlyContinue | Select-Object -First 1).FullName >> $env:GITHUB_PATH
       - shell: bash
         run: |
           which candle.exe

>From 7f3b997620095f29f71d0f3d690555d95e270559 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Wed, 19 Aug 2026 16:41:55 -0700
Subject: [PATCH 32/57] Fix

---
 .github/workflows/release-binaries.yml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/.github/workflows/release-binaries.yml b/.github/workflows/release-binaries.yml
index 9c789f449382c..ea9dc644f8b45 100644
--- a/.github/workflows/release-binaries.yml
+++ b/.github/workflows/release-binaries.yml
@@ -287,8 +287,8 @@ jobs:
     - name: Install Wix (Windows ARM64)
       if: runner.os == 'Windows' && runner.arch == 'ARM64'
       run: |
-        dotnet tool install --global wix
-        Get-ChildItem -Path C:\ -Filter candle.exe -Recurse -ErrorAction SilentlyContinue
+        choco install wixtoolset
+        Split-Path (Get-ChildItem -Path "C:\" -Filter candle.exe -Recurse -ErrorAction SilentlyContinue | Select-Object -First 1).FullName >> $env:GITHUB_PATH
 
     - name: Build Windows
       id: build-windows

>From 10a45bc7c19abe6d79101933585870a46c4b1927 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Thu, 20 Aug 2026 10:30:50 -0700
Subject: [PATCH 33/57] workflows/release-binaries: Install Wix on Windows
 ARM64

Wix is used for generating the installer and is not installed by default
on Windows ARM64.
---
 .github/workflows/release-binaries.yml | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/.github/workflows/release-binaries.yml b/.github/workflows/release-binaries.yml
index 6893a76541fd6..88dbf2c1c5392 100644
--- a/.github/workflows/release-binaries.yml
+++ b/.github/workflows/release-binaries.yml
@@ -291,6 +291,14 @@ jobs:
         release_dir=`find "$BUILD_PREFIX/build" -iname 'stage2-bins'`
         mv "$release_dir/$RELEASE_BINARY_FILENAME" .
 
+    # Wix is not installed by default on Windows ARM64
+    - name: Install Wix (Windows ARM64)
+      if: runner.os == 'Windows' && runner.arch == 'ARM64'
+      run: |
+        choco install wixtoolset
+        # Add wix install directory to PATH.
+        Split-Path (Get-ChildItem -Path "C:\" -Filter candle.exe -Recurse -ErrorAction SilentlyContinue | Select-Object -First 1).FullName
+
     - name: Build Windows
       id: build-windows
       if: runner.os == 'Windows'

>From 9625bc6e6705f9a96856dd28ece3a5fb98067004 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Thu, 20 Aug 2026 11:00:43 -0700
Subject: [PATCH 34/57] Add fast cc test

---
 .github/workflows/test-fast-cc.yml | 35 ++++++++++++++++++++++++++++++
 1 file changed, 35 insertions(+)
 create mode 100644 .github/workflows/test-fast-cc.yml

diff --git a/.github/workflows/test-fast-cc.yml b/.github/workflows/test-fast-cc.yml
new file mode 100644
index 0000000000000..ca77e376787dd
--- /dev/null
+++ b/.github/workflows/test-fast-cc.yml
@@ -0,0 +1,35 @@
+on:
+  push:
+
+
+jobs:
+  test:
+    runs-on: windows-11-arm
+  env:
+    LLVM_VERSION: 22.1.8
+  steps:
+    - run: |
+        New-Item -Path "C:\temp-download" -ItemType "Directory" -Force ;
+        New-Item -Path "C:\clang" -ItemType "Directory" -Force ;
+        Invoke-WebRequest -Uri "http://github.com/llvm/llvm-project/releases/download/llvmorg-${env:LLVM_VERSION}/clang+llvm-${env:LLVM_VERSION}-x86_64-pc-windows-msvc.tar.xz" -OutFile "clang+llvm-${env:LLVM_VERSION}-x86_64-pc-windows-msvc.tar.xz" ;
+        (Get-FileHash -Path "C:\temp-download\clang+llvm-${env:LLVM_VERSION}-x86_64-pc-windows-msvc.tar.xz" -Algorithm MD5).Hash -eq '0ae1d3effd9ab9d323f7fa595777f0a2' ;
+        xz.exe -d -qq clang+llvm-${env:LLVM_VERSION}-x86_64-pc-windows-msvc.tar.xz ;
+        C:\Windows\System32\tar.exe -xf clang+llvm-${env:LLVM_VERSION}-x86_64-pc-windows-msvc.tar -C C:\clang ;
+        Set-Location C:\clang ;
+        Rename-Item -Path "C:\clang\clang+llvm-${env:LLVM_VERSION}-x86_64-pc-windows-msvc" -NewName "C:\clang\clang-msvc" ;
+        Set-Location C:\clang\clang-msvc ;
+        Remove-Item -Path C:\clang\clang-msvc\libexec -Recurse -Force ;
+        Remove-Item -Path C:\clang\clang-msvc\share -Recurse -Force ;
+        Rename-Item -Path "C:\clang\clang-msvc\bin" -NewName "C:\clang\clang-msvc\bin-full" ;
+        New-Item -Path "C:\clang\clang-msvc\bin" -ItemType Directory -Force ;
+        Set-Location C:\clang\clang-msvc\bin ;
+        Copy-Item -Path C:\clang\clang-msvc\bin-full\*.dll -Destination C:\clang\clang-msvc\bin\. ;
+        Copy-Item -Path C:\clang\clang-msvc\bin-full\clang-cl.exe -Destination C:\clang\clang-msvc\bin\. ;
+        Copy-Item -Path C:\clang\clang-msvc\bin-full\lld-link.exe -Destination C:\clang\clang-msvc\bin\. ;
+        Set-Location C:\clang\clang-msvc ;
+        Remove-Item -Path C:\clang\clang-msvc\bin-full -Recurse -Force ;
+
+    - run: |
+        clang --version
+
+

>From aa74fbe12eec9fb8c2e240043ddce9f274ed1c35 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Thu, 20 Aug 2026 11:02:19 -0700
Subject: [PATCH 35/57] Fix

---
 .github/workflows/test-fast-cc.yml | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/.github/workflows/test-fast-cc.yml b/.github/workflows/test-fast-cc.yml
index ca77e376787dd..8e414f716f258 100644
--- a/.github/workflows/test-fast-cc.yml
+++ b/.github/workflows/test-fast-cc.yml
@@ -5,9 +5,9 @@ on:
 jobs:
   test:
     runs-on: windows-11-arm
-  env:
-    LLVM_VERSION: 22.1.8
-  steps:
+    env:
+      LLVM_VERSION: 22.1.8
+    steps:
     - run: |
         New-Item -Path "C:\temp-download" -ItemType "Directory" -Force ;
         New-Item -Path "C:\clang" -ItemType "Directory" -Force ;

>From b42d1a8aab8867b5535ad65edeff9f6ab23f6e54 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Thu, 20 Aug 2026 11:07:59 -0700
Subject: [PATCH 36/57] Fix

---
 .github/workflows/test-fast-cc.yml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/.github/workflows/test-fast-cc.yml b/.github/workflows/test-fast-cc.yml
index 8e414f716f258..6837f9a63a982 100644
--- a/.github/workflows/test-fast-cc.yml
+++ b/.github/workflows/test-fast-cc.yml
@@ -11,6 +11,7 @@ jobs:
     - run: |
         New-Item -Path "C:\temp-download" -ItemType "Directory" -Force ;
         New-Item -Path "C:\clang" -ItemType "Directory" -Force ;
+        Set-Location C:\temp-download ;
         Invoke-WebRequest -Uri "http://github.com/llvm/llvm-project/releases/download/llvmorg-${env:LLVM_VERSION}/clang+llvm-${env:LLVM_VERSION}-x86_64-pc-windows-msvc.tar.xz" -OutFile "clang+llvm-${env:LLVM_VERSION}-x86_64-pc-windows-msvc.tar.xz" ;
         (Get-FileHash -Path "C:\temp-download\clang+llvm-${env:LLVM_VERSION}-x86_64-pc-windows-msvc.tar.xz" -Algorithm MD5).Hash -eq '0ae1d3effd9ab9d323f7fa595777f0a2' ;
         xz.exe -d -qq clang+llvm-${env:LLVM_VERSION}-x86_64-pc-windows-msvc.tar.xz ;

>From afd39b7e78b5dca17e1891eb3299fa63866dfc2f Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Thu, 20 Aug 2026 11:10:20 -0700
Subject: [PATCH 37/57] Fix

---
 .github/workflows/test-fast-cc.yml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/.github/workflows/test-fast-cc.yml b/.github/workflows/test-fast-cc.yml
index 6837f9a63a982..6d85c8ba529d5 100644
--- a/.github/workflows/test-fast-cc.yml
+++ b/.github/workflows/test-fast-cc.yml
@@ -32,5 +32,6 @@ jobs:
 
     - run: |
         clang --version
+        clang-cl --version
 
 

>From 82ffe865e919e97dd7cf4345acb655ac2811e7fe Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Thu, 20 Aug 2026 11:15:06 -0700
Subject: [PATCH 38/57] Fix

---
 .github/workflows/test-fast-cc.yml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/.github/workflows/test-fast-cc.yml b/.github/workflows/test-fast-cc.yml
index 6d85c8ba529d5..412dd8774afb1 100644
--- a/.github/workflows/test-fast-cc.yml
+++ b/.github/workflows/test-fast-cc.yml
@@ -29,6 +29,7 @@ jobs:
         Copy-Item -Path C:\clang\clang-msvc\bin-full\lld-link.exe -Destination C:\clang\clang-msvc\bin\. ;
         Set-Location C:\clang\clang-msvc ;
         Remove-Item -Path C:\clang\clang-msvc\bin-full -Recurse -Force ;
+        echo "C:\clang\clang-msvc\bin-full" >> $env:GITHUB_PATH ;
 
     - run: |
         clang --version

>From c0c8389ee96ba8eeac005a983a4879065884cc46 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Thu, 20 Aug 2026 11:21:23 -0700
Subject: [PATCH 39/57] Add fast clang

---
 .github/workflows/release-binaries.yml | 30 ++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)

diff --git a/.github/workflows/release-binaries.yml b/.github/workflows/release-binaries.yml
index 036d52512257c..26c42d22e21d8 100644
--- a/.github/workflows/release-binaries.yml
+++ b/.github/workflows/release-binaries.yml
@@ -300,6 +300,36 @@ jobs:
         # Add wix install directory to PATH.
         Split-Path (Get-ChildItem -Path "C:\" -Filter candle.exe -Recurse -ErrorAction SilentlyContinue | Select-Object -First 1).FullName
 
+    # For pull requests, install a fast version of clang so that we can finish the
+    # build under the 6 hour timeout limit.
+    - name: Install fast clang
+      if: runner.os == 'Windows' && runner.arch == 'ARM64' && github.event_name == 'pull_request'
+      env:
+        LLVM_VERSION: 22.1.8
+      run: |
+        New-Item -Path "C:\temp-download" -ItemType "Directory" -Force ;
+        New-Item -Path "C:\clang" -ItemType "Directory" -Force ;
+        Set-Location C:\temp-download ;
+        Invoke-WebRequest -Uri "http://github.com/llvm/llvm-project/releases/download/llvmorg-${env:LLVM_VERSION}/clang+llvm-${env:LLVM_VERSION}-x86_64-pc-windows-msvc.tar.xz" -OutFile "clang+llvm-${env:LLVM_VERSION}-x86_64-pc-windows-msvc.tar.xz" ;
+        (Get-FileHash -Path "C:\temp-download\clang+llvm-${env:LLVM_VERSION}-x86_64-pc-windows-msvc.tar.xz" -Algorithm MD5).Hash -eq '0ae1d3effd9ab9d323f7fa595777f0a2' ;
+        xz.exe -d -qq clang+llvm-${env:LLVM_VERSION}-x86_64-pc-windows-msvc.tar.xz ;
+        C:\Windows\System32\tar.exe -xf clang+llvm-${env:LLVM_VERSION}-x86_64-pc-windows-msvc.tar -C C:\clang ;
+        Set-Location C:\clang ;
+        Rename-Item -Path "C:\clang\clang+llvm-${env:LLVM_VERSION}-x86_64-pc-windows-msvc" -NewName "C:\clang\clang-msvc" ;
+        Set-Location C:\clang\clang-msvc ;
+        Remove-Item -Path C:\clang\clang-msvc\libexec -Recurse -Force ;
+        Remove-Item -Path C:\clang\clang-msvc\share -Recurse -Force ;
+        Rename-Item -Path "C:\clang\clang-msvc\bin" -NewName "C:\clang\clang-msvc\bin-full" ;
+        New-Item -Path "C:\clang\clang-msvc\bin" -ItemType Directory -Force ;
+        Set-Location C:\clang\clang-msvc\bin ;
+        Copy-Item -Path C:\clang\clang-msvc\bin-full\*.dll -Destination C:\clang\clang-msvc\bin\. ;
+        Copy-Item -Path C:\clang\clang-msvc\bin-full\clang-cl.exe -Destination C:\clang\clang-msvc\bin\. ;
+        Copy-Item -Path C:\clang\clang-msvc\bin-full\lld-link.exe -Destination C:\clang\clang-msvc\bin\. ;
+        Set-Location C:\clang\clang-msvc ;
+        Remove-Item -Path C:\clang\clang-msvc\bin-full -Recurse -Force ;
+        echo "C:\clang\clang-msvc\bin-full" >> $env:GITHUB_PATH ;
+
+
     - name: Build Windows
       id: build-windows
       if: runner.os == 'Windows'

>From 86c7c4c656abf5c39f87825d372f4a03483bf8a6 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Thu, 20 Aug 2026 19:37:41 -0700
Subject: [PATCH 40/57] Fix wix path

---
 .github/workflows/release-binaries.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/release-binaries.yml b/.github/workflows/release-binaries.yml
index 26c42d22e21d8..4e4138abab5f5 100644
--- a/.github/workflows/release-binaries.yml
+++ b/.github/workflows/release-binaries.yml
@@ -298,7 +298,7 @@ jobs:
       run: |
         choco install wixtoolset
         # Add wix install directory to PATH.
-        Split-Path (Get-ChildItem -Path "C:\" -Filter candle.exe -Recurse -ErrorAction SilentlyContinue | Select-Object -First 1).FullName
+        Split-Path (Get-ChildItem -Path "C:\" -Filter candle.exe -Recurse -ErrorAction SilentlyContinue | Select-Object -First 1).FullName >> $env:GITHUB_PATH
 
     # For pull requests, install a fast version of clang so that we can finish the
     # build under the 6 hour timeout limit.

>From 0868d5bcf6a51a68292d471aa978f798e6532e4d Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Thu, 20 Aug 2026 19:41:42 -0700
Subject: [PATCH 41/57] Fix compiler path

---
 .github/workflows/release-binaries.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/release-binaries.yml b/.github/workflows/release-binaries.yml
index 4e4138abab5f5..e20e80aa18ae1 100644
--- a/.github/workflows/release-binaries.yml
+++ b/.github/workflows/release-binaries.yml
@@ -327,7 +327,7 @@ jobs:
         Copy-Item -Path C:\clang\clang-msvc\bin-full\lld-link.exe -Destination C:\clang\clang-msvc\bin\. ;
         Set-Location C:\clang\clang-msvc ;
         Remove-Item -Path C:\clang\clang-msvc\bin-full -Recurse -Force ;
-        echo "C:\clang\clang-msvc\bin-full" >> $env:GITHUB_PATH ;
+        echo "PATH=C:\clang\clang-msvc\bin\full":$env:PATH" >> $env:GITHUB_ENV
 
 
     - name: Build Windows

>From 18a100aeb64780001c153d10076a4e9ed04d7bdf Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Thu, 20 Aug 2026 19:58:55 -0700
Subject: [PATCH 42/57] Fix

---
 .github/workflows/release-binaries.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/release-binaries.yml b/.github/workflows/release-binaries.yml
index e20e80aa18ae1..d2b38cfeabee6 100644
--- a/.github/workflows/release-binaries.yml
+++ b/.github/workflows/release-binaries.yml
@@ -327,7 +327,7 @@ jobs:
         Copy-Item -Path C:\clang\clang-msvc\bin-full\lld-link.exe -Destination C:\clang\clang-msvc\bin\. ;
         Set-Location C:\clang\clang-msvc ;
         Remove-Item -Path C:\clang\clang-msvc\bin-full -Recurse -Force ;
-        echo "PATH=C:\clang\clang-msvc\bin\full":$env:PATH" >> $env:GITHUB_ENV
+        echo "PATH=C:\clang\clang-msvc\bin\full;$env:PATH" >> $env:GITHUB_ENV
 
 
     - name: Build Windows

>From 45c7075df20c65998f49bb9f9d83b61156d61d31 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Fri, 21 Aug 2026 06:28:51 -0700
Subject: [PATCH 43/57] Fix typo

---
 .github/workflows/release-binaries.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/release-binaries.yml b/.github/workflows/release-binaries.yml
index d2b38cfeabee6..7ba2c3f1a35b3 100644
--- a/.github/workflows/release-binaries.yml
+++ b/.github/workflows/release-binaries.yml
@@ -327,7 +327,7 @@ jobs:
         Copy-Item -Path C:\clang\clang-msvc\bin-full\lld-link.exe -Destination C:\clang\clang-msvc\bin\. ;
         Set-Location C:\clang\clang-msvc ;
         Remove-Item -Path C:\clang\clang-msvc\bin-full -Recurse -Force ;
-        echo "PATH=C:\clang\clang-msvc\bin\full;$env:PATH" >> $env:GITHUB_ENV
+        echo "PATH=C:\clang\clang-msvc\bin-full;$env:PATH" >> $env:GITHUB_ENV
 
 
     - name: Build Windows

>From 06971f50612e676ea274b5c29653a9d3f3c187f4 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Fri, 21 Aug 2026 13:32:19 -0700
Subject: [PATCH 44/57] Debug

---
 .github/workflows/release-binaries.yml | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/.github/workflows/release-binaries.yml b/.github/workflows/release-binaries.yml
index 7ba2c3f1a35b3..f01cde2f73dd0 100644
--- a/.github/workflows/release-binaries.yml
+++ b/.github/workflows/release-binaries.yml
@@ -338,6 +338,8 @@ jobs:
         LLVM_VERSION: ${{ needs.prepare.outputs.release-version }}
         EXTRA_ARGS: ${{ case(needs.prepare.outputs.build-runs-on == 'windows-11-arm', '--fast-build', '') }}
       run: |
+        SET
+        clang-cl.exe --version
         subst S: ${{ github.workspace }}
         cd S:\llvm\utils\release\
         .\build_llvm_release.bat "--$($env:RUNNER_ARCH.ToLower())" --version $env:LLVM_VERSION --local-python --skip-checkout $env:EXTRA_ARGS

>From 7d80112317ac8c5bea795d78fbd2bfb29011142c Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Fri, 21 Aug 2026 13:46:21 -0700
Subject: [PATCH 45/57] Debug

---
 .github/workflows/release-binaries-all.yml | 1 -
 .github/workflows/release-binaries.yml     | 1 -
 2 files changed, 2 deletions(-)

diff --git a/.github/workflows/release-binaries-all.yml b/.github/workflows/release-binaries-all.yml
index 4a1e51d58a2b0..ccbb329966bc7 100644
--- a/.github/workflows/release-binaries-all.yml
+++ b/.github/workflows/release-binaries-all.yml
@@ -108,7 +108,6 @@ jobs:
         # We use ubuntu-22.04 rather than the latest version to make the built
         # binaries more portable (eg functional aginast older glibc).
         runs-on:
-          - windows-2022
           - windows-11-arm
 
     uses: ./.github/workflows/release-binaries.yml
diff --git a/.github/workflows/release-binaries.yml b/.github/workflows/release-binaries.yml
index f01cde2f73dd0..d43692c278f22 100644
--- a/.github/workflows/release-binaries.yml
+++ b/.github/workflows/release-binaries.yml
@@ -248,7 +248,6 @@ jobs:
       if: runner.os == 'Windows'
       run: |
         git config --global core.autocrlf false
-        Get-ChildItem -Path C:\ -Filter candle.exe -Recurse -ErrorAction SilentlyContinue
 
     - name: Checkout LLVM
       uses: actions/checkout at df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3

>From 31a0092df5c6607fad0de8c0e2e9f2048cc01f56 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Fri, 21 Aug 2026 13:56:46 -0700
Subject: [PATCH 46/57] Debug

---
 .github/workflows/release-binaries.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/release-binaries.yml b/.github/workflows/release-binaries.yml
index d43692c278f22..5d2f9d51b116f 100644
--- a/.github/workflows/release-binaries.yml
+++ b/.github/workflows/release-binaries.yml
@@ -337,7 +337,7 @@ jobs:
         LLVM_VERSION: ${{ needs.prepare.outputs.release-version }}
         EXTRA_ARGS: ${{ case(needs.prepare.outputs.build-runs-on == 'windows-11-arm', '--fast-build', '') }}
       run: |
-        SET
+        Get-ChildItem Env:
         clang-cl.exe --version
         subst S: ${{ github.workspace }}
         cd S:\llvm\utils\release\

>From 09da3f6fcbf8dd8edb223011039233a42a8c67b9 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Fri, 21 Aug 2026 14:20:35 -0700
Subject: [PATCH 47/57] Fix

---
 .github/workflows/release-binaries.yml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/.github/workflows/release-binaries.yml b/.github/workflows/release-binaries.yml
index 5d2f9d51b116f..c36ae7c18f3d6 100644
--- a/.github/workflows/release-binaries.yml
+++ b/.github/workflows/release-binaries.yml
@@ -326,7 +326,7 @@ jobs:
         Copy-Item -Path C:\clang\clang-msvc\bin-full\lld-link.exe -Destination C:\clang\clang-msvc\bin\. ;
         Set-Location C:\clang\clang-msvc ;
         Remove-Item -Path C:\clang\clang-msvc\bin-full -Recurse -Force ;
-        echo "PATH=C:\clang\clang-msvc\bin-full;$env:PATH" >> $env:GITHUB_ENV
+        echo "C:\clang\clang-msvc\bin-full" >> $env:GITHUB_PATH ;
 
 
     - name: Build Windows
@@ -337,7 +337,7 @@ jobs:
         LLVM_VERSION: ${{ needs.prepare.outputs.release-version }}
         EXTRA_ARGS: ${{ case(needs.prepare.outputs.build-runs-on == 'windows-11-arm', '--fast-build', '') }}
       run: |
-        Get-ChildItem Env:
+        echo $Env:PATH
         clang-cl.exe --version
         subst S: ${{ github.workspace }}
         cd S:\llvm\utils\release\

>From 7812374ed113112d0fdadb7ca5025e6b5824ecc6 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Fri, 21 Aug 2026 14:46:56 -0700
Subject: [PATCH 48/57] Fix path

---
 .github/workflows/release-binaries.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/release-binaries.yml b/.github/workflows/release-binaries.yml
index c36ae7c18f3d6..1c5e9c8bc14d8 100644
--- a/.github/workflows/release-binaries.yml
+++ b/.github/workflows/release-binaries.yml
@@ -326,7 +326,7 @@ jobs:
         Copy-Item -Path C:\clang\clang-msvc\bin-full\lld-link.exe -Destination C:\clang\clang-msvc\bin\. ;
         Set-Location C:\clang\clang-msvc ;
         Remove-Item -Path C:\clang\clang-msvc\bin-full -Recurse -Force ;
-        echo "C:\clang\clang-msvc\bin-full" >> $env:GITHUB_PATH ;
+        echo "C:\clang\clang-msvc\bin" >> $env:GITHUB_PATH ;
 
 
     - name: Build Windows

>From 2770c448617a22de8ad9c3c448a57c3a30408dd0 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Fri, 21 Aug 2026 20:46:57 -0700
Subject: [PATCH 49/57] Hack to get correct compiler

---
 llvm/utils/release/build_llvm_release.bat | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/llvm/utils/release/build_llvm_release.bat b/llvm/utils/release/build_llvm_release.bat
index 0d44406fb444c..1fce9c19980ea 100644
--- a/llvm/utils/release/build_llvm_release.bat
+++ b/llvm/utils/release/build_llvm_release.bat
@@ -297,7 +297,7 @@ set arch=%1
 set python_dir=%2
 
 call :set_environment %python_dir% || exit /b 1
-call "%vsdevcmd%" -arch=%arch% || exit /b 1
+REM call "%vsdevcmd%" -arch=%arch% || exit /b 1
 @echo on
 mkdir build_%arch%_stage0
 cd build_%arch%_stage0

>From 6522d1e6777f50615c30fdc0b80ccfeb9fc980e4 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Fri, 21 Aug 2026 21:13:06 -0700
Subject: [PATCH 50/57] HACK

---
 llvm/utils/release/build_llvm_release.bat | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/llvm/utils/release/build_llvm_release.bat b/llvm/utils/release/build_llvm_release.bat
index 1fce9c19980ea..138c0fa6e54a7 100644
--- a/llvm/utils/release/build_llvm_release.bat
+++ b/llvm/utils/release/build_llvm_release.bat
@@ -199,8 +199,8 @@ if "%force-msvc%" == "" (
       set common_compiler_flags=%common_compiler_flags% -fuse-ld=lld
       
       set common_cmake_flags=%common_cmake_flags%^
-        -DCMAKE_C_COMPILER=clang-cl.exe ^
-        -DCMAKE_CXX_COMPILER=clang-cl.exe ^
+        -DCMAKE_C_COMPILER=C:\clang\clang-msvc\bin\clang-cl.exe ^
+        -DCMAKE_CXX_COMPILER=C:\clang\clang-msvc\bin\clang-cl.exe ^
         -DCMAKE_LINKER=lld-link.exe ^
         -DLLVM_ENABLE_LLD=ON ^
         -DCMAKE_C_FLAGS="%common_compiler_flags%" ^
@@ -297,7 +297,7 @@ set arch=%1
 set python_dir=%2
 
 call :set_environment %python_dir% || exit /b 1
-REM call "%vsdevcmd%" -arch=%arch% || exit /b 1
+call "%vsdevcmd%" -arch=%arch% || exit /b 1
 @echo on
 mkdir build_%arch%_stage0
 cd build_%arch%_stage0

>From f935c5bbd6b58f3e81d2992e04000a1e2c598239 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Sat, 22 Aug 2026 22:40:59 -0700
Subject: [PATCH 51/57] release-binaries: Parallelize steps to reduce total run
 time

We can run several of the initial setup steps in parallel and after the
build, we can also run the compression/upload steps in parallel with the
test step.
---
 .github/workflows/release-binaries.yml | 109 +++++++++++++++----------
 1 file changed, 68 insertions(+), 41 deletions(-)

diff --git a/.github/workflows/release-binaries.yml b/.github/workflows/release-binaries.yml
index dce295770b84c..ff8b37757d87a 100644
--- a/.github/workflows/release-binaries.yml
+++ b/.github/workflows/release-binaries.yml
@@ -230,33 +230,17 @@ jobs:
       digest: ${{ steps.digest.outputs.digest }}
       artifact-id: ${{ steps.artifact-upload.outputs.artifact-id }}
     steps:
-    # We need to hard code the python library path for Windows, so in order
-    # to do that we need to specify a specific python version.  It's also
-    # good practice to do this on other OSes so the version of python doesn't
-    # get changed unexpectedly.
-    - uses: actions/setup-python at ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
-      with:
-        python-version: '3.14.6'
-
-    # For some reason this is needed on Windows or else the build system can't find python3.lib.
-    - name: Setup Python library path
-      if: runner.os == 'Windows'
-      run: |
-        echo "LIB=$env:LIB;C:\hostedtoolcache\windows\Python\3.14.6\$($env:RUNNER_ARCH.ToLower())\libs" >> $env:GITHUB_ENV
-
+    # Start of parallel block
+    # Wix is not installed by default on Windows ARM64
     - name: Setup crlf
+      id: setup-crlf
+      background: true
       if: runner.os == 'Windows'
       run: |
         git config --global core.autocrlf false
 
-    - name: Checkout LLVM
-      uses: actions/checkout at df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
-      with:
-        persist-credentials: false
-        ref: ${{ needs.prepare.outputs.ref }}
-
     - name: Set Build Prefix
-      id: setup-stage
+      background: true
       shell: bash
       run: |
         build_prefix=`pwd`
@@ -266,6 +250,45 @@ jobs:
         fi
         echo "build-prefix=$build_prefix" >> $GITHUB_OUTPUT
 
+    - name: Install Wix (Windows ARM64)
+      background: true
+      if: runner.os == 'Windows' && runner.arch == 'ARM64'
+      run: |
+        choco install wixtoolset --version 3.14.1.20250415
+        # Add wix install directory to PATH.
+        Split-Path (Get-ChildItem -Path "C:\" -Filter candle.exe -Recurse -ErrorAction SilentlyContinue | Select-Object -First 1).FullName
+
+      # We need to hard code the python library path for Windows, so in order
+      # to do that we need to specify a specific python version.  It's also
+      # good practice to do this on other OSes so the version of python doesn't
+      # get changed unexpectedly.
+    - uses: actions/setup-python at ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
+      id: setup-python
+      background: true
+      with:
+        python-version: '3.14.6'
+
+    - wait: setup-crlf
+
+    - name: Checkout LLVM
+      background: true
+      uses: actions/checkout at df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
+      with:
+        persist-credentials: false
+        ref: ${{ needs.prepare.outputs.ref }}
+
+    - wait: setup-python
+
+    # For some reason this is needed on Windows or else the build system can't find python3.lib.
+    - name: Setup Python library path
+      background: true
+      if: runner.os == 'Windows'
+      run: |
+        echo "LIB=$env:LIB;C:\hostedtoolcache\windows\Python\3.14.6\$($env:RUNNER_ARCH.ToLower())\libs" >> $env:GITHUB_ENV
+
+    - wait-all:
+    # End of Parallel block.
+
     - name: Configure Linux/MacOS
       id: build
       if: runner.os != 'Windows'
@@ -291,14 +314,6 @@ jobs:
         release_dir=`find "$BUILD_PREFIX/build" -iname 'stage2-bins'`
         mv "$release_dir/$RELEASE_BINARY_FILENAME" .
 
-    # Wix is not installed by default on Windows ARM64
-    - name: Install Wix (Windows ARM64)
-      if: runner.os == 'Windows' && runner.arch == 'ARM64'
-      run: |
-        choco install wixtoolset --version 3.14.1.20250415
-        # Add wix install directory to PATH.
-        Split-Path (Get-ChildItem -Path "C:\" -Filter candle.exe -Recurse -ErrorAction SilentlyContinue | Select-Object -First 1).FullName
-
     - name: Build Windows
       id: build-windows
       if: runner.os == 'Windows'
@@ -329,6 +344,8 @@ jobs:
         cat S:/llvm/utils/release/llvm_package_$($env:LLVM_VERSION)/build_$($env:BUILD_DIR_SUFFIX)/_CPack_Packages/win64/WIX/wix.log
 
     - name: Create zstd compressed tarball
+      id: zstd
+      background: true
       shell: bash
       env:
         RELEASE_BINARY_FILENAME: ${{ needs.prepare.outputs.release-binary-filename }}
@@ -337,8 +354,27 @@ jobs:
       run: |
         xz -dc "$RELEASE_BINARY_FILENAME" | "$ZSTD" --ultra -22 -T0 -o "$RELEASE_BINARY_FILENAME_ZSTD"
 
+    - name: Install LLDB test Python dependencies
+      id: lldb-deps
+      if: runner.os == 'Linux'
+      run: |
+        python -m pip install -r lldb/test/requirements.txt
+
+    - name: Run Tests
+      background: true
+      # These almost always fail so don't let them fail the build and prevent the uploads.
+      if : runner.os != 'Windows'
+      continue-on-error: true
+      env:
+        BUILD_PREFIX: ${{ steps.setup-stage.outputs.build-prefix }}
+      run: |
+        ninja -C "$BUILD_PREFIX/build" stage2-check-all
+
+    - wait: zstd
+
     - name: Generate sha256 digest for binaries
       id: digest
+      background: true
       shell: bash
       env:
         RELEASE_BINARY_FILENAME: ${{ needs.prepare.outputs.release-binary-filename }}
@@ -354,13 +390,11 @@ jobs:
           fi
           echo "digest=$(cat $WINDOWS_INSTALLER_FILENAME $RELEASE_BINARY_FILENAME $RELEASE_BINARY_FILENAME_ZSTD | $sha256sum | cut -d ' ' -f 1)" >> $GITHUB_OUTPUT
 
-    - name: Install LLDB test Python dependencies
-      if: runner.os == 'Linux'
-      run: |
-        python -m pip install -r lldb/test/requirements.txt
+    - wait: [zstd, digest]
 
     - uses: actions/upload-artifact at 043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
       id: artifact-upload
+      background: true
       with:
         name: ${{ runner.os }}-${{ runner.arch }}-release-binary
         # Due to path differences on Windows when running in bash vs running on node,
@@ -371,14 +405,7 @@ jobs:
           ${{ needs.prepare.outputs.release-binary-filename-zstd }}
           ${{ steps.build-windows.outputs.windows-installer-filename }}
 
-    - name: Run Tests
-      # These almost always fail so don't let them fail the build and prevent the uploads.
-      if : runner.os != 'Windows'
-      continue-on-error: true
-      env:
-        BUILD_PREFIX: ${{ steps.setup-stage.outputs.build-prefix }}
-      run: |
-        ninja -C "$BUILD_PREFIX/build" stage2-check-all
+    - wait-all:
 
   upload-release-binaries:
     name: "Upload Release Binaries"

>From 6fe37a094003f09bf6311a8a587a0854737ab2c0 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Sat, 22 Aug 2026 22:55:39 -0700
Subject: [PATCH 52/57] Fix

---
 .github/workflows/release-binaries.yml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/.github/workflows/release-binaries.yml b/.github/workflows/release-binaries.yml
index ff8b37757d87a..87534c8f3422d 100644
--- a/.github/workflows/release-binaries.yml
+++ b/.github/workflows/release-binaries.yml
@@ -240,6 +240,7 @@ jobs:
         git config --global core.autocrlf false
 
     - name: Set Build Prefix
+      id: setup-stage
       background: true
       shell: bash
       run: |

>From baa4d04c48e7e9c8016db34a928babaf40ad7925 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Sat, 22 Aug 2026 23:22:33 -0700
Subject: [PATCH 53/57] Fix up merge and remove old code

---
 .github/workflows/release-binaries.yml | 41 --------------------------
 1 file changed, 41 deletions(-)

diff --git a/.github/workflows/release-binaries.yml b/.github/workflows/release-binaries.yml
index de4bedcd11c75..1c4eaed105064 100644
--- a/.github/workflows/release-binaries.yml
+++ b/.github/workflows/release-binaries.yml
@@ -315,44 +315,6 @@ jobs:
         release_dir=`find "$BUILD_PREFIX/build" -iname 'stage2-bins'`
         mv "$release_dir/$RELEASE_BINARY_FILENAME" .
 
-    # Wix is not installed by default on Windows ARM64
-    - name: Install Wix (Windows ARM64)
-      if: runner.os == 'Windows' && runner.arch == 'ARM64'
-      run: |
-        choco install wixtoolset
-        # Add wix install directory to PATH.
-        Split-Path (Get-ChildItem -Path "C:\" -Filter candle.exe -Recurse -ErrorAction SilentlyContinue | Select-Object -First 1).FullName >> $env:GITHUB_PATH
-
-    # For pull requests, install a fast version of clang so that we can finish the
-    # build under the 6 hour timeout limit.
-    - name: Install fast clang
-      if: runner.os == 'Windows' && runner.arch == 'ARM64' && github.event_name == 'pull_request'
-      env:
-        LLVM_VERSION: 22.1.8
-      run: |
-        New-Item -Path "C:\temp-download" -ItemType "Directory" -Force ;
-        New-Item -Path "C:\clang" -ItemType "Directory" -Force ;
-        Set-Location C:\temp-download ;
-        Invoke-WebRequest -Uri "http://github.com/llvm/llvm-project/releases/download/llvmorg-${env:LLVM_VERSION}/clang+llvm-${env:LLVM_VERSION}-x86_64-pc-windows-msvc.tar.xz" -OutFile "clang+llvm-${env:LLVM_VERSION}-x86_64-pc-windows-msvc.tar.xz" ;
-        (Get-FileHash -Path "C:\temp-download\clang+llvm-${env:LLVM_VERSION}-x86_64-pc-windows-msvc.tar.xz" -Algorithm MD5).Hash -eq '0ae1d3effd9ab9d323f7fa595777f0a2' ;
-        xz.exe -d -qq clang+llvm-${env:LLVM_VERSION}-x86_64-pc-windows-msvc.tar.xz ;
-        C:\Windows\System32\tar.exe -xf clang+llvm-${env:LLVM_VERSION}-x86_64-pc-windows-msvc.tar -C C:\clang ;
-        Set-Location C:\clang ;
-        Rename-Item -Path "C:\clang\clang+llvm-${env:LLVM_VERSION}-x86_64-pc-windows-msvc" -NewName "C:\clang\clang-msvc" ;
-        Set-Location C:\clang\clang-msvc ;
-        Remove-Item -Path C:\clang\clang-msvc\libexec -Recurse -Force ;
-        Remove-Item -Path C:\clang\clang-msvc\share -Recurse -Force ;
-        Rename-Item -Path "C:\clang\clang-msvc\bin" -NewName "C:\clang\clang-msvc\bin-full" ;
-        New-Item -Path "C:\clang\clang-msvc\bin" -ItemType Directory -Force ;
-        Set-Location C:\clang\clang-msvc\bin ;
-        Copy-Item -Path C:\clang\clang-msvc\bin-full\*.dll -Destination C:\clang\clang-msvc\bin\. ;
-        Copy-Item -Path C:\clang\clang-msvc\bin-full\clang-cl.exe -Destination C:\clang\clang-msvc\bin\. ;
-        Copy-Item -Path C:\clang\clang-msvc\bin-full\lld-link.exe -Destination C:\clang\clang-msvc\bin\. ;
-        Set-Location C:\clang\clang-msvc ;
-        Remove-Item -Path C:\clang\clang-msvc\bin-full -Recurse -Force ;
-        echo "C:\clang\clang-msvc\bin" >> $env:GITHUB_PATH ;
-
-
     - name: Build Windows
       id: build-windows
       if: runner.os == 'Windows'
@@ -361,9 +323,6 @@ jobs:
         LLVM_VERSION: ${{ needs.prepare.outputs.release-version }}
         EXTRA_ARGS: ${{ case(needs.prepare.outputs.build-runs-on == 'windows-11-arm', '--fast-build', '') }}
       run: |
-        echo $Env:PATH
-        clang-cl.exe --version
-        subst S: ${{ github.workspace }}
         cd S:\llvm\utils\release\
         .\build_llvm_release.bat "--$($env:RUNNER_ARCH.ToLower())" --version $env:LLVM_VERSION --local-python --skip-checkout $env:EXTRA_ARGS
         if ($env:INPUTS_RUNS_ON -eq "windows-11-arm") {

>From 9d0a03706d073495bca3fcd3d38f98618363354d Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Sat, 22 Aug 2026 23:29:11 -0700
Subject: [PATCH 54/57] Try again

---
 .github/workflows/release-binaries.yml | 32 ++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/.github/workflows/release-binaries.yml b/.github/workflows/release-binaries.yml
index 1c4eaed105064..0471ddf5862b9 100644
--- a/.github/workflows/release-binaries.yml
+++ b/.github/workflows/release-binaries.yml
@@ -290,6 +290,36 @@ jobs:
     - wait-all:
     # End of Parallel block.
 
+    # For pull requests, install a fast version of clang so that we can finish the
+    # build under the 6 hour timeout limit.
+    - name: Install fast clang
+      if: runner.os == 'Windows' && runner.arch == 'ARM64' && github.event_name == 'pull_request'
+      env:
+        LLVM_VERSION: 22.1.8
+      run: |
+        New-Item -Path "C:\temp-download" -ItemType "Directory" -Force ;
+        New-Item -Path "C:\clang" -ItemType "Directory" -Force ;
+        Set-Location C:\temp-download ;
+        Invoke-WebRequest -Uri "http://github.com/llvm/llvm-project/releases/download/llvmorg-${env:LLVM_VERSION}/clang+llvm-${env:LLVM_VERSION}-x86_64-pc-windows-msvc.tar.xz" -OutFile "clang+llvm-${env:LLVM_VERSION}-x86_64-pc-windows-msvc.tar.xz" ;
+        (Get-FileHash -Path "C:\temp-download\clang+llvm-${env:LLVM_VERSION}-x86_64-pc-windows-msvc.tar.xz" -Algorithm MD5).Hash -eq '0ae1d3effd9ab9d323f7fa595777f0a2' ;
+        xz.exe -d -qq clang+llvm-${env:LLVM_VERSION}-x86_64-pc-windows-msvc.tar.xz ;
+        C:\Windows\System32\tar.exe -xf clang+llvm-${env:LLVM_VERSION}-x86_64-pc-windows-msvc.tar -C C:\clang ;
+        Set-Location C:\clang ;
+        Rename-Item -Path "C:\clang\clang+llvm-${env:LLVM_VERSION}-x86_64-pc-windows-msvc" -NewName "C:\clang\clang-msvc" ;
+        Set-Location C:\clang\clang-msvc ;
+        Remove-Item -Path C:\clang\clang-msvc\libexec -Recurse -Force ;
+        Remove-Item -Path C:\clang\clang-msvc\share -Recurse -Force ;
+        Rename-Item -Path "C:\clang\clang-msvc\bin" -NewName "C:\clang\clang-msvc\bin-full" ;
+        New-Item -Path "C:\clang\clang-msvc\bin" -ItemType Directory -Force ;
+        Set-Location C:\clang\clang-msvc\bin ;
+        Copy-Item -Path C:\clang\clang-msvc\bin-full\*.dll -Destination C:\clang\clang-msvc\bin\. ;
+        Copy-Item -Path C:\clang\clang-msvc\bin-full\clang-cl.exe -Destination C:\clang\clang-msvc\bin\. ;
+       Copy-Item -Path C:\clang\clang-msvc\bin-full\lld-link.exe -Destination C:\clang\clang-msvc\bin\. ;
+        Set-Location C:\clang\clang-msvc ;
+        Remove-Item -Path C:\clang\clang-msvc\bin-full -Recurse -Force ;
+        echo "C:\clang\clang-msvc\bin" >> $env:GITHUB_PATH ;
+
+
     - name: Configure Linux/MacOS
       id: build
       if: runner.os != 'Windows'
@@ -323,7 +353,9 @@ jobs:
         LLVM_VERSION: ${{ needs.prepare.outputs.release-version }}
         EXTRA_ARGS: ${{ case(needs.prepare.outputs.build-runs-on == 'windows-11-arm', '--fast-build', '') }}
       run: |
+        subst S: ${{ github.workspace }
         cd S:\llvm\utils\release\
+        C:\\BuildTools\\Common7\\Tools\\VsDevCmd.bat -arch=arm64 -host_arch=arm64
         .\build_llvm_release.bat "--$($env:RUNNER_ARCH.ToLower())" --version $env:LLVM_VERSION --local-python --skip-checkout $env:EXTRA_ARGS
         if ($env:INPUTS_RUNS_ON -eq "windows-11-arm") {
           $zstd = (Get-ChildItem -Recurse -Filter "zstd.exe" | Select-Object -First 1).fullName

>From 58acdec821e712fb76a772087d6fc41e357c6e33 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Sat, 22 Aug 2026 23:35:21 -0700
Subject: [PATCH 55/57] Fix

---
 .github/workflows/release-binaries.yml | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/.github/workflows/release-binaries.yml b/.github/workflows/release-binaries.yml
index 0471ddf5862b9..22f60b3534005 100644
--- a/.github/workflows/release-binaries.yml
+++ b/.github/workflows/release-binaries.yml
@@ -287,12 +287,10 @@ jobs:
       run: |
         echo "LIB=$env:LIB;C:\hostedtoolcache\windows\Python\3.14.6\$($env:RUNNER_ARCH.ToLower())\libs" >> $env:GITHUB_ENV
 
-    - wait-all:
-    # End of Parallel block.
-
     # For pull requests, install a fast version of clang so that we can finish the
     # build under the 6 hour timeout limit.
     - name: Install fast clang
+      background: true
       if: runner.os == 'Windows' && runner.arch == 'ARM64' && github.event_name == 'pull_request'
       env:
         LLVM_VERSION: 22.1.8
@@ -319,6 +317,9 @@ jobs:
         Remove-Item -Path C:\clang\clang-msvc\bin-full -Recurse -Force ;
         echo "C:\clang\clang-msvc\bin" >> $env:GITHUB_PATH ;
 
+    - wait-all:
+    # End of Parallel block.
+
 
     - name: Configure Linux/MacOS
       id: build

>From fd5e0f02d9e74549973ac9d285bc81d1675615c1 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Sun, 23 Aug 2026 00:04:18 -0700
Subject: [PATCH 56/57] Fix indent

---
 .github/workflows/release-binaries.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/release-binaries.yml b/.github/workflows/release-binaries.yml
index 22f60b3534005..9118aac33ea24 100644
--- a/.github/workflows/release-binaries.yml
+++ b/.github/workflows/release-binaries.yml
@@ -312,7 +312,7 @@ jobs:
         Set-Location C:\clang\clang-msvc\bin ;
         Copy-Item -Path C:\clang\clang-msvc\bin-full\*.dll -Destination C:\clang\clang-msvc\bin\. ;
         Copy-Item -Path C:\clang\clang-msvc\bin-full\clang-cl.exe -Destination C:\clang\clang-msvc\bin\. ;
-       Copy-Item -Path C:\clang\clang-msvc\bin-full\lld-link.exe -Destination C:\clang\clang-msvc\bin\. ;
+        Copy-Item -Path C:\clang\clang-msvc\bin-full\lld-link.exe -Destination C:\clang\clang-msvc\bin\. ;
         Set-Location C:\clang\clang-msvc ;
         Remove-Item -Path C:\clang\clang-msvc\bin-full -Recurse -Force ;
         echo "C:\clang\clang-msvc\bin" >> $env:GITHUB_PATH ;

>From 80e2a899ce47a614ec3de15f5dff654f535567d1 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Sun, 23 Aug 2026 00:21:28 -0700
Subject: [PATCH 57/57] Fix

---
 .github/workflows/release-binaries.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/release-binaries.yml b/.github/workflows/release-binaries.yml
index 9118aac33ea24..f52dc1f39b929 100644
--- a/.github/workflows/release-binaries.yml
+++ b/.github/workflows/release-binaries.yml
@@ -354,7 +354,7 @@ jobs:
         LLVM_VERSION: ${{ needs.prepare.outputs.release-version }}
         EXTRA_ARGS: ${{ case(needs.prepare.outputs.build-runs-on == 'windows-11-arm', '--fast-build', '') }}
       run: |
-        subst S: ${{ github.workspace }
+        subst S: ${{ github.workspace }}
         cd S:\llvm\utils\release\
         C:\\BuildTools\\Common7\\Tools\\VsDevCmd.bat -arch=arm64 -host_arch=arm64
         .\build_llvm_release.bat "--$($env:RUNNER_ARCH.ToLower())" --version $env:LLVM_VERSION --local-python --skip-checkout $env:EXTRA_ARGS



More information about the llvm-commits mailing list