From a46910b6c06977d66c4f792df33ab2028398a314 Mon Sep 17 00:00:00 2001 From: cnc Date: Thu, 4 Jun 2026 19:07:21 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=82=E8=80=83=E6=89=80=E6=9C=89=E5=88=86?= =?UTF-8?q?=E7=BB=84=EF=BC=8C=E5=AE=8C=E6=88=90=E5=B0=BD=E9=87=8F=E5=A4=9A?= =?UTF-8?q?=E7=9A=84=E5=86=85=E5=AE=B9=E3=80=82=E7=A6=81=E6=AD=A2=E9=A1=BA?= =?UTF-8?q?=E6=89=8B=E6=89=A9=E5=8A=9F=E8=83=BD=20smoke=EF=BC=9A=E9=94=81?= =?UTF-8?q?=E5=AE=9AWASM=E9=98=BB=E5=A1=9E=E6=9B=BF=E6=8D=A2=E9=9B=86?= =?UTF-8?q?=E5=90=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- check-linuxcnc-wasm-blockers-source-map.sh | 26 +++++++++++++++++----- docs/linuxcnc-wasm-blockers-source-map.md | 10 +++++++-- 2 files changed, 29 insertions(+), 7 deletions(-) diff --git a/check-linuxcnc-wasm-blockers-source-map.sh b/check-linuxcnc-wasm-blockers-source-map.sh index 3c8669e..74ff735 100755 --- a/check-linuxcnc-wasm-blockers-source-map.sh +++ b/check-linuxcnc-wasm-blockers-source-map.sh @@ -102,22 +102,38 @@ if sections.get("dlopen") != ["(none)"]: if sections.get("tooldata-users") != ["(none)"]: raise SystemExit("blocked tooldata-users section is no longer empty") -required_entries = [ +required_tracked_entries = [ "src/emc/rs274ngc/gcodemodule.cc", "src/emc/rs274ngc/interpmodule.cc", "src/emc/tooldata/tooldata_mmap.cc", "src/emc/rs274ngc/interp_base.cc", "src/emc/rs274ngc/interp_o_word.cc", "src/emc/rs274ngc/rs274ngc_pre.cc", - "src/emc/tooldata/tooldata_mmap.cc -> core/wasm_shims/tooldata/tooldata_mmap_backend.cc", - "src/emc/rs274ngc/gcodemodule.cc -> core/wasm_shims/linuxcnc_runtime_shim.cc", - "src/emc/rs274ngc/pyparamclass.cc -> core/wasm_shims/python_c_api_shim.cc", ] -for entry in required_entries: +required_replacements = [ + "src/emc/rs274ngc/canonmodule.cc -> core/wasm_shims/linuxcnc_runtime_shim.cc", + "src/emc/rs274ngc/gcodemodule.cc -> core/wasm_shims/linuxcnc_runtime_shim.cc", + "src/emc/rs274ngc/interpmodule.cc -> core/wasm_shims/linuxcnc_runtime_shim.cc", + "src/emc/rs274ngc/pyarrays.cc -> core/wasm_shims/python_c_api_shim.cc", + "src/emc/rs274ngc/pyblock.cc -> core/wasm_shims/python_c_api_shim.cc", + "src/emc/rs274ngc/pyemctypes.cc -> core/wasm_shims/python_c_api_shim.cc", + "src/emc/rs274ngc/pyinterp1.cc -> core/wasm_shims/python_c_api_shim.cc", + "src/emc/rs274ngc/pyparamclass.cc -> core/wasm_shims/python_c_api_shim.cc", + "src/emc/tooldata/tooldata_mmap.cc -> core/wasm_shims/tooldata/tooldata_mmap_backend.cc", +] +for entry in required_tracked_entries: if entry not in output: raise SystemExit(f"WASM blocker analyzer output missing required entry: {entry}") if entry not in source_map: raise SystemExit(f"docs/linuxcnc-wasm-blockers-source-map.md missing required entry: {entry}") +replacement_entries = [entry for entry in sections.get("blocked-replacements", []) if entry != "(none)"] +if replacement_entries != required_replacements: + raise SystemExit(f"WASM blocker replacement set changed: {replacement_entries}") +if "Required replacement set:" not in source_map: + raise SystemExit("docs/linuxcnc-wasm-blockers-source-map.md must document the complete replacement set") +for entry in required_replacements: + if entry not in source_map: + raise SystemExit(f"docs/linuxcnc-wasm-blockers-source-map.md missing required replacement: {entry}") shim_paths = set(Path(line).as_posix() for line in subprocess.check_output( ["./list-linuxcnc-wasm-safe-shims.sh"], diff --git a/docs/linuxcnc-wasm-blockers-source-map.md b/docs/linuxcnc-wasm-blockers-source-map.md index 813dd97..dec93f5 100644 --- a/docs/linuxcnc-wasm-blockers-source-map.md +++ b/docs/linuxcnc-wasm-blockers-source-map.md @@ -46,11 +46,17 @@ a source-link/build guard only; it does not add CNC behavior and must not become | `core-tooldata-users-shimmed` | 2 | Core RS274/NML users of tooldata declarations. | | `core-native-fs-shimmed` | 16 | Core sources with native filesystem includes or calls covered by WASM shims. | -Required replacement examples: +Required replacement set: -- `src/emc/tooldata/tooldata_mmap.cc -> core/wasm_shims/tooldata/tooldata_mmap_backend.cc` +- `src/emc/rs274ngc/canonmodule.cc -> core/wasm_shims/linuxcnc_runtime_shim.cc` - `src/emc/rs274ngc/gcodemodule.cc -> core/wasm_shims/linuxcnc_runtime_shim.cc` +- `src/emc/rs274ngc/interpmodule.cc -> core/wasm_shims/linuxcnc_runtime_shim.cc` +- `src/emc/rs274ngc/pyarrays.cc -> core/wasm_shims/python_c_api_shim.cc` +- `src/emc/rs274ngc/pyblock.cc -> core/wasm_shims/python_c_api_shim.cc` +- `src/emc/rs274ngc/pyemctypes.cc -> core/wasm_shims/python_c_api_shim.cc` +- `src/emc/rs274ngc/pyinterp1.cc -> core/wasm_shims/python_c_api_shim.cc` - `src/emc/rs274ngc/pyparamclass.cc -> core/wasm_shims/python_c_api_shim.cc` +- `src/emc/tooldata/tooldata_mmap.cc -> core/wasm_shims/tooldata/tooldata_mmap_backend.cc` Required tracked core examples: