Jens Geyer created THRIFT-6311:
----------------------------------

             Summary: Build a Windows installer for the Thrift compiler at 
release time
                 Key: THRIFT-6311
                 URL: https://issues.apache.org/jira/browse/THRIFT-6311
             Project: Thrift
          Issue Type: New Feature
          Components: Build Process
            Reporter: Jens Geyer
             Fix For: 0.26.0


h2. Situation

Every Apache Thrift release ships a prebuilt Windows compiler: a single 
{{thrift-<version>.exe}}, GPG signed, on {{dist.apache.org}}, and the same 
executable attached to the GitHub release. There is nothing to install. Whoever 
downloads it has to decide where to put it and how to get it onto {{PATH}}.

The executable is also built by hand, once per release, following 
{{doc/ReleaseManagement.md}}.

h2. Proposal

Build a Windows installer for the compiler and attach it to the GitHub release.

* A new workflow, {{.github/workflows/windows-packages.yml}}, builds the 
compiler on a Windows runner exactly as a release build does 
({{-DBUILD_LIBRARIES=OFF -DWITH_MT=ON}}, Release), verifies it is 
self-contained, and packages it with Inno Setup, which is preinstalled on the 
GitHub Windows runner images.
* The installer offers to put the install directory on {{PATH}}, registers an 
uninstaller, and carries the Apache License 2.0 as its license page.
* The version is not stored in the {{.iss}} file. It is passed in on the 
command line, taken from the release tag, so no new file has to be kept in step 
by {{build/veralign.sh}}.
* Triggered by {{release: published}}, the same trigger {{pypi.yml}}, 
{{release_rust.yml}} and {{release_ruby.yml}} use, so it follows the 
pre-release / release gate that {{doc/ReleaseManagement.md}} describes. It also 
runs on pull requests that touch its own inputs, so it is exercised before a 
release depends on it, and on {{workflow_dispatch}}.
* On a real release the workflow checks that the release tag and the version in 
{{CMakeLists.txt}} agree before it publishes anything, the way 
{{release_rust.yml}} does for the crate.

h2. Scope

The installer is a convenience artifact attached to the GitHub release. It is 
not added to {{dist.apache.org}} and does not change the release vote e-mail 
template. The voted release artifact stays the source tarball.

This ticket is the first of a set covering Windows packaging for the compiler; 
WinGet, a .NET tool and Chocolatey follow separately and build on the installer 
produced here.

_Drafted with AI assistance (Claude Opus 5); reviewed and posted by Jens Geyer._




--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to