参考所有分组,完成尽量多的内容。禁止顺手扩功能 smoke

结论:按 align-linuxcnc 约束让 switchkins/remap 生成器读取 LinuxCNC INI [EMCIO] TOOL_TABLE,仅用于校验 linuxcnc-kinematics-source-files.txt 的 tooldata 源覆盖;不把 TOOL_TABLE 输出为新 API case,不扩展 smoke 行为。

源依据:../linuxcnc/configs/sim 下 M428/M429/M430 switchkins INI 的 [EMCIO] TOOL_TABLE 条目,以及现有 kinematics manifest 的 tooldata 条目。

验证:./check-linuxcnc-switchkins-remap-table.sh linuxcnc-kinematics-source-files.txt 通过;./test-native.sh 通过;./test-linuxcnc-source-link.sh 通过。
This commit is contained in:
cnc
2026-06-03 13:36:25 +08:00
parent 0d4e248811
commit 7d28d0a025
2 changed files with 118 additions and 0 deletions

View File

@@ -355,28 +355,36 @@ validate_generator_cli_contract() {
local cli_dir
local cli_manifest
local cli_manifest_with_config_ngc
local cli_manifest_with_config_tbl
local cli_manifest_with_duplicate_ini
local cli_manifest_with_duplicate_remap
local cli_manifest_with_duplicate_tooldata
local cli_manifest_with_unused_hal
local cli_manifest_with_unused_postgui
local cli_manifest_with_unused_remap
local cli_manifest_with_unused_tooldata
local cli_manifest_without_ini
local cli_manifest_without_hal
local cli_manifest_without_postgui
local cli_manifest_without_remap
local cli_manifest_without_tooldata
cli_dir=$(mktemp -d "${TMPDIR:-/tmp}/linuxcnc_switchkins_remap_cli.XXXXXX")
trap 'rm -rf "$cli_dir"' EXIT
cli_manifest="$cli_dir/bridgemill-manifest.txt"
cli_manifest_with_config_ngc="$cli_dir/bridgemill-manifest-with-config-ngc.txt"
cli_manifest_with_config_tbl="$cli_dir/bridgemill-manifest-with-config-tbl.txt"
cli_manifest_with_duplicate_ini="$cli_dir/bridgemill-manifest-with-duplicate-ini.txt"
cli_manifest_with_duplicate_remap="$cli_dir/bridgemill-manifest-with-duplicate-remap.txt"
cli_manifest_with_duplicate_tooldata="$cli_dir/bridgemill-manifest-with-duplicate-tooldata.txt"
cli_manifest_with_unused_hal="$cli_dir/bridgemill-manifest-with-unused-hal.txt"
cli_manifest_with_unused_postgui="$cli_dir/bridgemill-manifest-with-unused-postgui.txt"
cli_manifest_with_unused_remap="$cli_dir/bridgemill-manifest-with-unused-remap.txt"
cli_manifest_with_unused_tooldata="$cli_dir/bridgemill-manifest-with-unused-tooldata.txt"
cli_manifest_without_ini="$cli_dir/bridgemill-manifest-without-ini.txt"
cli_manifest_without_hal="$cli_dir/bridgemill-manifest-without-hal.txt"
cli_manifest_without_postgui="$cli_dir/bridgemill-manifest-without-postgui.txt"
cli_manifest_without_remap="$cli_dir/bridgemill-manifest-without-remap.txt"
cli_manifest_without_tooldata="$cli_dir/bridgemill-manifest-without-tooldata.txt"
if ! awk -F: -v manifest="$manifest_file" '
function require(key) {
@@ -390,6 +398,7 @@ validate_generator_cli_contract() {
require("remap:configs/sim/axis/vismach/5axis/bridgemill/remap_subs/428remap.ngc")
require("remap:configs/sim/axis/vismach/5axis/bridgemill/remap_subs/429remap.ngc")
require("remap:configs/sim/axis/vismach/5axis/bridgemill/remap_subs/430remap.ngc")
require("tooldata:configs/sim/axis/vismach/5axis/bridgemill/5axis.tbl")
}
{
key = $1 ":" $2
@@ -427,6 +436,15 @@ validate_generator_cli_contract() {
echo "switchkins remap generator accepted LinuxCNC remap source listed as config" >&2
exit 1
fi
cp "$cli_manifest" "$cli_manifest_with_config_tbl"
grep -F \
'tooldata:configs/sim/axis/vismach/5axis/bridgemill/5axis.tbl:' \
"$cli_manifest" | sed 's/^tooldata:/config:/' >>"$cli_manifest_with_config_tbl"
if LINUXCNC_ROOT="$linuxcnc_root" ./generate-linuxcnc-switchkins-remap-table.sh \
"$cli_manifest_with_config_tbl" >/dev/null 2>&1; then
echo "switchkins remap generator accepted LinuxCNC TOOL_TABLE source listed as config" >&2
exit 1
fi
cp "$cli_manifest" "$cli_manifest_with_duplicate_ini"
grep -F \
'config:configs/sim/axis/vismach/5axis/bridgemill/5axis.ini:' \
@@ -445,6 +463,15 @@ validate_generator_cli_contract() {
echo "switchkins remap generator accepted duplicate LinuxCNC M428 remap source" >&2
exit 1
fi
cp "$cli_manifest" "$cli_manifest_with_duplicate_tooldata"
grep -F \
'tooldata:configs/sim/axis/vismach/5axis/bridgemill/5axis.tbl:' \
"$cli_manifest" >>"$cli_manifest_with_duplicate_tooldata"
if LINUXCNC_ROOT="$linuxcnc_root" ./generate-linuxcnc-switchkins-remap-table.sh \
"$cli_manifest_with_duplicate_tooldata" >/dev/null 2>&1; then
echo "switchkins remap generator accepted duplicate LinuxCNC TOOL_TABLE source" >&2
exit 1
fi
grep -Fv \
'config:configs/sim/axis/vismach/5axis/bridgemill/5axis.ini:' \
"$cli_manifest" >"$cli_manifest_without_ini"
@@ -477,6 +504,14 @@ validate_generator_cli_contract() {
echo "switchkins remap generator accepted manifest missing LinuxCNC M430 remap source" >&2
exit 1
fi
grep -Fv \
'tooldata:configs/sim/axis/vismach/5axis/bridgemill/5axis.tbl:' \
"$cli_manifest" >"$cli_manifest_without_tooldata"
if LINUXCNC_ROOT="$linuxcnc_root" ./generate-linuxcnc-switchkins-remap-table.sh \
"$cli_manifest_without_tooldata" >/dev/null 2>&1; then
echo "switchkins remap generator accepted manifest missing LinuxCNC TOOL_TABLE source" >&2
exit 1
fi
cp "$cli_manifest" "$cli_manifest_with_unused_hal"
grep -F \
'config:configs/sim/axis/vismach/melfa-sim/melfa_dh.hal:' \
@@ -504,6 +539,15 @@ validate_generator_cli_contract() {
echo "switchkins remap generator accepted unused LinuxCNC M428 remap source" >&2
exit 1
fi
cp "$cli_manifest" "$cli_manifest_with_unused_tooldata"
grep -F \
'tooldata:configs/sim/axis/vismach/melfa-sim/melfa.tbl:' \
"$manifest_file" >>"$cli_manifest_with_unused_tooldata"
if LINUXCNC_ROOT="$linuxcnc_root" ./generate-linuxcnc-switchkins-remap-table.sh \
"$cli_manifest_with_unused_tooldata" >/dev/null 2>&1; then
echo "switchkins remap generator accepted unused LinuxCNC TOOL_TABLE source" >&2
exit 1
fi
LINUXCNC_ROOT="$linuxcnc_root" ./generate-linuxcnc-switchkins-remap-table.sh --all-output-dir "$cli_dir/out" "$cli_manifest"
LINUXCNC_ROOT="$linuxcnc_root" ./generate-linuxcnc-switchkins-remap-table.sh "$cli_manifest" \