Skip to content

feat(drift): package the drift git diff pager 0.0.1 - #580

Merged
evanspearman merged 1 commit into
gominimal:mainfrom
evanspearman:feat/drift
Aug 7, 2026
Merged

feat(drift): package the drift git diff pager 0.0.1#580
evanspearman merged 1 commit into
gominimal:mainfrom
evanspearman:feat/drift

Conversation

@evanspearman

@evanspearman evanspearman commented Aug 7, 2026

Copy link
Copy Markdown
Member

drift is a Rust TUI pager for git diff (MIT, aymanbagabas/drift).

Source is the GitHub tag tarball rather than the gs:// staging mirror, so cargo resolves crates during the build and the spec declares needs = { dns, internet } -- same shape as starship/zoxide/hunk.

Runtime deps were read off the built binary rather than guessed: it links only libc, libm and libgcc_s. Notably there is no oniguruma and no zlib, unlike delta, because syntect is built with the default-fancy feature (pure-Rust fancy-regex). git is a hard runtime dep -- every view drift renders comes from shelling out to git (src/git.rs).

The upstream release profile already pins lto/codegen-units=1/strip, so build.sh adds only the --remap-path-prefix flags; two builds from different paths were verified byte-identical.

Checklist

  • I've read CONTRIBUTING.md.
  • I've accepted the ICLA (and CCLA if contributing on my employer's time). CLA Assistant will prompt me on this PR if I haven't already.
  • min check passes for the affected packages/harnesses.
  • min patched-build <name> succeeds for any package I added or modified.
  • For new packages: source_provenance points to the canonical upstream and the source builds from source (not a prebuilt release binary) where the required toolchain is available.
  • For version bumps: I've verified the new sha256 against the upstream archive.

Summary by CodeRabbit

  • New Features

    • Added Drift as an installable package.
    • Provides the Drift command-line executable for supported environments.
    • Includes package metadata and version validation to help ensure reliable installations.
  • Build and Runtime

    • Packaged Drift with its required runtime components.
    • Added a reproducible release build process for consistent installation results.

drift is a Rust TUI pager for `git diff` (MIT, aymanbagabas/drift).

Source is the GitHub tag tarball rather than the gs:// staging mirror,
so cargo resolves crates during the build and the spec declares
`needs = { dns, internet }` -- same shape as starship/zoxide/hunk.

Runtime deps were read off the built binary rather than guessed: it
links only libc, libm and libgcc_s. Notably there is no oniguruma and
no zlib, unlike delta, because syntect is built with the `default-fancy`
feature (pure-Rust fancy-regex). git is a hard runtime dep -- every view
drift renders comes from shelling out to git (src/git.rs).

The upstream release profile already pins lto/codegen-units=1/strip, so
build.sh adds only the --remap-path-prefix flags; two builds from
different paths were verified byte-identical.
@CLAassistant

CLAassistant commented Aug 7, 2026

Copy link
Copy Markdown

CLA assistant check
All committers have signed the CLA.

@coderabbitai

coderabbitai Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 50cb424e-ad38-4036-a83b-baf135a1a33f

📥 Commits

Reviewing files that changed from the base of the PR and between a9169a0 and c8ce636.

📒 Files selected for processing (2)
  • packages/drift/build.ncl
  • packages/drift/build.sh

📝 Walkthrough

Walkthrough

Adds a Drift package build specification and a release build script. The package fetches the GitHub source archive, builds with Cargo, installs drift, declares runtime dependencies, and runs a version smoketest.

Changes

Drift package

Layer / File(s) Summary
Drift package build pipeline
packages/drift/build.ncl, packages/drift/build.sh
The build specification declares source inputs, dependencies, network access, metadata, binary output, and a version smoketest. The build script configures GCC, enforces the locked Cargo dependency set, applies Rust path remapping, and installs the stripped release binary.

Estimated code review effort: 2 (Simple) | ~10 minutes

Possibly related PRs

  • gominimal/pkgs#371: Adds a similar Rust CLI package recipe with reproducible Cargo and GCC build settings.
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly identifies the addition of Drift 0.0.1 packaging, which is the main change in the pull request.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Comment @coderabbitai help to get the list of available commands.

@bryan-minimal

Copy link
Copy Markdown
Member

/build

1 similar comment
@twitchyliquid64

Copy link
Copy Markdown
Member

/build

@evanspearman
evanspearman added this pull request to the merge queue Aug 7, 2026
Merged via the queue into gominimal:main with commit fc57640 Aug 7, 2026
10 checks passed
@evanspearman
evanspearman deleted the feat/drift branch August 7, 2026 20:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants