参考所有分组:锁定loadusr资产清单校验,测试通过
This commit is contained in:
@@ -363,6 +363,9 @@ validate_generator_cli_contract() {
|
|||||||
local cli_manifest_with_unused_postgui
|
local cli_manifest_with_unused_postgui
|
||||||
local cli_manifest_with_unused_remap
|
local cli_manifest_with_unused_remap
|
||||||
local cli_manifest_with_unused_tooldata
|
local cli_manifest_with_unused_tooldata
|
||||||
|
local cli_manifest_without_halfile_loadusr_asset
|
||||||
|
local cli_melfa_manifest
|
||||||
|
local cli_melfa_without_halcmd_loadusr_asset
|
||||||
local cli_trsrn_manifest
|
local cli_trsrn_manifest
|
||||||
local cli_trsrn_without_g531_asset
|
local cli_trsrn_without_g531_asset
|
||||||
local cli_trsrn_without_g69_asset
|
local cli_trsrn_without_g69_asset
|
||||||
@@ -388,6 +391,9 @@ validate_generator_cli_contract() {
|
|||||||
cli_manifest_with_unused_postgui="$cli_dir/bridgemill-manifest-with-unused-postgui.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_remap="$cli_dir/bridgemill-manifest-with-unused-remap.txt"
|
||||||
cli_manifest_with_unused_tooldata="$cli_dir/bridgemill-manifest-with-unused-tooldata.txt"
|
cli_manifest_with_unused_tooldata="$cli_dir/bridgemill-manifest-with-unused-tooldata.txt"
|
||||||
|
cli_manifest_without_halfile_loadusr_asset="$cli_dir/bridgemill-manifest-without-halfile-loadusr-asset.txt"
|
||||||
|
cli_melfa_manifest="$cli_dir/melfa-manifest.txt"
|
||||||
|
cli_melfa_without_halcmd_loadusr_asset="$cli_dir/melfa-manifest-without-halcmd-loadusr-asset.txt"
|
||||||
cli_trsrn_manifest="$cli_dir/trsrn-manifest.txt"
|
cli_trsrn_manifest="$cli_dir/trsrn-manifest.txt"
|
||||||
cli_trsrn_without_g531_asset="$cli_dir/trsrn-manifest-without-g531-asset.txt"
|
cli_trsrn_without_g531_asset="$cli_dir/trsrn-manifest-without-g531-asset.txt"
|
||||||
cli_trsrn_without_g69_asset="$cli_dir/trsrn-manifest-without-g69-asset.txt"
|
cli_trsrn_without_g69_asset="$cli_dir/trsrn-manifest-without-g69-asset.txt"
|
||||||
@@ -415,6 +421,7 @@ validate_generator_cli_contract() {
|
|||||||
require("remap:configs/sim/axis/vismach/5axis/bridgemill/remap_subs/429remap.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("remap:configs/sim/axis/vismach/5axis/bridgemill/remap_subs/430remap.ngc")
|
||||||
require("tooldata:configs/sim/axis/vismach/5axis/bridgemill/5axis.tbl")
|
require("tooldata:configs/sim/axis/vismach/5axis/bridgemill/5axis.tbl")
|
||||||
|
require("asset:src/hal/user_comps/vismach/5axisgui.py")
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
key = $1 ":" $2
|
key = $1 ":" $2
|
||||||
@@ -528,6 +535,64 @@ validate_generator_cli_contract() {
|
|||||||
echo "switchkins remap generator accepted manifest missing LinuxCNC TOOL_TABLE source" >&2
|
echo "switchkins remap generator accepted manifest missing LinuxCNC TOOL_TABLE source" >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
grep -Fv \
|
||||||
|
'asset:src/hal/user_comps/vismach/5axisgui.py:' \
|
||||||
|
"$cli_manifest" >"$cli_manifest_without_halfile_loadusr_asset"
|
||||||
|
if LINUXCNC_ROOT="$linuxcnc_root" ./generate-linuxcnc-switchkins-remap-table.sh \
|
||||||
|
"$cli_manifest_without_halfile_loadusr_asset" >/dev/null 2>&1; then
|
||||||
|
echo "switchkins remap generator accepted manifest missing LinuxCNC HALFILE loadusr asset source" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! awk -F: -v manifest="$manifest_file" '
|
||||||
|
function require(key) {
|
||||||
|
expected[++expected_count] = key
|
||||||
|
expected_keys[key] = 1
|
||||||
|
}
|
||||||
|
BEGIN {
|
||||||
|
require("config:configs/sim/axis/vismach/melfa-sim/melfa.ini")
|
||||||
|
require("config:configs/sim/axis/vismach/melfa-sim/melfa_dh.hal")
|
||||||
|
require("config:configs/sim/axis/vismach/melfa-sim/melfa-postgui.hal")
|
||||||
|
require("remap:configs/sim/axis/vismach/melfa-sim/remap_subs/428remap.ngc")
|
||||||
|
require("remap:configs/sim/axis/vismach/melfa-sim/remap_subs/429remap.ngc")
|
||||||
|
require("remap:configs/sim/axis/vismach/melfa-sim/remap_subs/430remap.ngc")
|
||||||
|
require("tooldata:configs/sim/axis/vismach/melfa-sim/melfa.tbl")
|
||||||
|
require("asset:src/hal/user_comps/vismach/melfagui.py")
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = $1 ":" $2
|
||||||
|
if (key in expected_keys) {
|
||||||
|
if (key in manifest_line) {
|
||||||
|
print "duplicate melfa switchkins source in " manifest ": " key > "/dev/stderr"
|
||||||
|
duplicate = 1
|
||||||
|
}
|
||||||
|
manifest_line[key] = $0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
END {
|
||||||
|
missing = 0
|
||||||
|
for (expected_index = 1; expected_index <= expected_count; expected_index++) {
|
||||||
|
key = expected[expected_index]
|
||||||
|
if (!(key in manifest_line)) {
|
||||||
|
print "melfa switchkins source is not listed in " manifest ": " key > "/dev/stderr"
|
||||||
|
missing = 1
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
print manifest_line[key]
|
||||||
|
}
|
||||||
|
exit missing || duplicate
|
||||||
|
}
|
||||||
|
' "$manifest_file" >"$cli_melfa_manifest"; then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
grep -Fv \
|
||||||
|
'asset:src/hal/user_comps/vismach/melfagui.py:' \
|
||||||
|
"$cli_melfa_manifest" >"$cli_melfa_without_halcmd_loadusr_asset"
|
||||||
|
if LINUXCNC_ROOT="$linuxcnc_root" ./generate-linuxcnc-switchkins-remap-table.sh \
|
||||||
|
"$cli_melfa_without_halcmd_loadusr_asset" >/dev/null 2>&1; then
|
||||||
|
echo "switchkins remap generator accepted manifest missing LinuxCNC HALCMD loadusr command asset source" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
cp "$cli_manifest" "$cli_manifest_with_unused_hal"
|
cp "$cli_manifest" "$cli_manifest_with_unused_hal"
|
||||||
grep -F \
|
grep -F \
|
||||||
'config:configs/sim/axis/vismach/melfa-sim/melfa_dh.hal:' \
|
'config:configs/sim/axis/vismach/melfa-sim/melfa_dh.hal:' \
|
||||||
|
|||||||
@@ -102,11 +102,16 @@ read_ini_switchkins_config() {
|
|||||||
print "postgui_halfile\t" value
|
print "postgui_halfile\t" value
|
||||||
} else if (section == "hal" && key == "halcmd") {
|
} else if (section == "hal" && key == "halcmd") {
|
||||||
lower = tolower(value)
|
lower = tolower(value)
|
||||||
if (lower ~ /(^|[[:space:]])loadusr([[:space:]]|$)/ &&
|
if (lower ~ /(^|[[:space:]])loadusr([[:space:]]|$)/) {
|
||||||
match(lower, /[^[:space:]]+\.py([[:space:]]|$)/)) {
|
command = value
|
||||||
py = substr(value, RSTART, RLENGTH)
|
sub(/^.*(^|[[:space:]])loadusr[[:space:]]+/, "", command)
|
||||||
sub(/[[:space:]]*$/, "", py)
|
while (command ~ /^-[^[:space:]]+[[:space:]]+/) {
|
||||||
print "halcmd_loadusr_py\t" py
|
sub(/^-[^[:space:]]+[[:space:]]+/, "", command)
|
||||||
|
}
|
||||||
|
sub(/[[:space:]].*$/, "", command)
|
||||||
|
if (command != "") {
|
||||||
|
print "halcmd_loadusr\t" command
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else if (section == "emcio" && key == "tool_table") {
|
} else if (section == "emcio" && key == "tool_table") {
|
||||||
print "tool_table\t" value
|
print "tool_table\t" value
|
||||||
@@ -149,6 +154,34 @@ read_ini_switchkins_config() {
|
|||||||
' "$file"
|
' "$file"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
read_loadusr_commands() {
|
||||||
|
local file=$1
|
||||||
|
awk '
|
||||||
|
function trim(value) {
|
||||||
|
sub(/^[[:space:]]*/, "", value)
|
||||||
|
sub(/[[:space:]]*$/, "", value)
|
||||||
|
return value
|
||||||
|
}
|
||||||
|
{
|
||||||
|
line = $0
|
||||||
|
sub(/[[:space:]]*#.*/, "", line)
|
||||||
|
line = trim(line)
|
||||||
|
lower = tolower(line)
|
||||||
|
if (lower !~ /(^|[[:space:]])loadusr([[:space:]]|$)/) {
|
||||||
|
next
|
||||||
|
}
|
||||||
|
sub(/^.*(^|[[:space:]])loadusr[[:space:]]+/, "", line)
|
||||||
|
while (line ~ /^-[^[:space:]]+[[:space:]]+/) {
|
||||||
|
sub(/^-[^[:space:]]+[[:space:]]+/, "", line)
|
||||||
|
}
|
||||||
|
sub(/[[:space:]].*$/, "", line)
|
||||||
|
if (line != "") {
|
||||||
|
print line
|
||||||
|
}
|
||||||
|
}
|
||||||
|
' "$file"
|
||||||
|
}
|
||||||
|
|
||||||
resolved_config_path=
|
resolved_config_path=
|
||||||
resolve_config_path() {
|
resolve_config_path() {
|
||||||
local config_dir=$1
|
local config_dir=$1
|
||||||
@@ -382,6 +415,49 @@ asset_source_for_path() {
|
|||||||
resolved_asset_source=$resolved_linuxcnc_path
|
resolved_asset_source=$resolved_linuxcnc_path
|
||||||
}
|
}
|
||||||
|
|
||||||
|
resolved_loadusr_asset_source=
|
||||||
|
loadusr_asset_source_for_command() {
|
||||||
|
local config=$1
|
||||||
|
local command=$2
|
||||||
|
resolved_loadusr_asset_source=
|
||||||
|
[[ -n "$command" ]] || return 1
|
||||||
|
|
||||||
|
if [[ "$command" == */* || "$command" == *.py ]]; then
|
||||||
|
if asset_source_for_path "$config" "$command"; then
|
||||||
|
resolved_loadusr_asset_source=$resolved_asset_source
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
if [[ "$command" != *.py ]] && asset_source_for_path "$config" "$command.py"; then
|
||||||
|
resolved_loadusr_asset_source=$resolved_asset_source
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
local source="src/hal/user_comps/vismach/$command.py"
|
||||||
|
if [[ -f "$linuxcnc_root/$source" ]]; then
|
||||||
|
resolved_loadusr_asset_source=$source
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
if asset_source_for_path "$config" "$command.py"; then
|
||||||
|
resolved_loadusr_asset_source=$resolved_asset_source
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
record_loadusr_asset() {
|
||||||
|
local config_path=$1
|
||||||
|
local config=$2
|
||||||
|
local command=$3
|
||||||
|
local label=$4
|
||||||
|
if loadusr_asset_source_for_command "$config" "$command"; then
|
||||||
|
loadusr_asset_source=$resolved_loadusr_asset_source
|
||||||
|
record_asset_source "$config_path" "$loadusr_asset_source" "$label"
|
||||||
|
record_python_import_assets "$config_path" "$loadusr_asset_source"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
resolved_python_module_source=
|
resolved_python_module_source=
|
||||||
python_module_source_for_name() {
|
python_module_source_for_name() {
|
||||||
local config=$1
|
local config=$1
|
||||||
@@ -813,7 +889,7 @@ while IFS=: read -r group path _note; do
|
|||||||
python_paths=
|
python_paths=
|
||||||
python_toplevels=
|
python_toplevels=
|
||||||
python_remaps=
|
python_remaps=
|
||||||
halcmd_loadusr_pys=
|
halcmd_loadusrs=
|
||||||
remap_ngc_428=
|
remap_ngc_428=
|
||||||
remap_ngc_429=
|
remap_ngc_429=
|
||||||
remap_ngc_430=
|
remap_ngc_430=
|
||||||
@@ -852,8 +928,8 @@ while IFS=: read -r group path _note; do
|
|||||||
python_remap)
|
python_remap)
|
||||||
python_remaps+="${python_remaps:+$'\n'}$ini_value"
|
python_remaps+="${python_remaps:+$'\n'}$ini_value"
|
||||||
;;
|
;;
|
||||||
halcmd_loadusr_py)
|
halcmd_loadusr)
|
||||||
halcmd_loadusr_pys+="${halcmd_loadusr_pys:+$'\n'}$ini_value"
|
halcmd_loadusrs+="${halcmd_loadusrs:+$'\n'}$ini_value"
|
||||||
;;
|
;;
|
||||||
remap_428)
|
remap_428)
|
||||||
[[ -n "$remap_ngc_428" ]] || remap_ngc_428=$ini_value
|
[[ -n "$remap_ngc_428" ]] || remap_ngc_428=$ini_value
|
||||||
@@ -948,6 +1024,10 @@ while IFS=: read -r group path _note; do
|
|||||||
record_config_source "$path" "$hal_source" "HALFILE"
|
record_config_source "$path" "$hal_source" "HALFILE"
|
||||||
add_alias "$hal_source" "$m428" "$m429" "$m430"
|
add_alias "$hal_source" "$m428" "$m429" "$m430"
|
||||||
add_halfile_source_cases "$hal_source" "$m428" "$m429" "$m430"
|
add_halfile_source_cases "$hal_source" "$m428" "$m429" "$m430"
|
||||||
|
while IFS= read -r loadusr_command; do
|
||||||
|
[[ -n "$loadusr_command" ]] || continue
|
||||||
|
record_loadusr_asset "$path" "$linuxcnc_root/$hal_source" "$loadusr_command" "HALFILE loadusr"
|
||||||
|
done < <(read_loadusr_commands "$linuxcnc_root/$hal_source")
|
||||||
fi
|
fi
|
||||||
add_halfile_cases "$halfile" "$m428" "$m429" "$m430"
|
add_halfile_cases "$halfile" "$m428" "$m429" "$m430"
|
||||||
add_halfile_aliases "$halfile" "$m428" "$m429" "$m430"
|
add_halfile_aliases "$halfile" "$m428" "$m429" "$m430"
|
||||||
@@ -958,6 +1038,10 @@ while IFS=: read -r group path _note; do
|
|||||||
record_config_source "$path" "$hal_source" "POSTGUI_HALFILE"
|
record_config_source "$path" "$hal_source" "POSTGUI_HALFILE"
|
||||||
add_alias "$hal_source" "$m428" "$m429" "$m430"
|
add_alias "$hal_source" "$m428" "$m429" "$m430"
|
||||||
add_postgui_halfile_source_cases "$hal_source" "$m428" "$m429" "$m430"
|
add_postgui_halfile_source_cases "$hal_source" "$m428" "$m429" "$m430"
|
||||||
|
while IFS= read -r loadusr_command; do
|
||||||
|
[[ -n "$loadusr_command" ]] || continue
|
||||||
|
record_loadusr_asset "$path" "$linuxcnc_root/$hal_source" "$loadusr_command" "POSTGUI_HALFILE loadusr"
|
||||||
|
done < <(read_loadusr_commands "$linuxcnc_root/$hal_source")
|
||||||
fi
|
fi
|
||||||
add_postgui_halfile_cases "$halfile" "$m428" "$m429" "$m430"
|
add_postgui_halfile_cases "$halfile" "$m428" "$m429" "$m430"
|
||||||
add_halfile_aliases "$halfile" "$m428" "$m429" "$m430"
|
add_halfile_aliases "$halfile" "$m428" "$m429" "$m430"
|
||||||
@@ -997,14 +1081,10 @@ while IFS=: read -r group path _note; do
|
|||||||
record_python_import_assets "$path" "$python_remap_source"
|
record_python_import_assets "$path" "$python_remap_source"
|
||||||
fi
|
fi
|
||||||
done <<<"$python_remaps"
|
done <<<"$python_remaps"
|
||||||
while IFS= read -r loadusr_py; do
|
while IFS= read -r loadusr_command; do
|
||||||
[[ -n "$loadusr_py" ]] || continue
|
[[ -n "$loadusr_command" ]] || continue
|
||||||
if asset_source_for_path "$config" "$loadusr_py"; then
|
record_loadusr_asset "$path" "$config" "$loadusr_command" "HALCMD loadusr"
|
||||||
halcmd_loadusr_source=$resolved_asset_source
|
done <<<"$halcmd_loadusrs"
|
||||||
record_asset_source "$path" "$halcmd_loadusr_source" "HALCMD loadusr"
|
|
||||||
record_python_import_assets "$path" "$halcmd_loadusr_source"
|
|
||||||
fi
|
|
||||||
done <<<"$halcmd_loadusr_pys"
|
|
||||||
|
|
||||||
for remap_source in "$remap_source_428" "$remap_source_429" "$remap_source_430"; do
|
for remap_source in "$remap_source_428" "$remap_source_429" "$remap_source_430"; do
|
||||||
if [[ -n "$remap_source" ]]; then
|
if [[ -n "$remap_source" ]]; then
|
||||||
|
|||||||
Reference in New Issue
Block a user