[ 
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)

Reply via email to