Jens Geyer created THRIFT-6314:
----------------------------------
Summary: Publish the Windows Thrift compiler through WinGet
Key: THRIFT-6314
URL: https://issues.apache.org/jira/browse/THRIFT-6314
Project: Thrift
Issue Type: New Feature
Components: Build Process
Reporter: Jens Geyer
Fix For: 0.26.0
h2. Proposal
Publish the Windows Thrift compiler through the [Windows Package
Manager|https://learn.microsoft.com/en-us/windows/package-manager/], so that it
can be installed with
{noformat}
winget install Apache.Thrift
{noformat}
h2. Package identifier
{{Apache.Thrift}}, under the {{Apache}} publisher folder that the ASF already
uses in {{microsoft/winget-pkgs}} for Apache Directory Studio, Groovy, NetBeans
and OpenOffice. There is no Thrift manifest in that repository today - the
whole manifest tree was swept, and nothing matches.
Note the two decoys in the same folder: {{ApacheFriends}} is XAMPP and
{{ApacheLounge}} is a third party httpd build. Neither is the ASF.
h2. Where the installer comes from
The manifest points at {{archive.apache.org}}, not at {{downloads.apache.org}}.
The latter only carries the current release, so a manifest naming it rots as
soon as the next release goes out, and every older version in winget-pkgs stops
installing. The archive is permanent.
That makes this a post release step: the manifest cannot be generated until the
release has been promoted to {{dist.apache.org}} and the archive has picked it
up. This is the same wait the Docker Official Image update already has.
The checksum in the manifest is computed from the file downloaded from that
very URL, so a manifest can never claim a checksum the published file does not
have.
h2. Automation
A workflow renders the three manifest files a submission needs, checks them
over, and uploads them. When a submission token is configured it also opens the
pull request against {{microsoft/winget-pkgs}} with {{wingetcreate}}, which
forks that repository itself, so nothing has to be set up there by hand.
{{wingetcreate}} needs a *classic* GitHub personal access token with the
{{public_repo}} scope; fine grained tokens are not supported. The token is read
from the environment rather than passed on the command line, which is what
Microsoft's own release workflows do, so that it cannot end up in a log.
Without the token the workflow still renders and checks the manifests and
leaves them as an artifact, and the pull request can be opened by hand.
h2. Depends on
THRIFT-6311, which produces the installer this manifest describes.
_Drafted with AI assistance (Claude Opus 5); reviewed and posted by Jens Geyer._
--
This message was sent by Atlassian Jira
(v8.20.10#820010)