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

formulae: use SDK-owned cross-compilation settings - #106

Merged
brandonpayton merged 1 commit into
mainfrom
formulae/consume-sdk-target-facts
Jul 17, 2026
Merged

formulae: use SDK-owned cross-compilation settings#106
brandonpayton merged 1 commit into
mainfrom
formulae/consume-sdk-target-facts

Conversation

@brandonpayton

@brandonpayton brandonpayton commented Jul 12, 2026

Copy link
Copy Markdown
Member

Why

Kandelo cross-compiles packages for WebAssembly, so many upstream configure scripts cannot run their normal probe programs on the build machine. The Kandelo SDK supplies reviewed answers about the target in sdk/config.site.

Nine Formulae also carried 21 local assignments covering 15 distinct target facts. Two copies can drift: the SDK could say a function is unavailable while a package recipe says it is available, causing packages to build under inconsistent assumptions. Package authors should receive one target contract from the SDK instead of maintaining private copies.

What changed

Remove the SDK-owned configure answers from Gawk, Grep, Gzip, Libpng, M4, Make, Nano, Sed, and XZ.

GNU Make deliberately retains make_cv_synchronous_posix_spawn=yes. That Make-specific probe checks whether a missing child reports ENOENT synchronously. It is package behavior, not a reusable function-availability fact.

No Formula revision is bumped. The candidate SDK supplies the same target answers before these lines are removed, so this changes ownership rather than intended package behavior. This PR contains no bottle block, archive, sidecar, receipt, provenance file, generated Wasm artifact, platform code, or Kandelo ABI change.

ABI 41 review evidence

  • Exact tap base: a7d0d8ad92998a08a8bf1b03278e2189c01c2a0d
  • Exact PR head: 89bfdeed1d4d5a13ff51b6bce3406b579c5728f5
  • Tree: a77203cbc989cd257e1d6d3961cd2ceb76d869ce
  • Stable zero-context patch identity: a9a2a2092dedf8c7b8c2e35f06430489cd1d3c1e
  • Kandelo platform: ABI 41 merged main commit 6efb411f15df83819a4e21a961845084f8860f6c, tree b133bfa018f7e2bc84c4845edf2f945b2f844954, and sdk/config.site blob d8ea6e3f359419b004274784676db573ee08416c

Fresh checks covered all nine Formulae:

  • Ruby syntax and canonical source closure passed for every Formula.
  • Formula-support Ruby suite passed: 48 tests / 380 assertions.
  • Formula-support TypeScript suite passed: 15 / 15 tests.
  • SDK configure suite passed: 13 / 13 tests, and all 15 unique SDK-owned values match the values removed here.
  • Gawk, Grep, Gzip, Libpng, M4, Make, Nano, Sed, and XZ all built from upstream source and passed their complete Formula tests.
  • Supporting Zlib, Dash, Libcxx, and Ncurses dependencies were built from source at ABI 41.
  • The captured config.log files show the candidate SDK and sdk/config.site supplied the cross-target answers.
  • Receipts and dependency scans show no Kandelo registry package or undeclared build-dependency bridge.
  • git diff --check passed.

This is source-build evidence. It does not claim that public bottles have been published, poured from GHCR, assembled into a VFS image, or run by stock Homebrew inside a guest.

Ordering and remaining gates

Automattic/kandelo#967 has merged. Its exact merged sdk/config.site blob matches all 15 facts removed here. This commit was restacked without patch changes onto current tap main; range-diff, stable patch identity, and the Formula blobs are unchanged. A final independent review found no code blocker.

Merge only after the fresh trust checks pass on the exact head above. Bottle publication remains a separate trusted-publisher operation with public readback, stock pour evidence, and Node.js/Chromium runtime validation.

@brandonpayton

Copy link
Copy Markdown
Member Author

Independent source-diff and validation review: ACCEPT exact head 052e7df489b01421c57fa2ce03ea1d238617eb10.

The reviewer matched all 33 removed assignments to exact #874 sdk/config.site, confirmed Make's retained synchronous-posix_spawn fact is package-specific, and validated the same nine Formula blobs on current tap main. Seven literal Formula tests pass; M4 and Make stop only at the explicitly documented #883 and #879 platform boundaries. No Formula revision or output-change claim is made.

Merge remains held on #874, #883, #879, and #873 as described; final bottle work remains separately gated.

@brandonpayton
brandonpayton force-pushed the formulae/consume-sdk-target-facts branch from 052e7df to 862a4cc Compare July 14, 2026 01:06
@brandonpayton brandonpayton changed the title formulae: consume SDK-owned target facts formulae: use SDK-owned cross-compilation settings Jul 15, 2026
@brandonpayton
brandonpayton force-pushed the formulae/consume-sdk-target-facts branch from 862a4cc to 3132a4e Compare July 16, 2026 19:43
Cross-compiled packages need one reviewed source of truth for target behavior. Duplicating reusable configure answers in nine Formulae lets package recipes drift from the Kandelo SDK and can produce packages under inconsistent target assumptions.

Remove the answers now owned by sdk/config.site from Gawk, Grep, Gzip, Libpng, M4, Make, Nano, Sed, and XZ. Keep the GNU Make package-specific synchronous posix_spawn probe because it tests behavior rather than reusable API availability.
@brandonpayton
brandonpayton force-pushed the formulae/consume-sdk-target-facts branch from 3132a4e to 89bfdee Compare July 17, 2026 02:34
@brandonpayton
brandonpayton merged commit eb59dc1 into main Jul 17, 2026
2 checks passed
@brandonpayton
brandonpayton deleted the formulae/consume-sdk-target-facts branch July 17, 2026 02:34
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