sdk: report Kandelo's musl userland truthfully to Autoconf - #883
sdk: report Kandelo's musl userland truthfully to Autoconf#883brandonpayton wants to merge 3 commits into
Conversation
Phase B-1 matrix build status —
|
| Package | Arch | Status | Sha |
|---|---|---|---|
| icu | wasm32 | built | 5ff9ee8d |
| libcurl | wasm32 | built | 0b1b1671 |
| libcxx | wasm32 | built | 264bead6 |
| libcxx | wasm64 | built | 0a1af93a |
| libiconv | wasm32 | built | 560b07f2 |
| libpng | wasm32 | built | eb91c16b |
| libxml2 | wasm32 | built | f7b57dc8 |
| libzip | wasm32 | built | 81c1337b |
| openssl | wasm32 | built | c08ae93b |
| openssl | wasm64 | built | 73478b9f |
| sqlite | wasm32 | built | 21ab1f0c |
| sqlite | wasm64 | built | bb235497 |
| zlib | wasm32 | built | 242b4b6c |
| zlib | wasm64 | built | 277c6ac7 |
| bc | wasm32 | built | d26e2827 |
| bzip2 | wasm32 | built | ec8d1452 |
| coreutils | wasm32 | built | 63821f2c |
| curl | wasm32 | built | 095be673 |
| dash | wasm32 | built | 417065a9 |
| diffutils | wasm32 | built | d0f1fde0 |
| dinit | wasm32 | built | 18d4e737 |
| fbdoom | wasm32 | built | 23d90bea |
| file | wasm32 | built | 106ea18c |
| findutils | wasm32 | built | 84ae9303 |
| gawk | wasm32 | built | 2e0cbf19 |
| git | wasm32 | built | 32505568 |
| grep | wasm32 | built | 86e9a832 |
| gzip | wasm32 | built | 87e3edf0 |
| hello | wasm32 | built | eeda49a5 |
| kandelo-sdk | wasm32 | built | 1c07b3f1 |
| kernel | wasm32 | built | 66f5a872 |
| less | wasm32 | built | 82cf7855 |
| lsof | wasm32 | built | 813e02a9 |
| m4 | wasm32 | built | c5c145bd |
| make | wasm32 | built | bb0baede |
| mariadb | wasm32 | built | 4c9d0701 |
| mariadb | wasm64 | built | c40f13e1 |
| modeset | wasm32 | built | f6bf2b67 |
| msmtpd | wasm32 | built | 65978078 |
| nano | wasm32 | built | 520fca7a |
| ncurses | wasm32 | built | 549cc665 |
| netcat | wasm32 | built | 9bc9ff6c |
| nginx | wasm32 | built | fb5d0866 |
| php | wasm32 | built | 506473b2 |
| posix-utils-lite | wasm32 | built | cab59030 |
| ruby | wasm32 | built | 3f1d1019 |
| sed | wasm32 | built | 73ee890d |
| spidermonkey | wasm32 | built | 59cda6fd |
| tar | wasm32 | built | 19723213 |
| tcl | wasm32 | built | 82b99ef7 |
| unzip | wasm32 | built | ebf0baaf |
| userspace | wasm32 | built | 6195dcb4 |
| vim | wasm32 | built | 61c88ab1 |
| wget | wasm32 | built | d45f15b8 |
| xz | wasm32 | built | 62b860c9 |
| zip | wasm32 | built | 589eaae7 |
| zstd | wasm32 | built | 3b57442d |
| bash | wasm32 | built | 727ab35e |
| mariadb-test | wasm32 | built | 53c2d150 |
| mariadb-vfs | wasm32 | built | bf4404a8 |
| mariadb-vfs | wasm64 | built | 9fd67b54 |
| nethack | wasm32 | built | da9c9092 |
| node | wasm32 | built | ffbc0dab |
| spidermonkey-node | wasm32 | built | 532c3d92 |
| vim-browser-bundle | wasm32 | built | 678247c1 |
| nethack-browser-bundle | wasm32 | built | 56b84057 |
| rootfs | wasm32 | built | 91af3bbe |
| shell | wasm32 | built | daae0d15 |
| lamp | wasm32 | built | 60ccb85d |
| node-vfs | wasm32 | built | 918187b5 |
| wordpress | wasm32 | built | 65df6293 |
Auto-generated; replaced on each push. Raw data in the publish-status workflow artifact.
|
Controlled Homebrew consumer evidence at exact head
No tap formula workaround such as |
ac91610 to
7142f95
Compare
GNU build systems need an accepted musl host tuple to select the libc behavior provided by Kandelo's sysroot. Keep LLVM code generation on wasm-unknown-unknown and use wasm-unknown-linux-musl only for Autoconf host identity, without defining __linux__ or promising Linux kernel behavior.
GNU Netcat 0.7.1 ships config.sub and config.guess files that predate Wasm musl tuples. Replace both from the pinned Automake build input before configure, let config.guess detect the real POSIX build host, and bump the package revision for the changed output.
ef282b4 to
a98bd0d
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) identifies Kandelo to package configure scripts. musl is Kandelo's C standard library, while GNU Autoconf and gnulib use the reported target name to choose compatible source code.
Report the SDK's real musl userland identity to GNU build systems so Autoconf and gnulib choose musl behavior instead of treating Kandelo as an unknown libc.
GNU M4 made the mismatch visible:
wasm32posix-configurereported--host=wasm32-unknown-none, so gnulib did not defineMUSL_LIBCeven though the SDK links musl. Correcting the identity also exposed an upstream PHP cross-compilation assumption: PHP treats every*linux*host as glibc and selects anoff64_t *fopencookie callback, while musl truthfully usesoff_t *.What changed
wasm*-unknown-linux-muslas the GNU/Autoconf host identity.wasm*-unknown-unknownas Clang's code-generation triple.HAVE_FOPENCOOKIEsupport but undefine only the glibc-specificCOOKIE_SEEKER_USES_OFF64_Tchoice.GNU
config.subrequires a Linux kernel component for a musl tuple. This describes the musl userland; it does not define__linux__, change Kandelo's syscall contract, or promise Linux kernel behavior. The PHP adjustment is an upstream cross-compilation compatibility fix, not a substitute for missing Kandelo functionality.Validation
Final candidate:
a98bd0d7235075e638aab779ee4785cc44e6e78b(tree0feb3d28b7aac6e7bd0a85da7d31a5eae638639e).php.wasmandphp-fpm.wasmwere optimized, fork-instrumented, and validated as ABI 39 program artifacts.php -rartifact and passed.off_t *callback and rejects PHP's glibc-onlyoff64_t *callback.bash -nandgit diff --checkpassed.Hosted staging is running on this exact head. The preceding run rebuilt curl with the truthful wasm32-unknown-linux-musl identity and exposed one stale registry test expectation; that expectation is now folded into the original target-identity commit. The other 1,406 Vitest cases and the package/library matrix passed in that run.
Consumer evidence on the earlier target-identity head also includes source builds and literal Kandelo runtime tests for GNU Grep, GNU Sed, GNU M4, and XZ.
Contract impact
This changes SDK configure metadata and one upstream PHP cross-build decision. It changes no syscall, channel, memory layout, host runtime, browser behavior, or ABI version. Node and browser hosts consume the same resulting Wasm contract.
Merge ordering
This PR is stacked on #874, which is stacked on #913. Merge #913, then #874, then retarget this PR to
main. GNU M4 and other consumers require #874's authoritativesdk/config.sitefacts beneath this host identity; without them, Kandelo's allow-undefined link mode can create false-positive function probes.This is a main-repository PR for review and must not be auto-merged.