参考所有分组,完成尽量多的内容:收紧 tooldata WASM probe 顺序守卫
结论:未扩展 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。
This commit is contained in:
@@ -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",
|
||||
|
||||
Reference in New Issue
Block a user