Repository navigation
ci: add Linux binary release for loong64, ppc64le, and riscv64 - #14044
MingcongBai wants to merge 1 commit into
Conversation
Add Linux binary release targets for loong64, ppc64le, and riscv64, these are architectures that are available both as desktop and server products. It is also reasonable to assume that they are used by developers as host machines, where this CLI tool would have been used. This commit is made with the understanding that GitHub has no interest in limiting usage of hardware of architectures other than x86, x86-64, Arm32, and Arm64. Given that GitHub CLI is largely an architecture-agnostic tool (at least with its built-in functionalities), that adding binary releases is rather trivial with GoReleaser, that Golang support is quite mature (and actively maintained) for the three architectures above, and that i386 is still a supported architecture despite host machines of strictly 32-bit x86 architecture likely being even more obscure, so add them. Link: cli#14012 Link: cli#8611 Link: cli#9410 Link: cli#8612 Link: cli#3615 Link: cli#1724 Signed-off-by: Mingcong Bai <jeffbai@aosc.io>
|
@MingcongBai historically, we closed the same PR request for ppc64le purely because we do not have the capacity to support it. We have no development or test infrastructure. All that said, I will take the discussion back to the team again about having a "barely supported" class of architectures. I do appreciate that there is still a lot of value for our users in having an officially built artifact. |
Thank you for this. It is good to have a separate class of architecture based on testing/product input, as is commonly practiced amongst Linux distros. .NET, as I understand it, does the same thing (calling some as "community-supported architecture"). I honestly don't think anyone would be mad at occasional bugs or inconsistencies and, more than likely, folks using these architectures would be happy to assist in making them work. Bottom line is - it is, as you said, clear that people are asking for it, and I think the next important step is to clarify on support tiers. |
Yeh, I understand that. We are somewhat limited in our capacity to review them in both time and infrastructure. My bigger concerns though are around time we would have to spend on issues that we might be forced to address such as security or license compliance. In any case, I've started a discussion internally, I'd sure like to support people here if it doesn't bring too much of a maintenance burden for us. |
… checks (#179) (#209) * merge-pr: gate on the PR's checks before merging, and pin the merge to the head it read `wt merge-pr` and its `--dry-run` said verdict=ok while the PR's checks were still queued, and when most of its workflows never started. `--admin`, which a required-review branch needs, bypasses GitHub's required checks too, so nothing between wt and the merge looked at CI. A checks gate now runs right after the PR-state precheck, before the deploy confirm. It reads the head commit's statusCheckRollup in one paged GraphQL query (not `gh pr checks`: it exits 1 with a stderr sentence for "no checks", and the raw rollup keeps every re-run, so the newest run of each check is kept by databaseId), and the base branch's required checks from REST branches/{base} (readable by any reader) and rules/branches/{base}. merge.DecideChecks (pure) blocks on a pending check; a failed, errored, cancelled, timed-out, action-required, startup-failure or stale one; a state wt does not know; a required check with no run on the head; fewer non-skipped checks than the new merge_min_checks / WT_MERGE_MIN_CHECKS (or a value that is not a count); and any failed read. A PR on which no check ran, with nothing required and no floor, merges with a visible "no check ran" note: whether a workflow should run on a PR is in its triggers, which wt cannot evaluate, so a required check or the floor is the deterministic "CI never started" signal. A blocked verdict is refused non-interactively, asked at a terminal (type "merge"), and previewed by --dry-run, which always prints the summary line (checks=green|none|blocked|unread). --checks-ok merges anyway, loudly; --bypass and --admin never get past it. The merge is pinned with --match-head-commit to the commit whose checks were read, so a push after the read fails the merge instead of shipping an unchecked head. Fixes #179 Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * merge-pr: a check that failed stays failed until a later run passes; read the PR's own repo, apps and required workflows The adversarial review of the checks gate showed it reading a check that FAILED on the head as passed, plus smaller gaps. Fixed: - A failure stands until a later run of the check passes. Taking the newest run by databaseId let a label event's re-run that SKIPPED a job an earlier run FAILED read green. latestChecks now judges runs by workflow run: within one, every run counts (the rollup already drops a re-run's earlier attempt, measured on cli/cli run 37941363988, so two runs of one name there are two jobs, as in pytorch); across workflow runs the newest decides, except that a FAILURE/ERROR/TIMED_OUT/STARTUP_FAILURE/ACTION_REQUIRED is cleared only by a later SUCCESS, a SKIPPED/NEUTRAL run never replaces a pass, a running run or an unknown state, and CANCELLED/STALE give way to anything later. cli/cli#14044's SUCCESS then SKIPPED stays green. One state reading (ghx.StateKind) now feeds this and merge.BucketOf. - A check's identity includes its app: two apps posting one name (dotnet/runtime) are two checks. - Required checks come from the PR's base repository on the PR URL's host, not the cwd's {owner}/{repo}. A forwarded -R/--repo is followed, so the PR merged is the PR read and pinned. - A ruleset's workflows rule needs a run of that file from that repository (workflowRun.file); a run whose file GitHub does not name makes it unverifiable, which blocks. - A required check pinned to an app needs GitHub's isRequired for this PR, or a run of that app; isRequired also verifies pinned commit statuses. It adds no rate-limit cost (1 point a page either way). - A passthrough that merges nothing (--disable-auto, --help/-h) skips the gate and the pin. --auto stays gated, and the refusal says why. - A blocked dry run prints `verdict=ok checks=blocked`, never a bare verdict=ok, and still exits 0. - The terminal prompt reads its answer a byte at a time, so a `-F -` body typed after it is never consumed. Fixtures captured with the first query got the new fields read from the same head commits, so the states they caught are kept; dotnet, pytorch and grafana fixtures are new. Refs #179 Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * merge-pr: pin that the checks prompt leaves a `-F -` body for the squash Mutation testing showed the end-to-end case for "a terminal, then a -F - body" checked only gh's argv: a prompt that read ahead and swallowed the body still passed. The fake gh now records its stdin and the case asserts the typed body reaches gh; TestReadLine pins readLine stopping at the newline. Refs #179 Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

Add Linux binary release targets for loong64, ppc64le, and riscv64, these are architectures that are available both as desktop and server products. It is also reasonable to assume that they are used by developers as host machines, where this CLI tool would have been used.
This commit is made with the understanding that GitHub has no interest in limiting usage of hardware of architectures other than x86, x86-64, Arm32, and Arm64.
Given that GitHub CLI is largely an architecture-agnostic tool (at least with its built-in functionalities), that adding binary releases is rather trivial with GoReleaser, that Golang support is quite mature (and actively maintained) for the three architectures above, and that i386 is still a supported architecture despite host machines of strictly 32-bit x86 architecture likely being even more obscure, so add them.
Link: #14012
Link: #8611
Link: #9410
Link: #8612
Link: #3615
Link: #1724
Authorship and follow-up
Who wrote this:
Who answers review comments: