[clang] [llvm] workflows/release-binaries: Use Wix to create Windows installer (PR #200734)
Tom Stellard via cfe-commits
cfe-commits at lists.llvm.org
Wed Jun 10 13:51:28 PDT 2026
https://github.com/tstellar updated https://github.com/llvm/llvm-project/pull/200734
>From f75de69eaded84471f7eacd64636c30212818b2e Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Fri, 5 Jun 2026 13:46:27 -0700
Subject: [PATCH 01/13] Use wix
---
clang/cmake/caches/Release.cmake | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/clang/cmake/caches/Release.cmake b/clang/cmake/caches/Release.cmake
index b0bc3ebfe5cb6..ff65a83c7cf93 100644
--- a/clang/cmake/caches/Release.cmake
+++ b/clang/cmake/caches/Release.cmake
@@ -168,7 +168,11 @@ set_final_stage_var(LLVM_ENABLE_PROJECTS "${LLVM_RELEASE_ENABLE_PROJECTS}" STRIN
if (${CMAKE_HOST_SYSTEM_NAME} MATCHES "Linux")
set_final_stage_var(CLANG_BOLT "INSTRUMENT" STRING)
endif()
+if (WIN32)
+set_final_stage_var(CPACK_GENERATOR "WIX" STRING)
+else()
set_final_stage_var(CPACK_GENERATOR "TXZ" STRING)
+endif()
set_final_stage_var(CPACK_ARCHIVE_THREADS "0" STRING)
set_final_stage_var(LLVM_USE_STATIC_ZSTD "ON" BOOL)
>From 78b4d12dfd0faf0a350eb6c18e29c44e44710db0 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Thu, 4 Jun 2026 17:00:26 -0700
Subject: [PATCH 02/13] Dump NSIS log
---
.github/workflows/release-binaries.yml | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/.github/workflows/release-binaries.yml b/.github/workflows/release-binaries.yml
index 573ddfb43cdd7..5bbac29de5405 100644
--- a/.github/workflows/release-binaries.yml
+++ b/.github/workflows/release-binaries.yml
@@ -308,6 +308,12 @@ jobs:
RELEASE_BINARY_FILENAME_ZSTD: ${{ needs.prepare.outputs.release-binary-filename-zstd }}
run: |
xz -dc "$RELEASE_BINARY_FILENAME" | zstd --ultra -22 -T0 -o "$RELEASE_BINARY_FILENAME_ZSTD"
+ - name: Dump Build logs
+ if: runner.os == 'Windows' && failure()
+ env:
+ LLVM_VERSION: ${{ needs.prepare.outputs.release-version }}
+ run: |
+ cat S:/llvm/utils/release/llvm_package_$($env:LLVM_VERSION)/build_$($env:RUNNER_ARCH.ToLower())/_CPack_Packages/win64/NSIS/NSISOutput.log
- name: Generate sha256 digest for binaries
id: digest
>From ba320ef3348bb35678da4d5c9103e6bfa96ae544 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Fri, 5 Jun 2026 16:54:54 -0700
Subject: [PATCH 03/13] Debug
---
.github/workflows/release-binaries-all.yml | 4 ----
clang/cmake/caches/Release.cmake | 4 ++--
2 files changed, 2 insertions(+), 6 deletions(-)
diff --git a/.github/workflows/release-binaries-all.yml b/.github/workflows/release-binaries-all.yml
index 3687de77e0156..45062cb9774b1 100644
--- a/.github/workflows/release-binaries-all.yml
+++ b/.github/workflows/release-binaries-all.yml
@@ -100,11 +100,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:
- - ubuntu-22.04
- - ubuntu-22.04-arm
- - macos-14
- windows-2022
- - windows-11-arm
uses: ./.github/workflows/release-binaries.yml
with:
diff --git a/clang/cmake/caches/Release.cmake b/clang/cmake/caches/Release.cmake
index ff65a83c7cf93..46625a6e55b68 100644
--- a/clang/cmake/caches/Release.cmake
+++ b/clang/cmake/caches/Release.cmake
@@ -169,9 +169,9 @@ if (${CMAKE_HOST_SYSTEM_NAME} MATCHES "Linux")
set_final_stage_var(CLANG_BOLT "INSTRUMENT" STRING)
endif()
if (WIN32)
-set_final_stage_var(CPACK_GENERATOR "WIX" STRING)
+ set_final_stage_var(CPACK_GENERATOR "WIX" STRING)
else()
-set_final_stage_var(CPACK_GENERATOR "TXZ" STRING)
+ set_final_stage_var(CPACK_GENERATOR "TXZ" STRING)
endif()
set_final_stage_var(CPACK_ARCHIVE_THREADS "0" STRING)
>From 0baff50d2b7e30973400b83f61f0340104c0bdbe Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Fri, 5 Jun 2026 09:06:15 -0700
Subject: [PATCH 04/13] Fix log
---
.github/workflows/release-binaries.yml | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/.github/workflows/release-binaries.yml b/.github/workflows/release-binaries.yml
index 5bbac29de5405..30887ff7cefb1 100644
--- a/.github/workflows/release-binaries.yml
+++ b/.github/workflows/release-binaries.yml
@@ -312,8 +312,9 @@ jobs:
if: runner.os == 'Windows' && failure()
env:
LLVM_VERSION: ${{ needs.prepare.outputs.release-version }}
+ BUILD_DIR_SUFFIX: ${{ case(runner.arch == 'ARM64', 'arm64', 'amd64') }}
run: |
- cat S:/llvm/utils/release/llvm_package_$($env:LLVM_VERSION)/build_$($env:RUNNER_ARCH.ToLower())/_CPack_Packages/win64/NSIS/NSISOutput.log
+ cat S:/llvm/utils/release/llvm_package_$($env:LLVM_VERSION)/build_$($env:BUILD_DIR_SUFFIX)/_CPack_Packages/win64/NSIS/NSISOutput.log
- name: Generate sha256 digest for binaries
id: digest
>From a2ac2fa9fc2dcda3986d3c27aa49f814b9d85043 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Fri, 5 Jun 2026 22:11:49 -0700
Subject: [PATCH 05/13] Use wix
---
llvm/utils/release/build_llvm_release.bat | 1 +
1 file changed, 1 insertion(+)
diff --git a/llvm/utils/release/build_llvm_release.bat b/llvm/utils/release/build_llvm_release.bat
index 0f6dbb36ad784..9a0f33f7862fc 100644
--- a/llvm/utils/release/build_llvm_release.bat
+++ b/llvm/utils/release/build_llvm_release.bat
@@ -188,6 +188,7 @@ set common_cmake_flags=^
-DLLVM_ENABLE_RPMALLOC=ON ^
-DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra;lld" ^
-DLLVM_ENABLE_RUNTIMES="compiler-rt;openmp" ^
+ -DCPACK_GENERATOR="WIX" ^
-DCOMPILER_RT_BUILD_ORC=OFF
if "%force-msvc%" == "" (
>From f488f778a367fbd4caea25d982f712240bf89d00 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Sat, 6 Jun 2026 08:22:42 -0700
Subject: [PATCH 06/13] Add wix log
---
.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 30887ff7cefb1..32609d2288d7b 100644
--- a/.github/workflows/release-binaries.yml
+++ b/.github/workflows/release-binaries.yml
@@ -314,6 +314,7 @@ jobs:
LLVM_VERSION: ${{ needs.prepare.outputs.release-version }}
BUILD_DIR_SUFFIX: ${{ case(runner.arch == 'ARM64', 'arm64', 'amd64') }}
run: |
+ cat S:/llvm/utils/release/llvm_package_$($env:LLVM_VERSION)/build_$($env:BUILD_DIR_SUFFIX)/_CPack_Packages/win64/WIX/wix.log
cat S:/llvm/utils/release/llvm_package_$($env:LLVM_VERSION)/build_$($env:BUILD_DIR_SUFFIX)/_CPack_Packages/win64/NSIS/NSISOutput.log
- name: Generate sha256 digest for binaries
>From 39937c04181ed4a6af41e51ea322aae5946d1efe Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Sat, 6 Jun 2026 17:55:59 -0700
Subject: [PATCH 07/13] Disable sval
---
clang/cmake/caches/Release.cmake | 1 +
1 file changed, 1 insertion(+)
diff --git a/clang/cmake/caches/Release.cmake b/clang/cmake/caches/Release.cmake
index 46625a6e55b68..385d2218e2d44 100644
--- a/clang/cmake/caches/Release.cmake
+++ b/clang/cmake/caches/Release.cmake
@@ -170,6 +170,7 @@ if (${CMAKE_HOST_SYSTEM_NAME} MATCHES "Linux")
endif()
if (WIN32)
set_final_stage_var(CPACK_GENERATOR "WIX" STRING)
+ set_final_stage_var(CPACK_WIX_LIGHT_EXTRA_FLAGS "-sval" STRING)
else()
set_final_stage_var(CPACK_GENERATOR "TXZ" STRING)
endif()
>From 610ed03e244bcc2023f82a70cdda7ebba58a5a57 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Sat, 6 Jun 2026 17:56:42 -0700
Subject: [PATCH 08/13] Fix wix
---
llvm/utils/release/build_llvm_release.bat | 1 +
1 file changed, 1 insertion(+)
diff --git a/llvm/utils/release/build_llvm_release.bat b/llvm/utils/release/build_llvm_release.bat
index 9a0f33f7862fc..94379261920c5 100644
--- a/llvm/utils/release/build_llvm_release.bat
+++ b/llvm/utils/release/build_llvm_release.bat
@@ -189,6 +189,7 @@ set common_cmake_flags=^
-DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra;lld" ^
-DLLVM_ENABLE_RUNTIMES="compiler-rt;openmp" ^
-DCPACK_GENERATOR="WIX" ^
+ -DCPACK_WIX_LIGHT_EXTRA_FLAGS="-sval" ^
-DCOMPILER_RT_BUILD_ORC=OFF
if "%force-msvc%" == "" (
>From 0a79ae68fd16420da0f1412917f1bb008470f812 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Sun, 7 Jun 2026 12:23:07 -0700
Subject: [PATCH 09/13] Fix installer suffix
---
.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 32609d2288d7b..9de8f015cfd6f 100644
--- a/.github/workflows/release-binaries.yml
+++ b/.github/workflows/release-binaries.yml
@@ -294,7 +294,7 @@ jobs:
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
- $installer = (Get-ChildItem -Recurse -Filter "*.exe" | Select-Object -First 1).fullName
+ $installer = (Get-ChildItem -Recurse -Filter "*.msi" | Select-Object -First 1).fullName
$tarball = (Get-ChildItem -Recurse -Filter "*.tar.xz" | Select-Object -First 1).fullName
# Move installer to top-level directory so it is easier to upload.
mv $installer $env:GITHUB_WORKSPACE
>From 81118431d15151c3b47bf7666fcdab31b7928a1b Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Mon, 8 Jun 2026 17:26:07 -0700
Subject: [PATCH 10/13] Revert "Debug"
This reverts commit ba320ef3348bb35678da4d5c9103e6bfa96ae544.
---
.github/workflows/release-binaries-all.yml | 4 ++++
clang/cmake/caches/Release.cmake | 7 +------
2 files changed, 5 insertions(+), 6 deletions(-)
diff --git a/.github/workflows/release-binaries-all.yml b/.github/workflows/release-binaries-all.yml
index 45062cb9774b1..3687de77e0156 100644
--- a/.github/workflows/release-binaries-all.yml
+++ b/.github/workflows/release-binaries-all.yml
@@ -100,7 +100,11 @@ 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
with:
diff --git a/clang/cmake/caches/Release.cmake b/clang/cmake/caches/Release.cmake
index 385d2218e2d44..b0bc3ebfe5cb6 100644
--- a/clang/cmake/caches/Release.cmake
+++ b/clang/cmake/caches/Release.cmake
@@ -168,12 +168,7 @@ set_final_stage_var(LLVM_ENABLE_PROJECTS "${LLVM_RELEASE_ENABLE_PROJECTS}" STRIN
if (${CMAKE_HOST_SYSTEM_NAME} MATCHES "Linux")
set_final_stage_var(CLANG_BOLT "INSTRUMENT" STRING)
endif()
-if (WIN32)
- set_final_stage_var(CPACK_GENERATOR "WIX" STRING)
- set_final_stage_var(CPACK_WIX_LIGHT_EXTRA_FLAGS "-sval" STRING)
-else()
- set_final_stage_var(CPACK_GENERATOR "TXZ" STRING)
-endif()
+set_final_stage_var(CPACK_GENERATOR "TXZ" STRING)
set_final_stage_var(CPACK_ARCHIVE_THREADS "0" STRING)
set_final_stage_var(LLVM_USE_STATIC_ZSTD "ON" BOOL)
>From f4ae7c531c825d82b693f0c1129dec6a8a0c8679 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Fri, 5 Jun 2026 09:06:15 -0700
Subject: [PATCH 11/13] Fix log
---
.github/workflows/release-binaries.yml | 1 -
1 file changed, 1 deletion(-)
diff --git a/.github/workflows/release-binaries.yml b/.github/workflows/release-binaries.yml
index 9de8f015cfd6f..d43e14402dc14 100644
--- a/.github/workflows/release-binaries.yml
+++ b/.github/workflows/release-binaries.yml
@@ -315,7 +315,6 @@ jobs:
BUILD_DIR_SUFFIX: ${{ case(runner.arch == 'ARM64', 'arm64', 'amd64') }}
run: |
cat S:/llvm/utils/release/llvm_package_$($env:LLVM_VERSION)/build_$($env:BUILD_DIR_SUFFIX)/_CPack_Packages/win64/WIX/wix.log
- cat S:/llvm/utils/release/llvm_package_$($env:LLVM_VERSION)/build_$($env:BUILD_DIR_SUFFIX)/_CPack_Packages/win64/NSIS/NSISOutput.log
- name: Generate sha256 digest for binaries
id: digest
>From 18d20cabd62184989125505eb5e520ef3bc60361 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Tue, 9 Jun 2026 09:42:54 -0700
Subject: [PATCH 12/13] Review changes
---
.github/workflows/release-binaries.yml | 15 ++++++++-------
llvm/utils/release/build_llvm_release.bat | 1 -
2 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/.github/workflows/release-binaries.yml b/.github/workflows/release-binaries.yml
index d43e14402dc14..9cec8ed301aa9 100644
--- a/.github/workflows/release-binaries.yml
+++ b/.github/workflows/release-binaries.yml
@@ -300,6 +300,14 @@ jobs:
mv $installer $env:GITHUB_WORKSPACE
mv $tarball $env:GITHUB_WORKSPACE
echo "windows-installer-filename=$(Split-Path -Path $installer -Leaf)" >> $env:GITHUB_OUTPUT
+
+ - name: Dump Wix logs
+ if: runner.os == 'Windows'
+ env:
+ LLVM_VERSION: ${{ needs.prepare.outputs.release-version }}
+ BUILD_DIR_SUFFIX: ${{ case(runner.arch == 'ARM64', 'arm64', 'amd64') }}
+ run: |
+ 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
shell: bash
@@ -308,13 +316,6 @@ jobs:
RELEASE_BINARY_FILENAME_ZSTD: ${{ needs.prepare.outputs.release-binary-filename-zstd }}
run: |
xz -dc "$RELEASE_BINARY_FILENAME" | zstd --ultra -22 -T0 -o "$RELEASE_BINARY_FILENAME_ZSTD"
- - name: Dump Build logs
- if: runner.os == 'Windows' && failure()
- env:
- LLVM_VERSION: ${{ needs.prepare.outputs.release-version }}
- BUILD_DIR_SUFFIX: ${{ case(runner.arch == 'ARM64', 'arm64', 'amd64') }}
- run: |
- cat S:/llvm/utils/release/llvm_package_$($env:LLVM_VERSION)/build_$($env:BUILD_DIR_SUFFIX)/_CPack_Packages/win64/WIX/wix.log
- name: Generate sha256 digest for binaries
id: digest
diff --git a/llvm/utils/release/build_llvm_release.bat b/llvm/utils/release/build_llvm_release.bat
index 94379261920c5..9eebd75d82dd8 100644
--- a/llvm/utils/release/build_llvm_release.bat
+++ b/llvm/utils/release/build_llvm_release.bat
@@ -85,7 +85,6 @@ if not "%version_7z%"=="" (
REM Prerequisites:
REM
REM Visual Studio 2019, CMake, Ninja, GNUWin32, SWIG, Python 3,
-REM NSIS with the strlen_8192 patch,
REM Perl (for the OpenMP run-time).
REM
REM
>From 0d7268bb7fbde2c57eaa27787df65a64f04ec673 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Wed, 10 Jun 2026 13:50:54 -0700
Subject: [PATCH 13/13] Move flags into llvm/CMakeLists.txt
---
llvm/CMakeLists.txt | 23 +++++++++++++++--------
llvm/utils/release/build_llvm_release.bat | 1 -
2 files changed, 15 insertions(+), 9 deletions(-)
diff --git a/llvm/CMakeLists.txt b/llvm/CMakeLists.txt
index 4509fbaba1d25..ad69c4b719a3f 100644
--- a/llvm/CMakeLists.txt
+++ b/llvm/CMakeLists.txt
@@ -483,20 +483,27 @@ set(CPACK_PACKAGE_VERSION_PATCH ${LLVM_VERSION_PATCH})
set(CPACK_PACKAGE_VERSION ${PACKAGE_VERSION})
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.TXT")
if(WIN32 AND NOT UNIX)
- set(CPACK_NSIS_COMPRESSOR "/SOLID lzma \r\n SetCompressorDictSize 32")
if(NOT DEFINED CPACK_PACKAGE_INSTALL_REGISTRY_KEY)
set(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "LLVM")
endif()
set(CPACK_PACKAGE_ICON "${CMAKE_CURRENT_SOURCE_DIR}\\\\cmake\\\\nsis_logo.bmp")
- set(CPACK_NSIS_MUI_ICON "${CMAKE_CURRENT_SOURCE_DIR}\\\\cmake\\\\nsis_icon.ico")
- set(CPACK_NSIS_MUI_UNIICON "${CMAKE_CURRENT_SOURCE_DIR}\\\\cmake\\\\nsis_icon.ico")
- set(CPACK_NSIS_MODIFY_PATH "ON")
- set(CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL "ON")
- if( CMAKE_CL_64 )
- if(NOT DEFINED CPACK_NSIS_INSTALL_ROOT)
- set(CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES64")
+ if (CPACK_GENERATOR STREQUAL "NSIS")
+ set(CPACK_NSIS_COMPRESSOR "/SOLID lzma \r\n SetCompressorDictSize 32")
+ set(CPACK_NSIS_MUI_ICON "${CMAKE_CURRENT_SOURCE_DIR}\\\\cmake\\\\nsis_icon.ico")
+ set(CPACK_NSIS_MUI_UNIICON "${CMAKE_CURRENT_SOURCE_DIR}\\\\cmake\\\\nsis_icon.ico")
+ set(CPACK_NSIS_MODIFY_PATH "ON")
+ set(CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL "ON")
+ if( CMAKE_CL_64 )
+ if(NOT DEFINED CPACK_NSIS_INSTALL_ROOT)
+ set(CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES64")
+ endif()
endif()
endif()
+ if(CPACK_GENERATOR STREQUAL "WIX")
+ set(CPACK_WIX_PRODUCT_ICON "${CMAKE_CURRENT_SOURCE_DIR}\\\\cmake\\\\nsis_icon.ico")
+ # The WIX installer needs admin privileges unless we use this flag.
+ set(CPACK_WIX_LIGHT_EXTRA_FLAGS "-sval")
+ endif()
endif()
include(CPack)
diff --git a/llvm/utils/release/build_llvm_release.bat b/llvm/utils/release/build_llvm_release.bat
index 9eebd75d82dd8..76397929c7ed3 100644
--- a/llvm/utils/release/build_llvm_release.bat
+++ b/llvm/utils/release/build_llvm_release.bat
@@ -188,7 +188,6 @@ set common_cmake_flags=^
-DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra;lld" ^
-DLLVM_ENABLE_RUNTIMES="compiler-rt;openmp" ^
-DCPACK_GENERATOR="WIX" ^
- -DCPACK_WIX_LIGHT_EXTRA_FLAGS="-sval" ^
-DCOMPILER_RT_BUILD_ORC=OFF
if "%force-msvc%" == "" (
More information about the cfe-commits
mailing list