From a48c02f5cc6b19c45ba2fe390df62ec9250d3284 Mon Sep 17 00:00:00 2001 From: cnc Date: Fri, 5 Jun 2026 06:25:33 +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=EF=BC=9A=E6=94=B6=E7=B4=A7=20toolda?= =?UTF-8?q?ta=20WASM=20probe=20=E9=A1=BA=E5=BA=8F=E5=AE=88=E5=8D=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 结论:未扩展 smoke 功能行为,仅让 tooldata source-map guard 校验 build-wasm.sh 中四个 tooldata link/symbol probe 都在复制浏览器 artifact 前运行。 LinuxCNC 来源依据:src/emc/tooldata/Submakefile、tooldata_common.cc、tooldata_mmap.cc、tooldata_db.cc、tooldata_nml.cc、tool_mmap_read.cc、tool_watch.cc 与 tooldata.hh 的 tooldata 构建/导出边界。 检查通过:./check-linuxcnc-tooldata-source-map.sh;./check-linuxcnc-build-source-map.sh;./check-linuxcnc-workstreams-source-map.sh;./test-native.sh;./test-linuxcnc-source-link.sh。 --- check-linuxcnc-tooldata-source-map.sh | 37 +++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/check-linuxcnc-tooldata-source-map.sh b/check-linuxcnc-tooldata-source-map.sh index d782782..0e37fd8 100755 --- a/check-linuxcnc-tooldata-source-map.sh +++ b/check-linuxcnc-tooldata-source-map.sh @@ -92,6 +92,10 @@ grep -F 'LinuxCNC source basis: this probe compares wasm-safe tooldata runtime s test-linuxcnc-wasm-tooldata-runtime-symbols.sh >/dev/null grep -F 'run_parallel_wasm_probe "LinuxCNC wasm tooldata shim link probe" ./test-linuxcnc-wasm-tooldata-link.sh' \ build-wasm.sh >/dev/null +grep -F 'run_parallel_wasm_probe "LinuxCNC wasm tooldata_common link probe" ./test-linuxcnc-wasm-tooldata-common-link.sh' \ + build-wasm.sh >/dev/null +grep -F 'run_parallel_wasm_probe "LinuxCNC wasm tooldata_mmap symbol probe" ./test-linuxcnc-wasm-tooldata-mmap-symbols.sh' \ + build-wasm.sh >/dev/null grep -F 'run_parallel_wasm_probe "LinuxCNC wasm tooldata runtime symbol probe" ./test-linuxcnc-wasm-tooldata-runtime-symbols.sh' \ build-wasm.sh >/dev/null @@ -100,6 +104,7 @@ from pathlib import Path import subprocess doc = Path("docs/linuxcnc-tooldata-source-map.md").read_text(encoding="utf-8") +build_wasm_lines = Path("build-wasm.sh").read_text(encoding="utf-8").splitlines() native_tooldata = subprocess.check_output( ["./list-linuxcnc-source-manifest-sources.sh", "linuxcnc-rs274-source-files.txt", "tooldata"], text=True, @@ -123,6 +128,38 @@ kin_tooldata = subprocess.check_output( if len([source for source in kin_tooldata if source.endswith(".tbl")]) != 10: raise SystemExit("kinematics manifest must track exactly 10 LinuxCNC TOOL_TABLE sources") +positions = {} +for index, line in enumerate(build_wasm_lines, start=1): + if 'run_parallel_wasm_probe "LinuxCNC wasm tooldata shim link probe"' in line: + positions["tooldata_link"] = index + if 'run_parallel_wasm_probe "LinuxCNC wasm tooldata_common link probe"' in line: + positions["tooldata_common"] = index + if 'run_parallel_wasm_probe "LinuxCNC wasm tooldata_mmap symbol probe"' in line: + positions["tooldata_mmap"] = index + if 'run_parallel_wasm_probe "LinuxCNC wasm tooldata runtime symbol probe"' in line: + positions["tooldata_runtime"] = index + if "cp build/wasm/cnc_sim.js web/public/cnc_sim.js" in line: + positions["copy_js"] = index + if "cp build/wasm/cnc_sim.wasm web/public/cnc_sim.wasm" in line: + positions["copy_wasm"] = index + +missing = [ + name for name in ( + "tooldata_link", + "tooldata_common", + "tooldata_mmap", + "tooldata_runtime", + "copy_js", + "copy_wasm", + ) + if name not in positions +] +if missing: + raise SystemExit(f"build-wasm.sh missing tooldata/copy ordering anchor: {', '.join(missing)}") +for probe in ("tooldata_link", "tooldata_common", "tooldata_mmap", "tooldata_runtime"): + if not (positions[probe] < positions["copy_js"] and positions[probe] < positions["copy_wasm"]): + raise SystemExit("build-wasm.sh must run all tooldata link/symbol probes before copying browser artifacts") + for path in [ "core/wasm_shims/tooldata/tooldata_mmap_backend.cc", "core/wasm_shims/tooldata/tooldata_runtime_stubs.cc",