Skip to content
This repository was archived by the owner on Jul 21, 2026. It is now read-only.

diffutils: provide standard file comparison workflows - #137

Merged
brandonpayton merged 1 commit into
mainfrom
migrate/diffutils-cli
Jul 17, 2026
Merged

diffutils: provide standard file comparison workflows#137
brandonpayton merged 1 commit into
mainfrom
migrate/diffutils-cli

Conversation

@brandonpayton

@brandonpayton brandonpayton commented Jul 17, 2026

Copy link
Copy Markdown
Member

Why

Kandelo users and build tools need the standard diff, cmp, diff3, and sdiff commands 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 --paginate starts the Coreutils pr program, and interactive sdiff editing starts Ed. Declaring those dependencies prevents a test image from making the Formula appear self-contained when it is not.

What changed

  • Build GNU Diffutils 3.12 from its verified official source through Kandelo's WebAssembly SDK and sysroot.
  • Install diff, cmp, diff3, sdiff, manual pages, Info documentation, and upstream documents.
  • Configure the absolute guest path to the declared Coreutils pr executable.
  • Declare Coreutils and Ed as target runtime dependencies and stage their exact installed executables for tests.
  • Apply complete fork continuation instrumentation to diff, diff3, and sdiff; verify that fork-free cmp remains uninstrumented.
  • Exercise normal and different-file statuses, pagination, three-way merge, side-by-side output, writable output files, and PTY-backed interactive Ed editing.

This PR contains no bottle block, archive, sidecar, receipt, provenance file, generated Wasm artifact, platform change, or Kandelo ABI change.

Exact source state

  • Tap base, including merged Coreutils coreutils: add the filesystem and text CLI suite #16: da9d718b63375a10a18b3c198ecd6a4d8fd10941
  • Exact PR head: 7153a60d713a2db4172d874a1346731febbe41f5
  • Exact PR tree: c6bdbeb29f1227d30826c109f248b92419e2fbcb
  • Stable patch ID: 7a83055075aab5034ee5fd472abfa5587c9b1d1a
  • Formula SHA-256: a41db5cab9229420d0e58974f7a021030a9b1cf54cba29c47d3c185191e4436d
  • Runtime dependency closure: exactly Coreutils and Ed
  • Formula, Coreutils, Ed, and shared-support blobs are identical to the previously reviewed Diffutils branch

This 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:

  • a source-built receipt with exactly Coreutils and Ed as runtime dependencies;
  • source-built ABI 41 Coreutils, Ed, and Dash inputs, with no Kandelo registry dependency;
  • cmp correctly fork-free and diff, diff3, and sdiff carrying complete fork instrumentation with no Asyncify surface;
  • a passing full Formula test covering comparison behavior, pagination through Coreutils pr, sibling diff execution, 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

  • Ruby syntax passed.
  • Current tap trust checks passed locally.
  • The canonical source-closure validator accepted the exact head.
  • Direct and full runtime-closure audits returned exactly Coreutils and Ed.
  • Formula support passed: 48 tests / 380 assertions.
  • TypeScript runner support passed: 15 / 15 tests.
  • git diff --check passed.
  • Independent exact-head devil review accepted the Formula after verifying the upstream archive, runtime closure, fork instrumentation split, historical-evidence scope, and live checks.

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.

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.
@brandonpayton
brandonpayton merged commit 12775dd into main Jul 17, 2026
2 checks passed
@brandonpayton
brandonpayton deleted the migrate/diffutils-cli branch July 17, 2026 05:03
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant