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)