sdk: centralize cross-compile function availability - #874
Conversation
Phase B-1 matrix build status —
|
| Package | Arch | Status | Sha |
|---|---|---|---|
| icu | wasm32 | built | 7adac0d6 |
| libcurl | wasm32 | built | 09364632 |
| libcxx | wasm32 | built | eb8b0f23 |
| libcxx | wasm64 | built | 98408792 |
| libiconv | wasm32 | built | 33ebf32a |
| libpng | wasm32 | built | f6b060eb |
| libxml2 | wasm32 | built | ed004619 |
| libzip | wasm32 | built | 3a18fa37 |
| openssl | wasm32 | built | 2534f50d |
| openssl | wasm64 | built | b1f606da |
| sqlite | wasm32 | built | 38d1e709 |
| sqlite | wasm64 | built | 74ba7df5 |
| zlib | wasm32 | built | ed1f0382 |
| zlib | wasm64 | built | fe65fab5 |
| bc | wasm32 | built | 74fe9422 |
| bzip2 | wasm32 | built | fbf3db6e |
| coreutils | wasm32 | built | 4ad93277 |
| curl | wasm32 | built | 8d9826d0 |
| dash | wasm32 | built | 6aa80963 |
| diffutils | wasm32 | built | 157e6de9 |
| dinit | wasm32 | built | 32700f6b |
| fbdoom | wasm32 | built | adfb0c3d |
| file | wasm32 | built | dd352e11 |
| findutils | wasm32 | built | 7c850a20 |
| gawk | wasm32 | built | 97df82fe |
| git | wasm32 | built | 6c1ba9dd |
| grep | wasm32 | built | 16fdbb01 |
| gzip | wasm32 | built | 21778374 |
| hello | wasm32 | built | 7f3a5ebd |
| kandelo-sdk | wasm32 | built | 2e05e690 |
| kernel | wasm32 | built | 5ad0bc5c |
| less | wasm32 | built | c1d48473 |
| lsof | wasm32 | built | 141d3a95 |
| m4 | wasm32 | built | 8fb73304 |
| make | wasm32 | built | 8255da12 |
| mariadb | wasm32 | built | d7742568 |
| mariadb | wasm64 | built | c844b652 |
| modeset | wasm32 | built | bc6ee39f |
| msmtpd | wasm32 | built | 6eecbf15 |
| nano | wasm32 | built | 9a4f539b |
| ncurses | wasm32 | built | 0ad43612 |
| netcat | wasm32 | built | 04b88dfd |
| nginx | wasm32 | built | 8b0eaf1d |
| php | wasm32 | built | 65dc7d82 |
| posix-utils-lite | wasm32 | built | fe0864d3 |
| ruby | wasm32 | built | 7b786f57 |
| sed | wasm32 | built | 290ef527 |
| spidermonkey | wasm32 | built | 3934d30d |
| tar | wasm32 | built | c18feaf9 |
| tcl | wasm32 | built | 50406646 |
| unzip | wasm32 | built | 007b2902 |
| userspace | wasm32 | built | a0479d3e |
| vim | wasm32 | built | 116c55b3 |
| wget | wasm32 | built | 4aa9cc71 |
| xz | wasm32 | built | 540b9422 |
| zip | wasm32 | built | 59ba947e |
| zstd | wasm32 | built | 5b01d1d5 |
| bash | wasm32 | built | 3d825116 |
| mariadb-test | wasm32 | built | 5f58870f |
| mariadb-vfs | wasm32 | built | 8b85364a |
| mariadb-vfs | wasm64 | built | 67f214cb |
| nethack | wasm32 | built | c9baab43 |
| node | wasm32 | built | 64a3eb03 |
| spidermonkey-node | wasm32 | built | 4c31f9e3 |
| vim-browser-bundle | wasm32 | built | 655462a3 |
| nethack-browser-bundle | wasm32 | built | 1200fdd1 |
| rootfs | wasm32 | built | f73d1843 |
| shell | wasm32 | built | 37b5964d |
| lamp | wasm32 | built | 729d141a |
| node-vfs | wasm32 | built | 5cfb8cd8 |
| wordpress | wasm32 | built | 1252eb49 |
Auto-generated; replaced on each push. Raw data in the publish-status workflow artifact.
|
Wget 1.25.0 provides concrete downstream evidence for the new Without the shared With this PR stacked unchanged in the ABI 18 integration:
This is a target capability fact, not a Wget-specific cache override; the Wget formula retains only its package-specific |
GNU Make's loadable-object API was disabled even though Kandelo supports Wasm side modules. Install the public header, mark the documented gmk API as visible, and exercise a compiled module that registers and runs a custom Make function. The runtime path depends on the SDK's explicit -ldl configure fact and the host's main-program handle support, so the tap PR remains gated on Automattic/kandelo#874 and #879.
|
Libmagic supplied a focused regression probe for the existing The file 5.45 cross configure uses Commit
Validation through the repository dev shell:
No ABI or generated artifact changes. |
GNU Make's loadable-object API was disabled even though Kandelo supports Wasm side modules. Install the public header, mark the documented gmk API as visible, and exercise a compiled module that registers and runs a custom Make function. The runtime path depends on the SDK's explicit -ldl configure fact and the host's main-program handle support, so the tap PR remains gated on Automattic/kandelo#874 and #879.
GNU Make's loadable-object API was disabled even though Kandelo supports Wasm side modules. Install the public header, mark the documented gmk API as visible, and exercise a compiled module that registers and runs a custom Make function. The runtime path depends on the SDK's explicit -ldl configure fact and the host's main-program handle support, so the tap PR remains gated on Automattic/kandelo#874 and #879.
7e0c998 to
b23f9f3
Compare
* make: add GNU build automation formula * make: enable loadable object support GNU Make's loadable-object API was disabled even though Kandelo supports Wasm side modules. Install the public header, mark the documented gmk API as visible, and exercise a compiled module that registers and runs a custom Make function. The runtime path depends on the SDK's explicit -ldl configure fact and the host's main-program handle support, so the tap PR remains gated on Automattic/kandelo#874 and #879. * make: load support from the installed tap
|
Exact-head CI exposed one integration failure after Fixed at Fresh local evidence through
The five failed staging jobs were all manifestations of this one Wget build failure and should rebuild from revision 3 on this head. |
Keep parser classifications for SDK mode and thread inference, but forward non-SDK arguments in their original sequence so objects, -l libraries, archives, and linker group controls retain normal static-link semantics. Add unit and real wasm-ld coverage for mixed input ordering and linker controls.
Kandelo permits undefined Wasm imports, so ordinary link probes can report unavailable libc functions as present. Centralize verified musl availability, gnulib string behavior, and the libdl search exception in config.site while preserving caller overrides. Document and test the shared target contract.
Remove Wget's obsolete package-local group_member stub now that the SDK config.site reports the target function truthfully. Bump the package revision because the source and resulting archive change.
04a72d4 to
128a3f7
Compare
|
Absorbed by rebase-merged #967. Main is now 6efb411 with the sealed tree b133bfa018f7e2bc84c4845edf2f945b2f844954, and ABI 41 activation completed successfully in run 29550069085. The absorption audit confirmed this PR\x27s behavior and tests are present in that merged tree, so this source PR is closed and its branch is deleted. |
Why
The software development kit (SDK) tells package build tools what Kandelo supports. Autoconf is the common configure-time tool that tests those capabilities, and musl is Kandelo's C standard library.
Make the Kandelo SDK's Autoconf target description authoritative enough for dependency-first Homebrew builds, instead of requiring each formula to repeat target availability overrides.
Kandelo's Wasm link path permits undefined imports. A conventional
AC_CHECK_FUNClink probe can therefore reportyesfor a function absent from musl and the SDK archives; legacy probes can also report false negatives for exported functions by calling them with invalid signatures. GNU tar, Coreutils, Dash, Bash, Diffutils, Gettext, Bison, and the dependency roots exposed both directions during the tap migration.Dynamic loading has another false-positive path: musl's weak dlfcn stubs link but only report "Dynamic loading not supported." An uncached
AC_SEARCH_LIBS(dlopen)therefore returnsnone required, omits-ldl, and prevents the SDK compiler wrapper from selecting Kandelo's functional Wasm dlopen glue.What changed
bsd_signal,isalpha, andstpcpyGetSystemTimeAsFileTime, FreeBSDcap_rights_limit, and glibcfeenableexcept/obstack_printfstrerror(0)andstrcasecmpbehavior so gnulib consumers neither select unnecessary replacements nor abort while cross-configuringAC_SEARCH_LIBSchecks fordlopen,dlsym,dlclose, anddlerrorthrough-ldl, which the SDK translates tolibc/glue/dlopen.cac_cv_func_dlopen=no, report the explicit SDK library asac_cv_lib_dl_dlopen=yes, and remove contradictory duplicate defaults${var=default}, with automated coverage for defaults and overridessdk/config.site; package recipes own only package-specific runtime, dependency-library, or semantic probesNo syscall behavior, host behavior, Wasm layout, ABI surface, generated artifact, Node path, or browser path changes.
Validation
Current stacked-head validation through
scripts/dev-shell.shon exact head128a3f714fe5583cd25210f4e899b12258b3eb7f:-ldlselection, and compile integrationscripts/check-abi-version.sh: ABI snapshot, C header, generated TypeScript bindings, and ABI version remained in syncgit diff --check c6849bde6..HEAD: passedThe target-fact changes are unchanged by the #913 restack. Consumer and symbol-audit evidence recorded on the prior reviewed head includes:
group_memberreplacement instead of its obsolete always-false package stub-ldlglue and invoked a side-module callbackyesand configures without package-local function factsstrerrorreplacement, proving these facts optimize and centralize target identity rather than masking a required replacementKernel, libc-conformance, POSIX, and browser suites were not rerun because this supplies build-time Autoconf cache facts only. Consumer executables were exercised through Kandelo; no bottles or package archives are published by this PR.
Merge order
This PR is stacked directly on fully-green #913. Merge #913 first, then retarget this PR to
main; its two purpose commits remain the complete review diff.Review state
Current head:
128a3f714fe5583cd25210f4e899b12258b3eb7f, based on exact #913 headc6849bde6cfbe51837227789840ecf2b05791070, on ABI 39. This is a main-repository PR for Brandon's review and must not be auto-merged.Formula source acceptance can proceed in parallel, but final bottles must be rebuilt after this PR lands so they consume SDK-owned facts rather than duplicated formula overrides.