Skip to content

Merge branch '2.9' - #4759

Open
grandixximo wants to merge 14 commits into
LinuxCNC:masterfrom
grandixximo:merge-2.9-nov
Open

grandixximo wants to merge 14 commits into
LinuxCNC:masterfrom
grandixximo:merge-2.9-nov

Conversation

@grandixximo

@grandixximo grandixximo commented Nov 1, 2026 •

Copy link
Copy Markdown
Contributor

Merge 2.9 into master. Brings the commits pending since the last merge-up:

One conflict, emctaskmain.cc: enum spelling only, resolved with master's scoped names (EMC_TASK_EXEC::DONE, RCS_STATUS::DONE).

Verified the #2492 repro on the merged tree: a canon missing get_external_length_units raises AttributeError: get_external_length_units, and a raising callback surfaces its own ValueError with the original message.

Second merge adds the 2.9 follow-up #4760 (gremlin, qt5_graphics: catch KeyboardInterrupt on a stopped parse). On top, tests/gcode-renderer: parse_failing catches KeyboardInterrupt too, since a stopped parse now raises it instead of RuntimeError. gcode-renderer and glcanon/interp suites pass locally.

grandixximo and others added 14 commits April 28, 2026 07:37
Auto mode cleared the read-ahead wait on execState==DONE alone, so a
G38 issued just before an emcMotionUpdate snapshot could let the next
read fire while motion.traj.queue was still non-zero, tripping
NCE_QUEUE_IS_NOT_EMPTY_AFTER_PROBING. Add the queue==0 + io.status
==DONE conjuncts already used by mdi_execute_hook.

Closes LinuxCNC#3650, LinuxCNC#662, LinuxCNC#263.
When a Python callback invoked during parse_file raises (for example a canon object missing get_external_length_units), the error exit replaced the pending exception with RuntimeError("parse_file interp_error"), so AXIS and friends could only report that generic message instead of the actual error. The exception is already on the indicator; keep it.

Fixes LinuxCNC#2492.
The conditional tested whether the string "pkg-config libtirpc" is empty, which it never is, so the fallback block ran unconditionally. Use $PKG_CONFIG --exists as intended, and route the block's other pkg-config calls through $PKG_CONFIG too so a cross pkg-config is honored. Behavior is unchanged in practice: without libtirpc.pc the block is now skipped and configure fails later with the same explicit error. Refs LinuxCNC#652.
…empty-probe-2.9

[2.9] task: tighten AUTO read-ahead wait-clear to match MDI
…2-2.9

gcodemodule: report the actual exception from failed canon callbacks
configure: fix libtirpc pkg-config detection
if step was bigger then minimum speed, the math would set the speed
higher not stay at minimum.

Still an issue if minimuim is set to 0, next press will start the spindle
 at default speed.

issue report (LinuxCNC#4688) and code from Martin-HC on github
A Tk scale's set widget command defers the scale's -command until the widget is drawn. axis initialized the max velocity slider and the feed, rapid and spindle override sliders with set, while the window is still withdrawn, and only maps it after the POSTGUI_HALFILE has run. The deferred commands then re-sent the INI max velocity and 100% overrides after postgui, overriding anything halui had been told there, e.g. halui.max-velocity.counts or halui.feed-override.counts set or connected in the postgui file. Later changes of those pins worked because halui only sends on a change.

Set the slider variables instead, which never invoke -command, and send the max velocity explicitly next to the override commands that are already sent at startup. What axis sends at startup is unchanged, it is only sent before the postgui file instead of after it.

Fixes LinuxCNC#4690
axis: send the startup slider values before the POSTGUI_HALFILE runs
Since LinuxCNC#4636 the gcodemodule lets the callback's own exception propagate instead of masking it as RuntimeError. An (AXIS,stop) program raises KeyboardInterrupt, which escaped these Exception-only handlers on file load. AXIS already catches it. Refs LinuxCNC#2492.
gremlin, qt5_graphics: a stopped parse now raises KeyboardInterrupt
# Conflicts:
#	src/emc/usr_intf/gremlin/gremlin.py
The 2.9 gcodemodule fix in this merge lets the callback's own exception propagate instead of masking it as RuntimeError. parse_failing caught only Exception, which let KeyboardInterrupt escape the stopped-parse tests.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

gcodemodule error reporting broken

2 participants