fix(trace): make ?trace= work by merging Module.ENV in the glue
The emscripten glue's `var ENV = {};` never merged Module.ENV, so boot.ts's
Module.ENV.KICAD_TRACE was a silent no-op — and since environ_get on a pthread
proxies to the main thread, the app/UI thread's getenv read the (empty) main
ENV. Net: KICAD_TRACE never arrived and every KI_TRACE was a no-op.
scripts/common/patch-env-shim.mjs post-processes each generated <app>.js to
merge Module.ENV into ENV (idempotent; runtime no-op when unset), wired into
docker/build.sh's per-app host post-process next to the dyncall-shim inject.
Replaces a fragile manual glue edit re-applied after every build. Verified:
symbol-editor eager load now emits KI_TRACE_SYM_CHOOSER fatLoad timing.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
88aaba99c9
commit
89a433fda9
3 changed files with 69 additions and 3 deletions
|
|
@ -190,9 +190,12 @@ async function doBoot(opts: BootOptions): Promise<void> {
|
|||
|
||||
// Dev/diagnostics: ?trace=<KICAD_TRACE mask> turns on a KiCad trace channel for
|
||||
// this boot (e.g. ?trace=KI_TRACE_SYM_CHOOSER for symbol-chooser timing). Set on
|
||||
// the page's Module.ENV (main thread) AND seeded into each pthread worker via
|
||||
// pthreadWorkerScript (the app/UI thread under PROXY_TO_PTHREAD); the glue's
|
||||
// ENV-merge shim feeds it into the C environ that wxGetEnv reads.
|
||||
// the page's Module.ENV (main thread). Under PROXY_TO_PTHREAD the app/UI thread
|
||||
// is a pthread, but `environ_get` on a pthread proxies to the MAIN thread — so
|
||||
// the main thread's ENV is what `getenv("KICAD_TRACE")` reads. The build's
|
||||
// patch-env-shim.mjs makes the glue merge Module.ENV into that ENV (emscripten's
|
||||
// glue otherwise ignores Module.ENV); the per-worker seed below is a harmless
|
||||
// belt-and-suspenders. See docs/features/libs/0013.
|
||||
const traceMask = new URLSearchParams(window.location.search).get("trace");
|
||||
|
||||
// libs: install the provider (must exist before any plugin call can suspend
|
||||
|
|
|
|||
Loading…
Reference in a new issue