This repository was archived by the owner on Jul 21, 2026. It is now read-only.
diffutils: provide standard file comparison workflows - #137
Merged
Conversation
Kandelo Homebrew users and build tools need real diff, cmp, diff3, and sdiff behavior for generated-file checks, merge workflows, and interactive editing. Pagination must also use the Coreutils pr executable from the declared Homebrew dependency rather than an undeclared base-image command. Build GNU Diffutils 3.12 through the Kandelo SDK, instrument every fork-capable executable, and validate the complete installed suite. The Formula declares Coreutils and Ed explicitly and exercises comparison statuses, pagination, three-way merge, side-by-side output, writable files, and PTY-backed editing.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
Kandelo users and build tools need the standard
diff,cmp,diff3, andsdiffcommands for reviewing changes, checking generated files, and resolving merges. These commands should come from a normal Homebrew Formula, not an undeclared base image or a Kandelo registry substitute.Diffutils also has a real dependency boundary.
diff --paginatestarts the Coreutilsprprogram, and interactivesdiffediting starts Ed. Declaring those dependencies prevents a test image from making the Formula appear self-contained when it is not.What changed
diff,cmp,diff3,sdiff, manual pages, Info documentation, and upstream documents.prexecutable.diff,diff3, andsdiff; verify that fork-freecmpremains uninstrumented.This PR contains no bottle block, archive, sidecar, receipt, provenance file, generated Wasm artifact, platform change, or Kandelo ABI change.
Exact source state
da9d718b63375a10a18b3c198ecd6a4d8fd109417153a60d713a2db4172d874a1346731febbe41f5c6bdbeb29f1227d30826c109f248b92419e2fbcb7a83055075aab5034ee5fd472abfa5587c9b1d1aa41db5cab9229420d0e58974f7a021030a9b1cf54cba29c47d3c185191e4436dThis supersedes auto-closed stacked PR #21. GitHub closed #21 when its Coreutils feature-branch base was deleted after Coreutils merged; no Diffutils change was rejected or discarded.
Build and runtime evidence
The identical Diffutils Formula and tap support inputs were previously source-built and fully tested on an ABI 41 Kandelo candidate. That run recorded a different Kandelo platform tree than merged #967, so it is historical runtime evidence for these exact Formula bytes, not a claim that the final merged platform was rebuilt here.
That run showed:
cmpcorrectly fork-free anddiff,diff3, andsdiffcarrying complete fork instrumentation with no Asyncify surface;pr, siblingdiffexecution, mounted output, and PTY-backed Ed editing.The trusted bottle publisher will rebuild the Formula against the exact merged ABI 41 platform before any bottle, pour, VFS, Node.js, or Chromium acceptance claim.
Fresh source validation
git diff --checkpassed.Scope and remaining gates
This is a source Formula change. It does not claim a public bottle, GHCR readback, stock Homebrew pour, composed VFS image, in-guest install, or Chromium runtime result. Those remain post-#968 publisher gates.