验证 G92 禁用持久化
提示词:快速推进,非纯 source-map-only,保留源依据、自动测试、本地提交且不自动推送。 结论:基于 LinuxCNC rs274ngc_pre.cc 的 DISABLE_G92_PERSISTENCE 初始化清理和 interp_convert.cc convert_stop 的 M30 清理逻辑,新增 INI/G-code fixture 并接入 native/source-link 参数持久化断言;./test-native.sh 和 ./test-linuxcnc-source-link.sh 通过。
This commit is contained in:
@@ -42,6 +42,7 @@ flock 9
|
|||||||
var_file="$build_dir/rs274ngc.var"
|
var_file="$build_dir/rs274ngc.var"
|
||||||
base_var_file="$build_dir/rs274ngc-base.var"
|
base_var_file="$build_dir/rs274ngc-base.var"
|
||||||
ini_named_parameter_file="$(pwd)/tests/gcode/linuxcnc_ini_named_parameter.ini"
|
ini_named_parameter_file="$(pwd)/tests/gcode/linuxcnc_ini_named_parameter.ini"
|
||||||
|
disable_g92_persistence_ini_file="$(pwd)/tests/gcode/linuxcnc_disable_g92_persistence.ini"
|
||||||
output_dir="$build_dir/outputs"
|
output_dir="$build_dir/outputs"
|
||||||
mkdir -p "$output_dir"
|
mkdir -p "$output_dir"
|
||||||
cp "$linuxcnc_root/tests/halui/jogging/sim.var" "$base_var_file"
|
cp "$linuxcnc_root/tests/halui/jogging/sim.var" "$base_var_file"
|
||||||
@@ -922,6 +923,17 @@ cp "$base_var_file" "$var_file"
|
|||||||
# save_parameters() writes required and changed persistent ranges.
|
# save_parameters() writes required and changed persistent ranges.
|
||||||
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_persistent_parameters_set.ngc >"$output_dir/cnc_sim_linuxcnc_persistent_parameters_set.json"
|
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_persistent_parameters_set.ngc >"$output_dir/cnc_sim_linuxcnc_persistent_parameters_set.json"
|
||||||
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_persistent_parameters_check.ngc >"$output_dir/cnc_sim_linuxcnc_persistent_parameters_check.json"
|
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_persistent_parameters_check.ngc >"$output_dir/cnc_sim_linuxcnc_persistent_parameters_check.json"
|
||||||
|
disable_g92_startup_var_file="$build_dir/rs274ngc-disable-g92-startup.var"
|
||||||
|
printf '5210\t1.000000\n5211\t-4.000000\n5212\t-5.000000\n5213\t-6.000000\n5220\t1.000000\n' > "$disable_g92_startup_var_file"
|
||||||
|
# Source basis: LinuxCNC src/emc/rs274ngc/rs274ngc_pre.cc init reads
|
||||||
|
# [RS274NGC] DISABLE_G92_PERSISTENCE and clears restored #5210-#5219.
|
||||||
|
INI_FILE_NAME="$disable_g92_persistence_ini_file" CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$disable_g92_startup_var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_g92_disable_persistence_startup.ngc >"$output_dir/cnc_sim_linuxcnc_g92_disable_persistence_startup.json"
|
||||||
|
disable_g92_stop_var_file="$build_dir/rs274ngc-disable-g92-stop.var"
|
||||||
|
: > "$disable_g92_stop_var_file"
|
||||||
|
# Source basis: LinuxCNC src/emc/rs274ngc/interp_convert.cc convert_stop()
|
||||||
|
# clears #5210-#5219 on M2/M30 when DISABLE_G92_PERSISTENCE is enabled.
|
||||||
|
INI_FILE_NAME="$disable_g92_persistence_ini_file" CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$disable_g92_stop_var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_g92_disable_persistence_set.ngc >"$output_dir/cnc_sim_linuxcnc_g92_disable_persistence_set.json"
|
||||||
|
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$disable_g92_stop_var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_g92_disable_persistence_check.ngc >"$output_dir/cnc_sim_linuxcnc_g92_disable_persistence_check.json"
|
||||||
rotary_persistent_var_file="$build_dir/rs274ngc-rotary-persistent.var"
|
rotary_persistent_var_file="$build_dir/rs274ngc-rotary-persistent.var"
|
||||||
: > "$rotary_persistent_var_file"
|
: > "$rotary_persistent_var_file"
|
||||||
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$rotary_persistent_var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_rotary_persistent_parameters_set.ngc >"$output_dir/cnc_sim_linuxcnc_rotary_persistent_parameters_set.json"
|
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$rotary_persistent_var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_rotary_persistent_parameters_set.ngc >"$output_dir/cnc_sim_linuxcnc_rotary_persistent_parameters_set.json"
|
||||||
@@ -2737,6 +2749,23 @@ if not any(
|
|||||||
):
|
):
|
||||||
raise SystemExit("missing LinuxCNC persistent parameter reload branch motion")
|
raise SystemExit("missing LinuxCNC persistent parameter reload branch motion")
|
||||||
|
|
||||||
|
disable_g92_startup = load("cnc_sim_linuxcnc_g92_disable_persistence_startup.json")
|
||||||
|
if not any(
|
||||||
|
event["type"] == "linear-feed" and
|
||||||
|
event["line"] == 5 and
|
||||||
|
event["end"]["x"] == 2
|
||||||
|
for event in disable_g92_startup
|
||||||
|
):
|
||||||
|
raise SystemExit("missing LinuxCNC DISABLE_G92_PERSISTENCE startup clear branch motion")
|
||||||
|
disable_g92_check = load("cnc_sim_linuxcnc_g92_disable_persistence_check.json")
|
||||||
|
if not any(
|
||||||
|
event["type"] == "linear-feed" and
|
||||||
|
event["line"] == 5 and
|
||||||
|
event["end"]["x"] == 1
|
||||||
|
for event in disable_g92_check
|
||||||
|
):
|
||||||
|
raise SystemExit("missing LinuxCNC DISABLE_G92_PERSISTENCE program-end clear branch motion")
|
||||||
|
|
||||||
rotary_persistent_parameters_check = load("cnc_sim_linuxcnc_rotary_persistent_parameters_check.json")
|
rotary_persistent_parameters_check = load("cnc_sim_linuxcnc_rotary_persistent_parameters_check.json")
|
||||||
if not any(
|
if not any(
|
||||||
event["type"] == "linear-feed" and
|
event["type"] == "linear-feed" and
|
||||||
@@ -3004,6 +3033,9 @@ echo "dumped $output_dir/cnc_sim_linuxcnc_rotary_tool_offset_numbered_parameters
|
|||||||
echo "dumped $output_dir/cnc_sim_linuxcnc_current_position_numbered_parameters.json"
|
echo "dumped $output_dir/cnc_sim_linuxcnc_current_position_numbered_parameters.json"
|
||||||
echo "dumped $output_dir/cnc_sim_linuxcnc_persistent_parameters_set.json"
|
echo "dumped $output_dir/cnc_sim_linuxcnc_persistent_parameters_set.json"
|
||||||
echo "dumped $output_dir/cnc_sim_linuxcnc_persistent_parameters_check.json"
|
echo "dumped $output_dir/cnc_sim_linuxcnc_persistent_parameters_check.json"
|
||||||
|
echo "dumped $output_dir/cnc_sim_linuxcnc_g92_disable_persistence_startup.json"
|
||||||
|
echo "dumped $output_dir/cnc_sim_linuxcnc_g92_disable_persistence_set.json"
|
||||||
|
echo "dumped $output_dir/cnc_sim_linuxcnc_g92_disable_persistence_check.json"
|
||||||
echo "dumped $output_dir/cnc_sim_linuxcnc_rotary_persistent_parameters_set.json"
|
echo "dumped $output_dir/cnc_sim_linuxcnc_rotary_persistent_parameters_set.json"
|
||||||
echo "dumped $output_dir/cnc_sim_linuxcnc_rotary_persistent_parameters_check.json"
|
echo "dumped $output_dir/cnc_sim_linuxcnc_rotary_persistent_parameters_check.json"
|
||||||
echo "dumped $output_dir/cnc_sim_linuxcnc_g54_persistent_parameters_set.json"
|
echo "dumped $output_dir/cnc_sim_linuxcnc_g54_persistent_parameters_set.json"
|
||||||
|
|||||||
@@ -175,6 +175,7 @@ make --output-sync=target -j"$build_jobs" -f "$source_link_makefile"
|
|||||||
var_file="$build_dir/rs274ngc-source.var"
|
var_file="$build_dir/rs274ngc-source.var"
|
||||||
base_var_file="$build_dir/rs274ngc-source-base.var"
|
base_var_file="$build_dir/rs274ngc-source-base.var"
|
||||||
ini_named_parameter_file="$(pwd)/tests/gcode/linuxcnc_ini_named_parameter.ini"
|
ini_named_parameter_file="$(pwd)/tests/gcode/linuxcnc_ini_named_parameter.ini"
|
||||||
|
disable_g92_persistence_ini_file="$(pwd)/tests/gcode/linuxcnc_disable_g92_persistence.ini"
|
||||||
multi_spindle_modes_file="$(pwd)/tests/gcode/linuxcnc_multi_spindle_modes.ini"
|
multi_spindle_modes_file="$(pwd)/tests/gcode/linuxcnc_multi_spindle_modes.ini"
|
||||||
multi_spindle_override_file="$(pwd)/tests/gcode/linuxcnc_multi_spindle_override.ini"
|
multi_spindle_override_file="$(pwd)/tests/gcode/linuxcnc_multi_spindle_override.ini"
|
||||||
multi_spindle_threading_file="$(pwd)/tests/gcode/linuxcnc_multi_spindle_threading.ini"
|
multi_spindle_threading_file="$(pwd)/tests/gcode/linuxcnc_multi_spindle_threading.ini"
|
||||||
@@ -1632,6 +1633,23 @@ CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" \
|
|||||||
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" \
|
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" \
|
||||||
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_persistent_parameters_check.ngc \
|
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_persistent_parameters_check.ngc \
|
||||||
>"$output_dir/cnc_sim_linuxcnc_source_persistent_parameters_check.json"
|
>"$output_dir/cnc_sim_linuxcnc_source_persistent_parameters_check.json"
|
||||||
|
disable_g92_startup_var_file="$build_dir/rs274ngc-source-disable-g92-startup.var"
|
||||||
|
printf '5210\t1.000000\n5211\t-4.000000\n5212\t-5.000000\n5213\t-6.000000\n5220\t1.000000\n' > "$disable_g92_startup_var_file"
|
||||||
|
# Source basis: LinuxCNC src/emc/rs274ngc/rs274ngc_pre.cc init reads
|
||||||
|
# [RS274NGC] DISABLE_G92_PERSISTENCE and clears restored #5210-#5219.
|
||||||
|
INI_FILE_NAME="$disable_g92_persistence_ini_file" CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$disable_g92_startup_var_file" \
|
||||||
|
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_g92_disable_persistence_startup.ngc \
|
||||||
|
>"$output_dir/cnc_sim_linuxcnc_source_g92_disable_persistence_startup.json"
|
||||||
|
disable_g92_stop_var_file="$build_dir/rs274ngc-source-disable-g92-stop.var"
|
||||||
|
: > "$disable_g92_stop_var_file"
|
||||||
|
# Source basis: LinuxCNC src/emc/rs274ngc/interp_convert.cc convert_stop()
|
||||||
|
# clears #5210-#5219 on M2/M30 when DISABLE_G92_PERSISTENCE is enabled.
|
||||||
|
INI_FILE_NAME="$disable_g92_persistence_ini_file" CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$disable_g92_stop_var_file" \
|
||||||
|
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_g92_disable_persistence_set.ngc \
|
||||||
|
>"$output_dir/cnc_sim_linuxcnc_source_g92_disable_persistence_set.json"
|
||||||
|
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$disable_g92_stop_var_file" \
|
||||||
|
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_g92_disable_persistence_check.ngc \
|
||||||
|
>"$output_dir/cnc_sim_linuxcnc_source_g92_disable_persistence_check.json"
|
||||||
rotary_persistent_var_file="$build_dir/rs274ngc-rotary-persistent.var"
|
rotary_persistent_var_file="$build_dir/rs274ngc-rotary-persistent.var"
|
||||||
: > "$rotary_persistent_var_file"
|
: > "$rotary_persistent_var_file"
|
||||||
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$rotary_persistent_var_file" \
|
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$rotary_persistent_var_file" \
|
||||||
@@ -3751,6 +3769,23 @@ if not any(
|
|||||||
):
|
):
|
||||||
raise SystemExit("missing source-linked persistent parameter reload branch motion")
|
raise SystemExit("missing source-linked persistent parameter reload branch motion")
|
||||||
|
|
||||||
|
disable_g92_startup = json.loads((OUTPUT_DIR / "cnc_sim_linuxcnc_source_g92_disable_persistence_startup.json").read_text())
|
||||||
|
if not any(
|
||||||
|
event["type"] == "linear-feed" and
|
||||||
|
event["line"] == 5 and
|
||||||
|
event["end"]["x"] == 2
|
||||||
|
for event in disable_g92_startup
|
||||||
|
):
|
||||||
|
raise SystemExit("missing source-linked DISABLE_G92_PERSISTENCE startup clear branch motion")
|
||||||
|
disable_g92_check = json.loads((OUTPUT_DIR / "cnc_sim_linuxcnc_source_g92_disable_persistence_check.json").read_text())
|
||||||
|
if not any(
|
||||||
|
event["type"] == "linear-feed" and
|
||||||
|
event["line"] == 5 and
|
||||||
|
event["end"]["x"] == 1
|
||||||
|
for event in disable_g92_check
|
||||||
|
):
|
||||||
|
raise SystemExit("missing source-linked DISABLE_G92_PERSISTENCE program-end clear branch motion")
|
||||||
|
|
||||||
rotary_persistent_parameters_check = json.loads((OUTPUT_DIR / "cnc_sim_linuxcnc_source_rotary_persistent_parameters_check.json").read_text())
|
rotary_persistent_parameters_check = json.loads((OUTPUT_DIR / "cnc_sim_linuxcnc_source_rotary_persistent_parameters_check.json").read_text())
|
||||||
if not any(
|
if not any(
|
||||||
event["type"] == "linear-feed" and
|
event["type"] == "linear-feed" and
|
||||||
@@ -4024,6 +4059,9 @@ echo "dumped $output_dir/cnc_sim_linuxcnc_source_rotary_tool_offset_numbered_par
|
|||||||
echo "dumped $output_dir/cnc_sim_linuxcnc_source_current_position_numbered_parameters.json"
|
echo "dumped $output_dir/cnc_sim_linuxcnc_source_current_position_numbered_parameters.json"
|
||||||
echo "dumped $output_dir/cnc_sim_linuxcnc_source_persistent_parameters_set.json"
|
echo "dumped $output_dir/cnc_sim_linuxcnc_source_persistent_parameters_set.json"
|
||||||
echo "dumped $output_dir/cnc_sim_linuxcnc_source_persistent_parameters_check.json"
|
echo "dumped $output_dir/cnc_sim_linuxcnc_source_persistent_parameters_check.json"
|
||||||
|
echo "dumped $output_dir/cnc_sim_linuxcnc_source_g92_disable_persistence_startup.json"
|
||||||
|
echo "dumped $output_dir/cnc_sim_linuxcnc_source_g92_disable_persistence_set.json"
|
||||||
|
echo "dumped $output_dir/cnc_sim_linuxcnc_source_g92_disable_persistence_check.json"
|
||||||
echo "dumped $output_dir/cnc_sim_linuxcnc_source_rotary_persistent_parameters_set.json"
|
echo "dumped $output_dir/cnc_sim_linuxcnc_source_rotary_persistent_parameters_set.json"
|
||||||
echo "dumped $output_dir/cnc_sim_linuxcnc_source_rotary_persistent_parameters_check.json"
|
echo "dumped $output_dir/cnc_sim_linuxcnc_source_rotary_persistent_parameters_check.json"
|
||||||
echo "dumped $output_dir/cnc_sim_linuxcnc_source_g54_persistent_parameters_set.json"
|
echo "dumped $output_dir/cnc_sim_linuxcnc_source_g54_persistent_parameters_set.json"
|
||||||
|
|||||||
2
tests/gcode/linuxcnc_disable_g92_persistence.ini
Normal file
2
tests/gcode/linuxcnc_disable_g92_persistence.ini
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
[RS274NGC]
|
||||||
|
DISABLE_G92_PERSISTENCE = 1
|
||||||
7
tests/gcode/linuxcnc_g92_disable_persistence_check.ngc
Normal file
7
tests/gcode/linuxcnc_g92_disable_persistence_check.ngc
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
G21 G90 G17
|
||||||
|
F100
|
||||||
|
(Source basis: LinuxCNC src/emc/rs274ngc/interp_convert.cc convert_stop clears persisted G92/G52 parameters on program end.)
|
||||||
|
O10 if [[#5210 EQ 0] AND [#5211 EQ 0] AND [#5212 EQ 0] AND [#5213 EQ 0]]
|
||||||
|
G1 X1
|
||||||
|
O10 endif
|
||||||
|
M30
|
||||||
4
tests/gcode/linuxcnc_g92_disable_persistence_set.ngc
Normal file
4
tests/gcode/linuxcnc_g92_disable_persistence_set.ngc
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
G21 G90 G17
|
||||||
|
(Source basis: LinuxCNC src/emc/rs274ngc/interp_convert.cc convert_stop clears #5210-#5219 when DISABLE_G92_PERSISTENCE is enabled.)
|
||||||
|
G92 X4 Y5 Z6
|
||||||
|
M30
|
||||||
7
tests/gcode/linuxcnc_g92_disable_persistence_startup.ngc
Normal file
7
tests/gcode/linuxcnc_g92_disable_persistence_startup.ngc
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
G21 G90 G17
|
||||||
|
F100
|
||||||
|
(Source basis: LinuxCNC src/emc/rs274ngc/rs274ngc_pre.cc init clears restored #5210-#5219 when DISABLE_G92_PERSISTENCE is enabled.)
|
||||||
|
O10 if [[#5210 EQ 0] AND [#5211 EQ 0] AND [#5212 EQ 0] AND [#5213 EQ 0]]
|
||||||
|
G1 X2
|
||||||
|
O10 endif
|
||||||
|
M30
|
||||||
Reference in New Issue
Block a user