feat(release): ship the switch binary to Linux installs - #1063
Conversation
|
Warning Review limit reachedYou’ve reached a temporary PR review limit under our Fair Usage Limits Policy. Next review available in: 26 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (2)
Comment |
f2efe48 to
283f503
Compare
Own-IP is dead on every installed Linux host. The native (DM2) datapath
is implemented and proven by the netns job, but `minimald` resolves a
switch binary no Linux install ships, so the spawn fails on a path that
was never populated. CI only passes because it fetches gvproxy itself
and sets `GVPROXY_BIN`.
The release already builds pin-verified `gvproxy-linux-{amd64,arm64}`
(release.yml uploads both); they were simply never mapped to install
components. Two rows, and the manifest-driven installer needs no change
— it filters the manifest by host os/arch and marks anything under `bin`
executable.
The resolver already looks where these rows land: `minimald` falls back
to `switch::installed_gvproxy_bin()` when `GVPROXY_BIN` is unset, which
probes `$MINIMAL_BIN`/`$HOME/.local/bin` for `gvproxy-min` with no
platform gating. Nothing in the Rust tree changes.
No migration is needed on Linux, unlike macOS: `gvproxy` was never
staged here, so no Linux install record carries the pre-rename name for
`remove_renamed_gvproxy` to clean up.
The naming rationale moves from the darwin row up to the table header,
since it now governs three rows rather than one.
minvmd and the guest payload stay out. The static-musl research in
#1065 has shown minvmd can ship as a single self-contained binary, so
shipping the dynamic-glibc version now would mean putting ~29 MB of
libraries plus RUNPATH machinery, a bin/lib sibling constraint and a
glibc floor onto users' disks, then deleting all of it. The release-pipeline doc gets the
matching note (and its macOS entry, still reading `bin/gvproxy`, catches
up with the rename).
Verified with a dry-run stage against stub artifacts: both rows emit
`file bin/gvproxy-min` with distinct per-arch digests.
Refs: #980
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
283f503 to
bf13a86
Compare
Own-IP is dead on every installed Linux host.
The native (DM2) datapath is implemented and proven by the netns job, but
minimaldresolves a switch binary that no Linux install ships, so the spawn fails on a path that was never populated. CI has never caught it because it fetches gvproxy itself and setsGVPROXY_BIN.The gap is two table rows
The release already builds pin-verified
gvproxy-linux-amd64andgvproxy-linux-arm64—release.ymluploads both (lines 575–586). They were simply never mapped to install components, sostage-release.shnever put them in a manifest and the installer never had anything to place.# Linux amd64 "minimal|linux|amd64|file|bin/min|minimal-linux-amd64" "git-remote-min|linux|amd64|symlink|bin/git-remote-min|min" + "gvproxy-min|linux|amd64|file|bin/gvproxy-min|gvproxy-linux-amd64"(and the arm64 twin)
Why nothing else changes
The installer needs no change. It is manifest-driven: it filters rows by host os/arch and marks anything under
binexecutable.The Rust tree needs no change. The resolver already looks exactly where these rows land —
minimaldfalls back toswitch::installed_gvproxy_bin()whenGVPROXY_BINis unset, which probes$MINIMAL_BIN/$HOME/.local/binforgvproxy-min. There is nocfg(target_os)anywhere in that path; it was written platform-agnostic and Linux was the half that had nothing to find.No migration is needed on Linux, unlike macOS.
gvproxywas never staged here, so no Linux install record carries the pre-rename name forremove_renamed_gvproxyto clean up.The naming rationale (
gvproxy-min, notgvproxy— thebinprefix is onPATHand podman/crc ship their own) moves from the darwin row up to the table header, since it now governs three rows rather than one.Verification
Dry-run stage against stub artifacts — both rows resolve, with distinct per-arch digests:
shellcheckclean at 0.11.0 and at CI's 0.10.0.Scope
minvmdand the guest payload stay out. the static-musl research in #1065 has shownminvmdcan ship as a single self-contained binary, so shipping the dynamic-glibc build now would mean putting ~29 MB of libraries plus RUNPATH machinery, abin/libsibling constraint, and a glibc floor onto users' disks — then deleting all of it. That is the remaining half of #980, tracked in #1065.The
release-pipeline.mdper-platform component list is updated to match, including its macOS entry, which still readbin/gvproxyafter the #994 rename.Refs #980
🤖 Generated with Claude Code
Note
Ship
gvproxy-min(switch binary) to Linux amd64 and arm64 installsAdds
gvproxy-minentries for Linux amd64 and arm64 to the COMPONENTS table in scripts/stage-release.sh, placing the switch binary (standard gvproxy bytes) at~/.local/bin/gvproxy-minon Linux hosts. Updates docs/internal/release-pipeline.md to reflect the new per-platform component lists. Note:minvmdis not yet staged for Linux (tracked in issue #980).Macroscope summarized bf13a86.