m4: add the process-capable macro processor - #26
Conversation
|
Devil's-advocate review completed at I found and corrected two material formula defects:
I also reviewed the embedded gnulib patch against the generated source/configuration. #883 defines Final independent evidence:
No formula-local blocker remains. Merge/bottle gates remain: tap #14; main #874 followed by a rebased/rerun #883; main #867 for the final ABI18 baseline; and a trusted fresh bottle from |
8c0d07e to
5789a20
Compare
b42c261 to
7a0f649
Compare
5789a20 to
be2c319
Compare
Build GNU m4 directly through the Kandelo SDK, preserve its standard documentation, and instrument the binary so syscmd/esyscmd execute through the real fork path. Limit the source patch to gnulib's Linux-only musl guards for Kandelo's non-Linux musl userland.
Make Dash an explicit runtime dependency, configure GNU m4 to resolve that shell through the guest PATH, and exercise the exact dependency keg in the formula test. Remove the fork-instrumentation transform because the linked program uses posix_spawn through kernel.kernel_clone and does not import kernel.kernel_fork. Document the resulting dependency contract in the tap README.
be2c319 to
04b74de
Compare
|
Devil’s-advocate source-only review at |
Purpose
Migrate GNU m4 from Kandelo's package registry into the first-party Homebrew tap as a normal source-built formula. m4 is a build-tool dependency for Autoconf-based software, and its
syscmd/esyscmdbuiltins make real guest process creation and a declared POSIX shell part of the package contract.Formula
--with-syscmd-shell=dashoption so process builtins resolve that dependency through the guest PATH;make install, preservingbin/m4, the manpage, split Info manual, licenses, and standard package documentation;posix_spawn, and the exact Wasm importskernel.kernel_clonerather thankernel.kernel_fork;__linux__; Kandelo's non-Linux musl target intentionally does not.The test executes version reporting, an included macro definition, expansion/evaluation, and
esyscmdthrough the exact installed Dash dependency. There is no registry-script bridge.Validation
The package evidence used a disposable ABI 18 integration checkout with the final Automattic/kandelo#874 config-site facts and Automattic/kandelo#883 host-identity change layered over the ABI 18 runtime. The Dash dependency was source-built from the tap before rebuilding m4.
brew test --keep-tmp --force --verbose local/m4/m4: passed under Kandelo/Node, staging the exact tap Dash keg throughKERNEL_PATH;esyscmdbehavior with exact stdout and empty stderr;brew audit --strict --online local/m4/m4;brew style local/m4/m4;git diff --check;m4: 662,874 bytes, SHA-256a400fd352ce4ef46a936a0f2fb8b588f4b2f296ab6bed5aa3a3262756cb1827e;kernel.kernel_cloneimported, nokernel.kernel_fork, nowpk_fork_*, and no legacy Asyncify surface.Full Kandelo conformance suites were not rerun because this PR changes only tap formula/package behavior.
Source And Bottle Split
This PR is a source-formula change only. Dash's source formula is already on tap main, so the declared source dependency resolves. No bottle block, bottle archive, receipt, provenance sidecar, or package-registry artifact is added or changed here.
Bottle publication and stock-guest acceptance remain separately gated:
04b74de64ad540acc390b72b3a30c6eea5a0524d, generate its receipt/provenance evidence, and pass stock-guest Node and Chromium acceptance using the poured Dash bottle;kernel.kernel_clone, has no fork-continuation surface, and does not depend on #887.Bottle hashes will come only from that final trusted build; none are hand-written in this source PR.
Current-Main Restack
Replayed the three M4-owned commits from the old Dash base onto tap main
b9df20653b44fb3125b809c4cf96df27f199c5f9, which includes source-merged Dash, Make, and Ed. The only conflicts were in the additive package catalog; the resolved README retains Make and Ed and adds M4.Formula/m4.rbis byte-for-byte identical to old validated headbe2c319efcbc4cc54695e1b211a803bae34cd117: Git blob1f7d999b5a33b22a38616a5686e72b3c6c06246e, full-file SHA-25629d490bdb9c272b0c561cd764a9f4784a8284a12b74c460163147e2f7bb9f73a, and post-support-import SHA-256cb46bb7ea7b4af2e065f39ffd10d9838f96b3cc6ce8b1dd006dc20b98e7825b7.Current head:
04b74de64ad540acc390b72b3a30c6eea5a0524d. Throughscripts/dev-shell.sh, Ruby syntax, literal Homebrew formula loading with the declared Dash dependency,brew style, the formula-support suite (21 runs/186 assertions), exact old/new formula-blob comparison, range-diff review, current-main ancestry, andgit diff --checkpassed. The main-relative diff contains onlyFormula/m4.rband the additive M4 README entry, and the worktree is clean. No source build, runtime result, or bottle is newly claimed by this restack.