mirror of
https://github.com/logos-co/logos-logoscore-cli.git
synced 2026-08-31 04:41:06 +00:00
PR-5 of the shared-runtime migration, logoscore-cli half. Both front-ends stop emptying static archives and taking the runtime from liblogos_core, and link the shared libraries that OWN those types instead. DELETED: cmake/LogosSharedFromDll.cmake, its call, and LOGOS_SHARED_USE_DLL. The shim made ld unable to pull an archive member that would redefine an imported symbol; there is no second static copy left to suppress. The dllimport opt-in is gone for the same reason -- the import is what the link now produces. Takes the pin SET, not one pin: logos-protocol 2e3344a (#65), logos-plugin-qt 1aa3e31 (#22), logos-liblogos b2a9a0b (#182). Bumping one alone gives a combination where the shared targets do not exist or do not match. THE GATE NEEDED THE SAME TWO CORRECTIONS AS BASECAMP'S, plus one this repo surfaced on its own. All three were the check measuring the wrong thing. * It hardcoded liblogos_core as THE provider. True while liblogos_core absorbed both archives; false now. Replaced with EXACTLY-ONE-DEFINER per type, which is provider-agnostic and survives ownership moving again. * The negative control planted a copy of liblogos_core as its "duplicate runtime". liblogos_core defines ZERO runtime symbols now, so it planted nothing and the control correctly reported itself vacuous. It plants a real DEFINER instead. * NEW HERE: this gate listed every lib/*.dylib as a CONSUMER, so it scanned the owners under "no consumer defines the runtime" and reported liblogos_protocol.dylib 35 SPLIT-BRAIN which is simply the library doing its job. Owners are now separated from consumers: counted in the exactly-one assertion, excluded from the nothing-else-defines-it scan. basecamp's gate never hit this because its consumer set is the exe plus plugins/, not lib/. StoreRegistry stays out of the exactly-one list: token_manager.cpp defines `static StoreRegistry r;` inside registry(), so it has a LOCAL symbol and no external one. Requiring one definer of something never exported would fail forever. It remains in the TIER 1 scan, where "no consumer defines it" is meaningful precisely because it should never become external. VERIFIED, aarch64-darwin: .#default PASS checks.tests PASS checks.symbol-gate PASS checks.symbol-gate-negative PASS Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
27 MiB
27 MiB
The file is too large to be shown.
View Raw