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)

Reply via email to