refactor: collapse dual-mode plumbing — the DOM port is the only WASM build
The canvas (wxUniversal) mode is gone (wxwidgets submodule); remove every piece of side-by-side plumbing so there is exactly one build and one test flow: - scripts/build-wxuniversal-wasm.sh -> scripts/build-wx-wasm.sh; no --dom/--enable-universal; builds into build-wasm/wxwidgets - build-wasm-test.sh: no DOM_BUILD / apps-dom rsync mirror / PORT=dom; apps build straight into tests/apps (Makefile.wasm PORT conditionals collapsed; wx.js + wx-dom.js always pre-js) - docker/build.sh, build-kicad-target.sh, env.sh: WX_PORT / -dom / -universal suffixes removed; kicad builds to kicad-<app>, outputs to output/; wx.js/wx-dom.js copied from the real source path (/workspace/wxwidgets/build/wasm — the old build-wasm path never existed and silently failed) - setup-kicad-wasm.sh: single target dir; the perl wx-dom.js injection is gone — the 7 checked-in kicad pages now reference wx-dom.js directly - playwright configs serve apps/; fixtures drop the test-results/dom and logs/wxwidgets/dom namespacing; boot.spec asserts wxDomPort unconditionally; pcbnew.spec uses one reference image; appearance.spec assertions unconditional - compare/update-baseline-screenshots.sh: --port removed - tests/gal-regression/wasm/Makefile: links build-wasm/wxwidgets and carries wx-dom.js as a second pre-js — the gal-webgl suite (30 specs) now actually builds and runs here (it needed host-side boost+glm via scripts/deps; the bundle had been missing, timing the whole spec out) - tests: clickCanvas() dispatches via page.mouse (DOM widgets legitimately cover the canvas; locator actionability refused the click); the comprehensive spec drives wxChoice through its native <select> (browser-owned popup cannot be coordinate-clicked) - docs: README/CLAUDE.md/build.md script names and dirs; features/wx-dom-port README reframed (DOM is THE port), visual-notes bugs 26-28; FindwxWidgets.cmake config label drops 'wasmuniv' - wxwidgets submodule -> 9dbacc9448 (DOM-only port, fork diff shrunk) Gate: full wx e2e suite 292 passed / 1 skipped / 0 failed — first run ever with the gal-webgl specs green (28 scenarios + load + sequential). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
2c1b0d409b
commit
7dc1bf27e0
32 changed files with 199 additions and 335 deletions
|
|
@ -178,20 +178,14 @@ compile_app() {
|
|||
echo ""
|
||||
echo "=== Building ${app} (${index}/${total}) ==="
|
||||
|
||||
# WX_PORT=dom builds against the DOM wxWidgets into separate build and
|
||||
# output trees (kicad-<app>-dom, output/dom/).
|
||||
local out_dir
|
||||
out_dir=$(out_dir_for)
|
||||
local out_dir="output"
|
||||
local kicad_build="kicad-${app}"
|
||||
if [[ "${WX_PORT:-}" == "dom" ]]; then
|
||||
kicad_build="kicad-${app}-dom"
|
||||
fi
|
||||
|
||||
# Run build inside the container.
|
||||
# -e EMSDK=/emsdk: `docker compose exec` bypasses the entrypoint that sources
|
||||
# emsdk_env.sh, so the build shell would lack emcc/embuilder on PATH. Setting
|
||||
# EMSDK lets scripts/common/env.sh source /emsdk/emsdk_env.sh and activate the toolchain.
|
||||
docker compose -f docker/docker-compose.yml exec -e EMSDK=/emsdk -e WX_PORT="${WX_PORT:-}" \
|
||||
docker compose -f docker/docker-compose.yml exec -e EMSDK=/emsdk \
|
||||
kicad-wasm-builder \
|
||||
"/workspace/scripts/kicad/build-${app}.sh" "${ARGS[@]}"
|
||||
|
||||
|
|
@ -204,8 +198,8 @@ compile_app() {
|
|||
cp /workspace/build-wasm/${kicad_build}/${subdir}/${app}.{js,wasm,wasm.debug.wasm,wasm.map,worker.js} /workspace/${out_dir}/ 2>/dev/null || \
|
||||
cp /workspace/build-wasm/${kicad_build}/${subdir}/${app}.{js,wasm} /workspace/${out_dir}/; \
|
||||
cp /workspace/build-wasm/${kicad_build}/resources/images.tar.gz /workspace/${out_dir}/ 2>/dev/null || true; \
|
||||
cp /workspace/build-wasm/wxwidgets/build/wasm/wx.js /workspace/${out_dir}/ 2>/dev/null || true; \
|
||||
if [ -n \"${WX_PORT:-}\" ]; then cp /workspace/build-wasm/wxwidgets/build/wasm/wx-dom.js /workspace/${out_dir}/ 2>/dev/null || true; fi"
|
||||
cp /workspace/wxwidgets/build/wasm/wx.js /workspace/${out_dir}/ 2>/dev/null || true; \
|
||||
cp /workspace/wxwidgets/build/wasm/wx-dom.js /workspace/${out_dir}/ 2>/dev/null || true"
|
||||
|
||||
# The container runs as root, so files in the bind-mounted ./output land
|
||||
# root-owned on the host. macOS Docker Desktop remaps ownership to the host
|
||||
|
|
@ -215,24 +209,13 @@ compile_app() {
|
|||
chown -R "$(id -u):$(id -g)" /workspace/output || true
|
||||
}
|
||||
|
||||
# Output dir for the current flavor: the DOM port (WX_PORT=dom) keeps its
|
||||
# bundles in output/dom/ so the canvas bundles are never clobbered.
|
||||
out_dir_for() {
|
||||
if [[ "${WX_PORT:-}" == "dom" ]]; then
|
||||
echo "output/dom"
|
||||
else
|
||||
echo "output"
|
||||
fi
|
||||
}
|
||||
|
||||
# Phase 2 of one app: host-side post-processing (dyncall shims, finalize,
|
||||
# asyncify + -O2). Pure host work on output/${app}.* — independent of the
|
||||
# container, which is what makes it safe to run in the background while the
|
||||
# next app compiles.
|
||||
postprocess_app() {
|
||||
local app="$1"
|
||||
local out_dir
|
||||
out_dir=$(out_dir_for)
|
||||
local out_dir="output"
|
||||
|
||||
# Inject dynCall shims (fixes "dynCall_* is not defined" errors in Emscripten 4.x)
|
||||
kw_stage dyncall-shims
|
||||
|
|
|
|||
Loading…
Reference in a new issue