[
https://issues.apache.org/jira/browse/THRIFT-6311?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Jens Geyer resolved THRIFT-6311.
--------------------------------
Assignee: Jens Geyer
Resolution: Fixed
> 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
> Assignee: Jens Geyer
> Priority: Major
> Fix For: 0.26.0
>
> Time Spent: 20m
> Remaining Estimate: 0h
>
> 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)