You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 0e6c8e6
Browse filesBrowse the repository at this point in the historyBrowse files
A kernel-abi provider infers the platform boundary, and the build cache
key now covers the realised environment
A package providing mcpp:kernel-abi=<impl> is by definition the boundary
where the platform's own interfaces are called, so it can never want the
graph's presented [c-abi] environment instead of the triple's own. Rather
than require every kernel-abi implementation to write c-environment =
"platform" (and every already-released one to bump a version to add it),
that value is now inferred from provides alone, in both manifest parsers
(mcpp.toml and the xpkg index descriptor). The explicit key still wins when
present. Measured without it: openkal-windows, compiled under the POSIX
substitution like everything else in its graph, got a 32-bit wchar_t from
-fno-short-wchar while the Win32 calls it makes hand back genuine 16-bit
UTF-16, misreading its own results.
Separately: the global build cache's key (~/.mcpp/build-cache/v1,
mcpp.build.cache_key) read only a package's OWN declared cflags/cxxflags,
never the engine's broadcast channel the realised environment (and
__openkal__, and targetSideUsage) actually travels through. Two builds
realising different environments for the identical package produced the
identical key. Measured: upgrading mcpp in place, with the cache directory
left alone, served objects compiled under the old realised environment into
an image built under the new one. fill_package_config now folds in
privateBuild.cflags/cxxflags/asmflags (the post-broadcast values) alongside
the declared ones, exactly as it already did for include directories.
0 commit comments