Debian Package Tracker
Register | Log in
Subscribe

linuxcnc

Choose email to subscribe with

general
  • source: linuxcnc (main)
  • version: 1:2.9.9-2
  • maintainer: LinuxCNC Developers (DMD)
  • uploaders: Petter Reinholdtsen [DMD] – Sebastian Kuzminsky [DMD] – Jeff Epler [DMD] – Andy Pugh [DMD]
  • arch: all any
  • std-ver: 4.7.4
  • VCS: Git (Browse, QA)
versions [more versions can be listed by madison] [old versions available from snapshot.debian.org]
[pool directory]
  • oldstable: 2.9.0~pre1+git20230208.f1270d6ed7-1+deb12u2
  • old-p-u: 2.9.0~pre1+git20230208.f1270d6ed7-1+deb12u2
  • stable: 1:2.9.4-2+deb13u1
  • unstable: 1:2.9.9-2
versioned links
  • 2.9.0~pre1+git20230208.f1270d6ed7-1+deb12u2: [.dsc, use dget on this link to retrieve source package] [changelog] [copyright] [rules] [control]
  • 1:2.9.4-2+deb13u1: [.dsc, use dget on this link to retrieve source package] [changelog] [copyright] [rules] [control]
  • 1:2.9.9-2: [.dsc, use dget on this link to retrieve source package] [changelog] [copyright] [rules] [control]
binaries
  • linuxcnc-doc-de
  • linuxcnc-doc-en
  • linuxcnc-doc-es
  • linuxcnc-doc-fr
  • linuxcnc-doc-zh-cn
  • linuxcnc-uspace (3 bugs: 1, 1, 1, 0)
  • linuxcnc-uspace-dev
action needed
Debci reports failed tests high
  • unstable: fail (log)
    The tests ran in 0:04:28
    Last run: 2026-08-13T03:20:58.000Z
    Previous status: unknown

  • testing: fail (log)
    The tests ran in 0:00:18
    Last run: 2026-01-31T13:46:36.000Z
    Previous status: unknown

  • stable: pass (log)
    The tests ran in 0:01:33
    Last run: 2026-07-15T20:01:47.000Z
    Previous status: unknown

Created: 2026-01-31 Last update: 2026-08-23 15:30
A new upstream version is available: 2.9.10 high
A new upstream version 2.9.10 is available, you should consider packaging it.
Created: 2026-07-03 Last update: 2026-08-23 14:00
lintian reports 1 error and 55 warnings high
Lintian reports 1 error and 55 warnings about this package. You should make the package lintian clean getting rid of them.
Created: 2026-06-30 Last update: 2026-06-30 09:17
The package has not entered testing even though the delay is over normal
The package has not entered testing even though the 5-day delay is over. Check why.
Created: 2026-07-04 Last update: 2026-08-23 15:01
1 bug tagged patch in the BTS normal
The BTS contains patches fixing 1 bug, consider including or untagging them.
Created: 2026-08-15 Last update: 2026-08-23 15:00
Depends on packages which need a new maintainer normal
The packages that linuxcnc depends on which need a new maintainer are:
  • dblatex (#942402)
    • Build-Depends-Indep: dblatex
  • docbook-xsl (#802370)
    • Build-Depends: docbook-xsl
Created: 2022-02-27 Last update: 2026-08-23 13:32
version in VCS is newer than in repository, is it time to upload? normal
vcswatch reports that this package seems to have a new changelog entry (version 1:2.10.0~pre1, distribution UNRELEASED) and new commits in its VCS. You should consider whether it's time to make an upload.

Here are the relevant commit messages:
commit ab930078a55e06a8c591fe25ade20f729be22d34
Merge: aff321fd 279862a2
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date:   Sun Aug 23 07:17:49 2026 +0800

    Merge pull request #4450 from BsAtHome/halgs_rm-pyhal-module
    
    hal: Remove pyhal module that is incompatible with getter/setter

commit aff321fd831efc5c40800b2ae147206d6c820b57
Merge: 009dc496 329f0bd5
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date:   Sun Aug 23 07:17:34 2026 +0800

    Merge pull request #4449 from BsAtHome/halgs_rm-old-hal-hh
    
    hal: Remove old unused hal.hh

commit 009dc496c0b4bb712cb517ae64b6b72c1f160bec
Merge: e5c8c75f dc05c2e7
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date:   Sun Aug 23 07:01:05 2026 +0800

    Merge pull request #4451 from Sigma1912/patch-1
    
    SimConfigs: Increase VERSION in 3axistutorial

commit e5c8c75fadc2a37902a9b23d4d4e1efbe619f497
Merge: 5c41560e 858a83bb
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date:   Sun Aug 23 06:43:52 2026 +0800

    Merge pull request #4369 from BsAtHome/halgs_hostmot2
    
    hal: Update the hostmot2 drivers to getter/setter

commit dc05c2e7db8c50e1bcc4be744fa0d2b1c8f097c5
Author: Sigma1912 <46067220+Sigma1912@users.noreply.github.com>
Date:   Sat Aug 22 16:32:37 2026 +0200

    SimConfigs: Increase VERSION in 3axistutorial
    
    Increase [EMC]VERSION  to 1.1 so the 'automatic update' popup does not show.

commit 279862a2bda312945e8b6f04cd2d233b21268c14
Author: Bertho Stultiens <bertho@vagrearg.org>
Date:   Sat Aug 22 13:41:42 2026 +0200

    hal: Remove pyhal module that is incompatible with getter/setter.

commit 5c41560ebbc3a40f84a5547bc6f7c5cd9278ba6b
Merge: fb5f59b1 2751ae85
Author: BsAtHome <bertho@vagrearg.org>
Date:   Sat Aug 22 13:21:27 2026 +0200

    Merge pull request #4448 from grandixximo/include-brackets
    
    src: include exported headers with angle brackets where they are used

commit 329f0bd5d385d7e68002a210c299e61a31c1e8dc
Author: Bertho Stultiens <bertho@vagrearg.org>
Date:   Sat Aug 22 13:03:37 2026 +0200

    hal: Remove old unused hal.hh. It will be replaced at a later stage.

commit 2751ae8561b8c5ce3cf34713e1d25c1df1b407a0
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date:   Wed Aug 12 21:30:56 2026 +1000

    src: include exported headers with angle brackets where they are used
    
    The build copies every SRCHEADERS entry into include/, so an exported
    header exists twice: the source under src/ and the copy modules compile
    against.  A quoted include searches the includer's own directory before
    the -I path, an angled include does not, so the two forms can reach
    different copies of the same header and both compile.
    
    An exported header travels to include/ and takes its siblings with it,
    so it keeps the quoted form and finds them wherever it lands, and so
    does its implementation, wanting the source rather than a stale export.
    The files changed here are users, and build out of tree where only the
    exported copies exist.

commit fb5f59b185849c46d50542d564a1bf5d65ced0a8
Merge: ce5c6890 c3c6fc24
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date:   Sat Aug 22 15:46:08 2026 +0800

    Merge pull request #4440 from Sigma1912/Glnav_Add_is_lathe
    
    Glnav: Add is_lathe method

commit ce5c6890489b2f06097245ef07e3e9ff9fd66e33
Merge: 3aadbe0c 813da03e
Author: BsAtHome <bertho@vagrearg.org>
Date:   Sat Aug 22 09:40:30 2026 +0200

    Merge pull request #4438 from grandixximo/unused-includes
    
    tree: remove includes that nothing in the file uses

commit 3aadbe0cc5032b1ece804d5ae2f7655cde9f2e7b
Merge: a1559d17 2508c98f
Author: BsAtHome <bertho@vagrearg.org>
Date:   Sat Aug 22 09:39:58 2026 +0200

    Merge pull request #4445 from grandixximo/nml-tooldata-cut
    
    emc: cut the nml_intf dependency on tooldata

commit a1559d175ca3713011af2ee921bac089ba20961e
Merge: 458a64b5 6973b377
Author: BsAtHome <bertho@vagrearg.org>
Date:   Sat Aug 22 09:39:37 2026 +0200

    Merge pull request #4446 from grandixximo/report-buckets
    
    include-dep-report: bucket by what the build links, not by directory depth

commit 458a64b5f6dcd297ad14db3973256d3880444074
Merge: fe00dfbd 515e9dc7
Author: BsAtHome <bertho@vagrearg.org>
Date:   Sat Aug 22 09:39:05 2026 +0200

    Merge pull request #4443 from grandixximo/posemath-sincos
    
    posemath: retire pm_sincos

commit c3c6fc2479316fd5015b8448252cece414d0b3d2
Author: david mueller <mueller_david@hotmail.com>
Date:   Fri Aug 21 16:51:29 2026 +0200

    Glnav: Add is_lathe method
    
    Currently undefined and preview widgets that need it (gremlin, axis, qt5_graphics) override it

commit 2508c98f73a6f4798b2d27fe8a95aeb42c233574
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date:   Sat Aug 22 12:30:25 2026 +1000

    emc: cut the nml_intf dependency on tooldata
    
    EMC_TOOL_STAT::operator= has no caller; deleting it builds the tree in
    both the default and --enable-toolnml configurations, and its stated
    reason, array members, never applied since implicit copy assignment
    copies those anyway.
    
    The default state of an entry moves next to the type as
    CANON_TOOL_TABLE_INIT, so the constructor no longer borrows
    tooldata_entry_init(). Default member initializers would read better but
    make the struct non-POD, which clang rejects for tooldata_entry_init(),
    declared extern "C" and returning it by value.

commit 6973b377a80b62ba601ef65b0046866f203f1743
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date:   Sat Aug 22 12:04:53 2026 +1000

    include-dep-report: bucket by what the build links, not by directory depth
    
    The six libnml subdirectories are in SUBDIRS and each has an empty
    Submakefile, present only to satisfy SUBMAKEFILES. Every source is listed
    in libnml/Submakefile and links into one libnml.so, so the five-way cycle
    the report showed between them was a directory layout, not a dependency.
    
    Fold a subdirectory into its parent when the parent's Submakefile lists
    its sources. emc/tp keeps its own bucket, the top-level Makefile builds it
    into tpmod.

commit 515e9dc772272f83fdcdc2c3daa4c03ace7f68d0
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date:   Wed Aug 19 22:44:00 2026 +1000

    posemath: retire pm_sincos
    
    A two line wrapper around sin() and cos(), writing through pointers.  Its
    eleven call sites now call sin() and cos() directly, as both files already do
    everywhere else.  sincos.c and sincos.h go, with the nine module object lists
    that named libposemath/sincos.o.  $(MATHSTUB) stays on all nine.
    
    -fno-builtin-sin, -cos and -sincos stay.  They reach only the realtime compile
    and are what stops the compiler folding an adjacent sin()/cos() pair back into
    a sincos() libcall that realtime cannot resolve.  Afterwards the realtime
    _posemath.o still has U sin and U cos and no sincos.

commit 813da03e9e757a93597c2b4d1b81da61cd2fac5b
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date:   Thu Aug 20 00:06:55 2026 +1000

    tree: remove includes that nothing in the file uses
    
    104 #include lines across 82 files, of 30 distinct in-tree headers.  None of
    them provides a name the including file mentions.
    
    Found by taking the names each in-tree header declares, macros, typedefs,
    tags, prototypes, extern variables and enum members, and checking whether any
    of them appears in the file that includes it.  A heuristic that size is going
    to be wrong somewhere, so nothing here rests on it: every candidate was then
    put to the compiler.  209 came out of the heuristic, all 209 were removed at
    once and the tree built, the files that failed had their includes put back,
    and this is what survived a build with all of them gone together.  Configured
    --with-realtime=uspace, no errors and no warnings.
    
    That build does not cover everything.  Five of the files are outside what a
    uspace configuration compiles, so they were read by hand instead, and two of
    them kept their include: rtai_ulapi.c needs rtapi_rtai_shm_wrap.h, which
    declares nothing itself and only wraps rtai_shm.h, and fifousr.c takes
    FIFO_KEY and FIFO_SIZE from an anonymous enum in its own common.h.
    
    The ones that repeat are rtapi_math.h 21 times, rtapi_string.h 15, config.h
    10, block.h 7, rtapi_slab.h and rtapi_mutex.h 6 each.
    
    An include costs nothing to leave in place, which is why these accumulated,
    but it is not free to a reader or to a dependency graph: each one asserts a
    relationship between two directories that turns out not to exist.

commit fe00dfbd8c9c1ae70a001c533a9e40a44910efa2
Merge: 7a29eb2b d8c9d027
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date:   Sat Aug 22 06:42:08 2026 +0800

    Merge pull request #4442 from weblate/weblate-linuxcnc-linuxcnc
    
    Translations update from Hosted Weblate

commit d8c9d02741925e5a66eeb1d253f57a8d3288ccc6
Author: xiezhihai <xiezhihai7321@outlook.com>
Date:   Fri Aug 21 21:51:33 2026 +0200

    Translated using Weblate (Chinese (Simplified Han script))
    
    Currently translated at 88.5% (3434 of 3877 strings)
    
    Co-authored-by: xiezhihai <xiezhihai7321@outlook.com>
    Translate-URL: https://hosted.weblate.org/projects/linuxcnc/linuxcnc/zh_Hans/
    Translation: LinuxCNC/LinuxCNC

commit 7a29eb2b930825c75cfd4d7698b37b9ea94a564c
Merge: 59b5219c eb0ef6f3
Author: BsAtHome <bertho@vagrearg.org>
Date:   Fri Aug 21 17:56:26 2026 +0200

    Merge pull request #4430 from grandixximo/classicladder-headers
    
    classicladder: give the headers include guards and their own dependencies

commit 59b5219ccf5fe7e78048c8d8f33ba0b1cecd8bfe
Merge: 6df29fcd 1472affe
Author: BsAtHome <bertho@vagrearg.org>
Date:   Fri Aug 21 17:56:06 2026 +0200

    Merge pull request #4411 from grandixximo/posemath-split
    
    posemath: split the header, move EmcPose, stop exporting gomath and sincos

commit 6df29fcdabee8b55d240d10f43324f30d33689e9
Merge: 15dd6482 de8c2ef4
Author: BsAtHome <bertho@vagrearg.org>
Date:   Fri Aug 21 17:38:16 2026 +0200

    Merge pull request #4439 from grandixximo/docs-raster-path
    
    docs: fix the raster test path in hal_port(3)

commit de8c2ef46bf0c95097122081e0d1dc80c32d2f6a
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date:   Sat Aug 22 00:42:42 2026 +1000

    docs: fix the raster test path in hal_port(3)
    
    The test program is at tests/raster, not src/tests/raster.

commit 1472affefe4c3bfce272d8334f831aba1f52f709
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date:   Sat Aug 15 15:24:36 2026 +1000

    posemath: stop exporting gomath, gotypes and sincos
    
    The build copies gomath.h, gotypes.h and sincos.h into include/, which makes
    them part of what LinuxCNC offers to code built against it. Nothing outside
    libposemath needs them to be: gomath and gotypes are included by two files,
    both part of genserkins, and sincos.h declares one function, a shim over
    sin() and cos() that posemath itself calls.
    
    Those users include them by path instead, which is what src/-relative quoted
    includes are for, and the three headers come off the exported list. With the
    split in place the installed pose math surface is posemath.h and the two
    headers under it, plus emcpose.h, in one directory.
    
    Porting genserkins and scorbot off gomath, so that the N-DOF matrix code can
    move into posemath and gomath can go, is easier once the symbols are private.
    scorbot is already off it: scorbot-kins.c includes gotypes.h and uses nothing
    from it, so that include goes here.
    
    gomath.h included rtapi_math.h with quotes, which was right while gomath.h
    was itself exported and had to carry its siblings to include/.  It is a user
    now, so it takes angle brackets, and it reaches the standard headers through
    rtapi_math.h rather than around it.  gotypes.h wanted float.h for FLT_MAX and
    DBL_MAX and gomath.h wanted stddef.h for NULL; rtapi_math.h includes float.h
    and rtapi.h includes stddef.h, in both the kernel and the userspace branch.

commit 4206e03e641c939171ac88291662ee940c2b4cbb
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date:   Sat Aug 15 15:23:18 2026 +1000

    posemath: move EmcPose next to the pose math it is built from
    
    EmcPose is a machine pose made of a PmCartesian and six more doubles, and
    emcpose.c is arithmetic on it. Neither is an NML message, so neither belongs
    in nml_intf. The split across two headers was historical as well: emcpos.h
    held the type and emcpose.h the operations, and code that wanted the type
    included the one that could not stand alone.
    
    Fold both into src/libposemath/emcpose.h and move emcpose.c with it, into
    libposemath rather than liblinuxcnc, which is the only in-tree caller anyway
    by way of tpmod. emcpos.h stays where it is and includes the new header, so
    the hundred and twenty odd files that include it are untouched and out of
    tree code keeps compiling.
    
    The declarations gain an extern "C" block. They had none, so a C++ caller
    would have compiled and then failed to link; there is no such caller today.
    
    libposemath.so.0 gains the fifteen emcPose entry points and liblinuxcnc.a
    loses them. Nothing in userspace calls them.

commit 4015e8d36cefb09921f0f3abc8f76f8a12f9a474
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date:   Mon Aug 17 00:09:45 2026 +1000

    posemath: split the header by language
    
    posemath.h declares two libraries in one file: a set of C++ classes with
    their operators, and the C API that the real time side uses. The tree already
    has a shape for that, in inifile.h and inifile.hh and in hal.h and hal.hh,
    where the plain suffix is the C interface and the double one is the C++
    interface, so follow it.
    
    posemath.h keeps the C API and gains posemath_types.h, which holds the data
    types and the constants. posemath.hh takes the classes, the operators and the
    copy templates, and refuses to be compiled as C. posemath.h ends by including
    posemath.hh under __cplusplus, so C++ code that includes posemath.h still
    gets the classes and nothing out of tree changes. The two headers include
    each other and the guards make either order safe.
    
    What this buys is for C++ code: a file that wants no more than PmCartesian,
    which is most of what reaches posemath through emcpos.h, can include
    posemath_types.h and stop parsing four hundred lines of class declarations.
    C compilers were never affected either way, since the classes have always sat
    behind an ifdef.
    
    Declaration text is moved verbatim, indentation included. The one edit is
    PmAxis, which was an unnamed enum in C and a typedef of the C++ enum PM_AXIS
    in C++; the types come first now, so the enum takes its tag and one
    definition serves both languages.
    
    Preprocessing posemath.h before and after, in C and in C++, gives the same
    declarations in both languages, differing only in the order they appear and
    in that PmAxis line. libposemath.so.0 exports the same 390 symbols.

commit 2146e12a2d07497010be208e7750cda25a0ca6b3
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date:   Sat Aug 22 00:29:41 2026 +1000

    tests: remove mathtest.c
    
    Nothing builds it. src/tests has no Submakefile and is not in SUBDIRS,
    so the file has never been part of any target; it only tested that a
    2004-era kernel module linking libm came out with no unresolved symbols.
    The concern it stood for is handled by the -fno-builtin-sin, -cos and
    -sincos flags at src/Makefile:917 and by the realtime link itself.
    
    It also defines its own isnan() over the bytes of a double, assuming
    little-endian IEEE 754, and math_test() has no caller.

commit eb0ef6f3a67120744b5c5c820ca13ebf50e4d064
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date:   Fri Aug 21 10:28:02 2026 +1000

    classicladder: give the headers include guards and their own dependencies
    
    30 of the 34 headers in hal/classicladder have no include guard, and 12 do
    not compile on their own.  They name StrRung, StrSection, StrSymbol, StrStep,
    cairo_t or the gtk types without including whatever declares them, and build
    only because the file that included them had already got there.
    
    Guards go in first, since including classicladder.h from twelve places
    without them redefines everything.  Then the twelve name what they use:
    classicladder.h for the ladder types, sequential.h for StrStep and
    StrTransition in drawing_sequential.h, <gtk/gtk.h> for the five _gtk headers,
    <cairo.h> and <stddef.h> for drawing.h, and <stdio.h> for the FILE * in
    files.h.
    
    The guards are named CLASSICLADDER_<FILE>_H.  The four headers here that had
    one already used a leading underscore, which is reserved to the
    implementation, so they are renamed to match rather than left as a second
    convention in the same directory.  Plain uppercase with no underscore is what
    most of the tree uses; the prefix is because names like FILES_H, CALC_H and
    GLOBAL_H are too general to leave unqualified.
    
    All 34 compile standalone afterwards, one translation unit per header against
    the userspace include path, where 22 did before.  Full build clean, no errors
    and no warnings.
    
    The stdio.h line in files.h is also in #4425, which reaches it from the other
    direction; the two overlap by that one line and nothing else.

commit 15dd6482032c8867d9b512200a55a0d165902ef0
Merge: 806e41a3 d6c1a5c2
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date:   Fri Aug 21 22:12:21 2026 +0800

    Merge pull request #4437 from BsAtHome/fix_docs-architecture-svg
    
    docs: Update LinuxCNC architecture diagram

commit 806e41a32974553e70d6cb83dcda4502d1626afd
Merge: c5ce4b82 14b07146
Author: BsAtHome <bertho@vagrearg.org>
Date:   Fri Aug 21 16:04:21 2026 +0200

    Merge pull request #4428 from Sigma1912/SimConfigs_Reorganisation
    
    Sim configs: Vismach reorganisation

commit c5ce4b8265301d02639b32c7e088741586ee4357
Merge: bae5676d f9606a84
Author: BsAtHome <bertho@vagrearg.org>
Date:   Fri Aug 21 15:54:34 2026 +0200

    Merge pull request #4425 from grandixximo/untangle-cycle
    
    untangle: break the src/ include cycle into three

commit d6c1a5c2b1f226a1c5f5115a8e29b57e707300fd
Author: Bertho Stultiens <bertho@vagrearg.org>
Date:   Fri Aug 21 15:19:12 2026 +0200

    docs: Update LinuxCNC architecture diagram.

commit bae5676d037f5f68cb4ed7bb70a5cdd90e1a6f55
Merge: 9a4a3537 0690ee38
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date:   Fri Aug 21 08:22:35 2026 +0800

    Merge pull request #4405 from BsAtHome/fix_halrmt-ipv4
    
    halrmt: Allow IPv4 as fallback when IPv6 is disabled.

commit 14b07146b5c6670b6362100e94b3d4c954132610
Author: david mueller <mueller_david@hotmail.com>
Date:   Thu Aug 20 17:27:01 2026 +0200

    SimConfigs: Make sim confis use local vismach models
    
    - Deprecate vismach models in 'src/hal/user_comps/vismach

commit 9a4a35373ad403459c60fa84e4a77a9669d3c7ee
Merge: c8b521a3 2511cf11
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date:   Thu Aug 20 21:46:27 2026 +0800

    Merge pull request #4427 from grandixximo/merge-2.9-to-master
    
    Merge branch '2.9' into master

commit 8180987710b210f637af0920139fc41abcef8dcb
Author: david mueller <mueller_david@hotmail.com>
Date:   Thu Aug 20 15:17:13 2026 +0200

    SimConfigs: Copy orphaned 'maho600gui' to the configs folder
    
    - Also changed the component name to match the file name so the model can actually be loaded into hal

commit 8bd316aa8fb2174ffdcdba4b231c2a0ff72f2e14
Author: david mueller <mueller_david@hotmail.com>
Date:   Thu Aug 20 15:12:41 2026 +0200

    SimConfigs: Add melfa simulation using the newly added 'three21kins

commit f8eee455bdbfeb5b01d5cdf23bb626b1acde541a
Author: david mueller <mueller_david@hotmail.com>
Date:   Thu Aug 20 14:57:16 2026 +0200

    SimConfigs: Move rotary- and linear-delta sim configs into their own folder

commit f9606a8459cbe0662b9413f5053079122be04695
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date:   Thu Aug 20 21:20:03 2026 +1000

    scripts: read the include statement in a comp declaration section
    
    A .comp only becomes C below its ;; line, but the declaration section above
    it has its own include statement, "include" Header ";" at halcompile.g:53,
    which halcompile copies into the generated C.  Reading only below the line
    missed 22 includes across 14 components, five of them naming an in-tree
    header.
    
    One is a directory edge the report did not have: mesa_pktgyro_test.comp
    takes hal/drivers/mesa-hostmot2/hostmot2.h, so hal/components on
    hal/drivers, and the count goes from 136 to 137.  Headers reached from both
    compiles go from 73 to 77.  No cycle changes.

commit 2511cf1174e102d955d3753654873d454dc4fd40
Merge: c8b521a3 5a7a31a2
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date:   Thu Aug 20 17:20:57 2026 +0800

    Merge branch '2.9'
    
    Carries #4385 (rs274 private tool mmap) and the improved SITEPY
    detection from #4413. Everything else on 2.9 was already in master.

commit 0690ee3877ebe0041b74bb44f2ce9f9035d244e5
Author: Bertho Stultiens <bertho@vagrearg.org>
Date:   Tue Aug 18 10:19:56 2026 +0200

    halrmt: Allow IPv4 as fallback when IPv6 is disabled.

commit bb1fa4c089c003a6f968feab66344915e204b6f3
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date:   Thu Aug 20 19:43:53 2026 +1000

    tree: name stdio in the headers that use FILE
    
    Three exported-or-not headers put FILE * in a prototype without including
    stdio, so they only compile where the includer happened to have it already:
    
      emc/rs274ngc/rs274ngc_interp.hh:648  FILE *find_ngc_file(...)
      hal/classicladder/files.h:30         char *cl_fgets(..., FILE *stream)
      hal/utils/scope_usr.h:261            void write_horiz_config(FILE *fp)
    
    They name it themselves now.  stdio.h is a system header, so this adds no
    directory dependency and the report still counts 136 edges.
    
    This does not make files.h standalone.  It has no include guard around its
    prototypes, only around the macro block at the top, and it names StrRung,
    StrTimer and StrMonostable without including classicladder.h.  Both are
    classicladder problems rather than include-path ones.

commit 2fb782361cd0162b9f1e55fe722e5060cc2622a9
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date:   Thu Aug 20 19:34:11 2026 +1000

    emc: report the unexpected tool index through rcs_print_error
    
    emcops.cc and emccanon.cc each open coded
    
        fprintf(stderr,"UNEXPECTED idx %s %d\n",__FILE__,__LINE__);
    
    for a tooldata_get() that did not return IDX_OK.  emc/nml_intf/interpl.cc
    already reports through rcs_print_error() in the same directory and it is the
    channel the rest of the NML code uses, so both sites take it.
    
    emcops.cc had no other stdio call, so the <stdio.h> added for that one line
    goes away again.  emccanon.cc keeps its own, it has 42 more.
    
    No new directory dependency, since emc/nml_intf and emc/task both already
    reach libnml/rcs.  The report still counts 136 edges and the same three
    cycles.
    
    The same line is open coded at five further sites and the same macro is
    defined locally in six files.  That is a wider cleanup than this PR.

commit 5a7a31a26c30baae5de88a2305c404b5e6d7896e
Merge: 76f6cd63 f61e3fa4
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date:   Thu Aug 20 17:08:52 2026 +0800

    Merge pull request #4385 from tzuohann/rs274-private-toolmmap
    
    sai: give rs274 its own tool mmap instead of truncating $HOME/.tool.mmap

commit c8b521a319b74d7f42c118ef4b70f99cd0c0d263
Merge: a67befa7 85065f30
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date:   Thu Aug 20 17:00:07 2026 +0800

    Merge pull request #4407 from BsAtHome/fix_test-debug-verbosity
    
    tests: Reduce the debug verbosity so it is easier to see problems in CI

commit 85065f3070468f4c74cc4d30feee4e26eb06253c
Author: Bertho Stultiens <bertho@vagrearg.org>
Date:   Tue Aug 18 16:02:25 2026 +0200

    tests: Reduce the debug verbosity so it is easier to see problems in CI.

commit 3df82210d2d5e64f791249534325e2b1c1815251
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date:   Wed Aug 19 22:36:06 2026 +1000

    scripts: add a directory dependency report for src/
    
    Resolves every #include in the tree the way the compiler that sees it would,
    buckets each file into a directory at the granularity of SUBDIRS, and reports
    the edges between those buckets as markdown.
    
    The two compiles do not get the same -I.  Userspace gets INCLUDE from
    src/Makefile, "." plus the "emc" added by src/emc/Submakefile.  Realtime gets
    only what EXTRA_CFLAGS carries, $(BASEPWD) and the exported include/, so a
    quoted emc/... form that compiles in userspace does not compile in a realtime
    module.  Each file is resolved under the rules of the compile it goes through,
    taken from the -objs lists, and .comp sources are scanned below their ;; line
    and resolved the way halcompile does, with the component's own directory
    first.  The exported header set is read out of SRCHEADERS, so it follows what
    the build installs rather than a list of its own.
    
    What it prints: the dependency cycles, the cycle edges that are a single
    include, any include that would not resolve in a realtime compile, the headers
    reached from both compiles, and the exported headers with no user outside
    their own directory.
    
    That last-but-one list is the one the graph cannot give.  An edge records that
    a header was included; it cannot say whether the header was needed to build
    the code or to interface to it.  A header pulled in by both compiles has to
    serve both, so it is where that question has to be asked.
    
    This is what the four commits before it were measured with.  On the tree as it
    stands it reports three cycles over nine directories, all inside libnml or
    between a pair; before them it was one cycle over seventeen.

commit 8e9d79dbd50700105d578fca6b39e5c816e5098d
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date:   Wed Aug 19 22:29:20 2026 +1000

    emc: move emcmotcfg.h to the interface directory
    
    emcmotcfg.h holds compile-time sizes and defaults and includes nothing.  It
    is an exported header and every user takes it as <emcmotcfg.h> out of
    include/, so nothing about how it is reached changes and no source needs
    touching.  What changes is which directory owns it: emc/kinematics (9
    includes), emc/nml_intf (3) and emc/ini (1) depended on emc/motion for this
    header and for nothing else.
    
    emc/motion/Submakefile existed only to copy it into include/, so it goes,
    and emc/motion comes off SUBDIRS with it.
    
    What is left of the cycle is three small ones: libnml's five directories
    among themselves, emc/nml_intf with emc/tooldata, and emc/motion with
    emc/tp.

commit 14237de641f7aea7fe1a04d91b07b3c206b7b97b
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date:   Thu Aug 20 13:29:05 2026 +1000

    emc: move the interpreter and motion interface types into nml_intf
    
    Four includes in emc/nml_intf reached up into emc/rs274ngc, and one in
    emc/rs274ngc reached into emc/motion, for types that neither of those
    directories owns.
    
    state_tag_t is filled in by the interpreter and carried in motion messages
    and in TC_STRUCT; its own header says the info "isn't actually used by
    motion directly".  StateTag is its C++ form, embedded in canon.hh, emc.hh
    and emc_nml.hh, and emc/nml_intf/Submakefile already compiled modal_state.cc
    into libemc from across the tree.  Both move to emc/nml_intf, which is where
    the rest of the shared interface already lives.
    
    emc_nml.hh included rs274ngc.hh, and so the whole interpreter class
    hierarchy, for three array sizes.  ACTIVE_G_CODES, ACTIVE_M_CODES and
    ACTIVE_SETTINGS move into emc/nml_intf/interp_codes.h, included by
    interp_base.hh where they were and by emc_nml.hh where they are used.
    
    Two includes go with that.  modal_state.cc included interp_base.hh and used
    nothing from it.  emcmodule.cc was reaching debugflags.h through the
    rs274ngc.hh chain and now names it.
    
    emc/nml_intf no longer depends on emc/rs274ngc and emc/rs274ngc no longer
    depends on emc/motion, which takes emc/rs274ngc, emc/ini and
    emc/pythonplugin out of the cycle.
    
    Twelve libc includes go in with it.  emc_nml.hh no longer pulls in the
    interpreter header chain, and eight files under emc/ were reaching stdio.h,
    stdlib.h and unistd.h through it rather than naming them.  On Debian sid that
    chain does not lead there and getpid() in shcom.cc and emcsvr.cc does not
    compile; on bookworm and trixie it still does, which is why one package job
    caught it and the rest did not.

commit a67befa7e080c17f8076c9bf1ad47e9443080f59
Merge: 25310d3d 6aafad75
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date:   Thu Aug 20 11:20:07 2026 +0800

    Merge pull request #4403 from BsAtHome/fix_emcrsh-ipv4
    
    linuxcncrsh: Allow IPv4 as fallback when IPv6 is disabled

commit 76f6cd63165c6fb06ca67d2ed317693ada10a1a6
Merge: 2895ccdf aa6d0b92
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date:   Thu Aug 20 09:37:30 2026 +0800

    Merge pull request #4413 from NTULINUX/generic-sitepy
    
    Fix python site-packages dir

commit 2895ccdfcf805d5827be2180d4998e80f2d21828
Merge: 31fedeab 290251cd
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date:   Thu Aug 20 09:37:00 2026 +0800

    Merge pull request #4412 from NTULINUX/generic-tcllibpath
    
    Drop the need for exporting TCLLIBPATH, use system path

commit 25310d3dea70bdc3f0fdd09f29eb2e72a34399c5
Merge: 53df060f 773474d7
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date:   Thu Aug 20 08:13:28 2026 +0800

    Merge pull request #4417 from BsAtHome/fix_gmoccapy-cycle-time
    
    gmoccapy: Fix reading [DISPLAY]CYCLE_TIME when set as a real

commit 773474d714c592dc7a323e910bc3ca4af46bd6b3
Author: Bertho Stultiens <bertho@vagrearg.org>
Date:   Wed Aug 19 13:50:45 2026 +0200

    gmoccapy: Fix reading [DISPLAY]CYCLE_TIME when wrongly set as a real value.

commit 6aafad755bc0864b4e4365e51a3b11172177326f
Author: Bertho Stultiens <bertho@vagrearg.org>
Date:   Mon Aug 17 23:39:49 2026 +0200

    linuxcncrsh: Allow IPv4 as fallback when IPv6 is disabled.

commit aa6d0b927e6dd8f24d3445a463bd44b03c92a92d
Author: Alec Ari <neotheuser@ymail.com>
Date:   Sat Apr 25 03:09:43 2026 -0500

    Fix python site-packages dir
    
    Suggested-by: Luca Toniolo <luca@aitalmac.com>
    Signed-off-by: Alec Ari <neotheuser@ymail.com>

commit 53df060fecb55876715324dc2c7135a32c29f82c
Merge: 0bb86dd6 c951b47e
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date:   Wed Aug 19 21:44:59 2026 +0800

    Merge pull request #4349 from Zia-research/docs-audit-fixes
    
    docs: correct statements that no longer match the source (Code Notes, G-code, HAL)

commit 5842686f5bea618d20a8eba12df74a44df236d06
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date:   Wed Aug 19 22:28:53 2026 +1000

    hal: move setps_util beside the code that links it
    
    setps_util.c is named in hal/Submakefile for the python module and in
    hal/utils/Submakefile for halcmd, halsh and halrmt, so hal/ was reaching
    down into hal/utils/ for both a source file and a header.  It is shared HAL
    support rather than a halcmd utility, so it moves up to hal/ and its three
    users in hal/utils/ name the new path.
    
    The same object is built into the same four targets.  With the edge gone
    hal and hal/utils leave the include cycle, which is down to 8 directories.

commit 6b18f6ad542c190b20f7968ae4a88a380f69702f
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date:   Wed Aug 19 22:28:42 2026 +1000

    rtapi: drop the unused hal.h include
    
    uspace_rtapi_main.cc includes <hal.h> and uses nothing declared in it.  The
    one HAL entry point it reaches, hal_comp_invoke_make(), is resolved with
    dlsym() through a function pointer typedef written beside the call, so the
    declaration in hal.h is never consulted.
    
    That include is the only thing making rtapi depend on hal.  Removing it
    splits the tree's single 17 directory include cycle into one of 10 and one
    of 5, and leaves rtapi and libposemath with no cycle at all.

commit c951b47eea755adc92d3e8c849786250702fbc7d
Author: Zia-research <309084419+Zia-research@users.noreply.github.com>
Date:   Sun Aug 9 19:48:35 2026 +0200

    docs: ini-config - the S-curve jerk threshold is 1.0, not non-zero
    
    The PLANNER_TYPE entry said S-curve planning is active when
    PLANNER_TYPE = 1 AND MAX_LINEAR_JERK > 0. The threshold is 1.0: both
    routes that set the planner type force it back to trapezoidal below
    that, inihal.cc:302 and :320 on the HAL side and initraj.cc:159 on the
    INI side, the latter under its own "FIXME: Should write a warning
    message to the user".
    
    So a configuration with PLANNER_TYPE = 1 and MAX_LINEAR_JERK = 0.5
    satisfies the documented condition and does not get S-curve planning,
    without being told.
    
    Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

commit 4452c5190b4b216231576102d3ea7914f615012a
Author: Zia-research <309084419+Zia-research@users.noreply.github.com>
Date:   Sun Aug 9 19:26:36 2026 +0200

    docs: apply the review on #4349
    
    Six of the eight review comments, applied.
    
    - the command note now names ENABLE_WATCHDOG, DISABLE_WATCHDOG and
      SET_TELEOP_VECTOR and carries no counts and no date, so it cannot go
      stale the way 73/70 and 6/5/2020 did
    - the ENABLE requirement no longer claims a hardware enable chain must be
      satisfied; motion.enable defaults to TRUE and an unconnected machine is
      never refused
    - PAUSE cut to the two sentences the behaviour needs plus the
      synchronized-motion exception; the jerk sentence goes with it, which
      also removes the duplicate of ini-config.adoc
    - the two parentheticals that had the document tracking its own history
      are gone, and the only British spelling in the file went with the first
      of them
    - the velocity-limit line comes back to g-code.adoc as a NOTE in both the
      G33 and the G33.1 lists, worded to say only what has been read: there is
      no interpreter check and no error message for that case
    
    Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

commit 7fa8e6dfda3b257ee4c307799fda110f564c597e
Author: Zia-research <309084419+Zia-research@users.noreply.github.com>
Date:   Mon Aug 3 19:23:31 2026 +0200

    docs: g-code - align G33/G33.1, G64 and G96 error lists with the interpreter
    
    Each change verified against src/emc/rs274ngc at the current source:
    
    - G33 and G33.1: the error lists claimed "The requested linear motion
      exceeds machine velocity limits due to the spindle speed". No such
      check exists anywhere - the interpreter's only checks are axis word
      present, K present, F absent, valid $, and spindle commanded turning
      (interp_check.cc:375-378, interp_convert.cc:5496-5529). Replaced the
      phantom error with the two real ones that were missing (K word
      required, F word forbidden), and stated that "spindle not turning"
      tests the commanded state (M3/M4), which is what
      settings->spindle_turning holds.
    
    - G33.1: documented that an I word below 1 is treated as 1
      (interp_convert.cc:5522-5527).
    
    - G64: documented that changing path control mode is an error while
      cutter radius compensation is active ("Cannot change control mode
      with cutter radius compensation on", interp_convert.cc:2221).
    
    - G96: removed "A feed move is specified in G96 mode while the spindle
      is not turning" from the error list. No such check exists in the
      interpreter, task or motion; the spindle-not-turning checks apply
      only to G33/G33.1/G76 and the tapping cycles. Documented that
      without D the interpreter applies no RPM limit in CSS mode
      (SET_SPINDLE_MODE is called with 1e30, interp_convert.cc:5087).
    
    Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

commit 2dd96e3a9cf026e5eae8696eeabe112a6618c302
Author: Zia-research <309084419+Zia-research@users.noreply.github.com>
Date:   Mon Aug 3 19:23:31 2026 +0200

    docs: code-notes - correct stale and self-contradictory statements
    
    Seven corrections, each verified against the current source:
    
    - Buffer line types: only SHMEM, LOCMEM and PHANTOM are implemented.
      FILEMEM and GLOBMEM are recognised nowhere in src/libnml/; RTLMEM is
      rejected explicitly by cms_config(). (cms_cfg.cc:729,819,844,849)
    
    - OVERRIDE_LIMITS: the "currently broken" note described a bug fixed
      long ago. Limits are automatically re-enabled at the end of the next
      jog, and only tripped limits are overridden, via a mask built from
      the joints' hard-limit flags. (command.c:702-730)
    
    - The 2020 command-count note: figures updated 73/70 -> 76/73 (the
      same three commands still lack handlers).
    
    - PAUSE: documented the actual semantics - deceleration to a stop
      within the current segment at that segment's acceleration limit, and
      the exception that pause is bypassed during position-synchronized
      (threading / rigid tapping) segments. (tp.c:243-252,2782-2787)
      The run-down is jerk-limited only where the S-curve planner is
      selected: [TRAJ]PLANNER_TYPE defaults to 0 = trapezoidal
      (emccfg.h:57, initraj.cc:157) and is forced back to 0 when jerk is
      below 1.0 (initraj.cc:159-162, inihal.cc:302,320), while MAX_JERK
      itself defaults to 0 (emccfg.h:51,70,87). tp.c enters the S-curve
      branch only for type 1 (tp.c:3660,3664), so a stock machine never
      plans one.
    
      Velocity-synchronized segments are the G95 feed-per-revolution case,
      not G96. G_95 enqueues SET_FEED_MODE(spindle, 1)
      (interp_convert.cc:2841-2846); SET_FEED_MODE is the only writer of
      canon.feed_mode (emccanon.cc:521), and every call that passes
      velocity_mode = 1 to START_SPEED_FEED_SYNCH is guarded by it
      (emccanon.cc:530 and the feed-mode restore sites), which yields
      TC_SYNC_VELOCITY (tp.c:4159-4162). The interpreter's own calls for
      G33, G33.1 and G76 all pass 0 (interp_convert.cc:5505,5520,
      5644-5662), and G96 goes through SET_SPINDLE_MODE instead
      (interp_convert.cc:5075-5087).
    
      Thanks to grandixximo for three catches in this one paragraph: the
      first wording implied jerk limiting always applies; its replacement
      gave the threshold as "non-zero" when a jerk below 1.0 forces the
      planner back to trapezoidal; and the velocity-synchronized sentence
      said G96.
    
    - ENABLE / STEP Requirements: neither is "always accepted". ENABLE is
      rejected while the motion.enable HAL pin is low (command.c:1366);
      STEP is rejected unless the planner is already paused
      (command.c:1261).
    
    - EMCIO chapter: removed the leftover "iocontrol main loop process"
      wording that contradicted the chapter's own first line; noted the
      iocontrol.0 / [EMCIO] names are kept for compatibility.
    
    - Reckoning of joints and axes: the initraj.cc:loadTraj() example
      pointed at code that has since been fixed to handle all nine axes.
    
    Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

commit cf8283818be06821edbe0b4838863439e7ad92da
Author: Zia-research <309084419+Zia-research@users.noreply.github.com>
Date:   Mon Aug 3 19:23:30 2026 +0200

    docs: initf example funct is lcec.activate, not lcec.0.activate
    
    The linuxcnc-ethercat driver exports its activation funct globally:
    
        rtapi_snprintf(name, HAL_NAME_LEN, %s.activate, LCEC_MODULE_NAME);
    
    (src/lcec_main.c:408 in linuxcnc-ethercat at 87a72a8). Only the cyclic
    read/write functs are per-master (lcec.<master>.read / .write). A user
    copying the manual's example into a .hal file gets a funct that does
    not exist.
    
    Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

commit 290251cda68faa8ae0457dd51bccb23eaa63c455
Author: Alec Ari <neotheuser@ymail.com>
Date:   Mon Jun 8 09:24:23 2026 -0500

    Drop the need for exporting TCLLIBPATH, use system path
    
    Signed-off-by: Alec Ari <neotheuser@ymail.com>

commit 0bb86dd6675ecdcd8646b14a4e5d5de2820bf386
Merge: 185f4866 8da75f1a
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date:   Wed Aug 19 13:05:39 2026 +0800

    Merge pull request #4410 from grandixximo/docs-adoc-xref-fence
    
    docs: fix the two remaining htmldocs CI warnings

commit 185f486621357c97b31df3ae6092b187cf9d6a32
Merge: 64485b96 7995b5c5
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date:   Wed Aug 19 11:21:45 2026 +0800

    Merge pull request #4409 from weblate/weblate-linuxcnc-linuxcnc-docs
    
    Translations update from Hosted Weblate

commit 8da75f1a8f39d8b39236c1e960826c49dd788550
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date:   Wed Aug 19 12:51:06 2026 +1000

    docs: use a listing block instead of a markdown fence in hm2_rpspi.9
    
    The rc.local example was written as a markdown-style ``` fenced block.
    Asciidoctor renders that correctly for English, but po4a's asciidoc parser
    does not recognise the fences: it extracts the block as an ordinary
    paragraph and reflows it onto one line. In every translated build the
    opening fence then read as an unterminated listing block, so asciidoctor
    warned about it and swallowed the rest of the page. The German manpage,
    for example, lost the NOTE, AUTHOR and LICENSE sections entirely and put
    the shell commands in a data-lang attribute.
    
    With a proper ---- listing block po4a classifies it as a verbatim block
    and keeps the line breaks, and the translated pages render in full.

commit 4b7e696d91456cc14ca0a6f5ecdd935458cfc9a8
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date:   Wed Aug 19 12:51:06 2026 +1000

    docs: fix broken lcnc_realtime cross-references in python-hal-interface
    
    The three links to the LinuxCNC realtime check used inter-document xref
    syntax (xref:python-lcnc_realtime.adoc[]). The documentation is built as a
    single book, so asciidoctor emitted href="#python-lcnc_realtime.adoc",
    a fragment that does not exist anywhere in the output. htmlcheck.sh
    reported the resulting broken fragments for every language.
    
    Use the anchor the target chapter actually declares,
    <<cha:python-lcnc_realtime>>, matching the reference style already used in
    hal/halmodule.adoc.

commit 7995b5c5e4bb72c688828d5d7dafc4405beacdbf
Author: Américo Monteiro <a_monteiro@gmx.com>
Date:   Wed Aug 19 03:52:18 2026 +0200

    Translated using Weblate (Portuguese)
    
    Currently translated at 29.5% (10038 of 33994 strings)
    Author: Américo Monteiro <a_monteiro@gmx.com>
    
    Co-authored-by: Américo Monteiro <a_monteiro@gmx.com>
    Translate-URL: https://hosted.weblate.org/projects/linuxcnc/linuxcnc-docs/pt/
    Translation: LinuxCNC/LinuxCNC Documentation

commit 0fa28088c668fe948f8196ba9386aa2e08db32c7
Author: Luca Toniolo <toniolo.luca@outlook.com>
Date:   Wed Aug 19 03:52:15 2026 +0200

    Translated using Weblate (German)
    
    Currently translated at 99.6% (33891 of 33994 strings)
    Author: Luca Toniolo <toniolo.luca@outlook.com>
    
    Co-authored-by: Luca Toniolo <toniolo.luca@outlook.com>
    Translate-URL: https://hosted.weblate.org/projects/linuxcnc/linuxcnc-docs/de/
    Translation: LinuxCNC/LinuxCNC Documentation

commit 282bf5fb5d2cbcf0f370bab10c8ebc7432ba6c65
Author: Salvador Peña <salvadorp74@hotmail.com>
Date:   Wed Aug 19 03:52:13 2026 +0200

    Translated using Weblate (Spanish)
    
    Currently translated at 33.2% (11315 of 33994 strings)
    Author: Salvador Peña <salvadorp74@hotmail.com>
    
    Co-authored-by: Salvador Peña <salvadorp74@hotmail.com>
    Translate-URL: https://hosted.weblate.org/projects/linuxcnc/linuxcnc-docs/es/
    Translation: LinuxCNC/LinuxCNC Documentation

commit f61e3fa40c5a0aa079fe7bb9389c4869757e7c37
Author: tzuohann <2057796+tzuohann@users.noreply.github.com>
Date:   Tue Aug 18 20:16:24 2026 -0400

    tooldata: use nullptr rather than casting 0 to a pointer
    
    BsAtHome, review 2026-08-18: `(char*)0` is a hand-written null pointer. Both
    occurrences in tooldata_mmap.cc now use nullptr. No behaviour change.

commit 64485b9624d9c8efdb4f66174808acf0c8248dda
Merge: 0f0cda35 e09b80d5
Author: c-morley <c-morley@users.noreply.github.com>
Date:   Tue Aug 18 16:22:22 2026 -0700

    Merge pull request #4402 from alex-pres/fix-qt5_graphics-bg
    
    qt5_graphics bg fix

commit e09b80d5e6463b239c164d61e4094725546d0793
Author: Alexey Presnyakov <309782758+alex-pres@users.noreply.github.com>
Date:   Tue Aug 18 11:49:48 2026 +0400

    qt5_graphics bg fix #4379
    
    invalid vertex shaped used for background drawing

commit 31fedeabffae4f67199e466f843c7252d22d9de7
Merge: a3dcd6b0 8ee4b896
Author: BsAtHome <bertho@vagrearg.org>
Date:   Tue Aug 18 09:35:50 2026 +0200

    Merge pull request #4396 from grandixximo/mesa-modbus-deprecate-2.9
    
    mesa_modbus: mark as superseded by hm2_modbus (2.9 backport)

commit 0f0cda35c1c6744baaa0afb58632984628194580
Merge: 8a8d449f 0bc80c5e
Author: BsAtHome <bertho@vagrearg.org>
Date:   Tue Aug 18 09:34:23 2026 +0200

    Merge pull request #4399 from grandixximo/gstat-file-loaded-pending
    
    hal_glib: defer file-loaded when the interp is already running

commit 8a8d449fadc17467c7c3f28ca3197d4385d9c0a2
Merge: a130105a ff925d40
Author: BsAtHome <bertho@vagrearg.org>
Date:   Tue Aug 18 09:32:44 2026 +0200

    Merge pull request #4387 from grandixximo/posemath-cleanup
    
    posemath: drop the dead knobs and give it its own directory

commit a130105ae3b47678ee496e5c3583aa2f4bab3774
Merge: 7bfe887c c83bc111
Author: BsAtHome <bertho@vagrearg.org>
Date:   Tue Aug 18 09:32:24 2026 +0200

    Merge pull request #4394 from grandixximo/headless-ci
    
    CI: test headless (--disable-gui) build

commit 7bfe887cdbb415f3cb12fbf53ef4a54ad38fb6fb
Merge: 7a029f40 c141dc62
Author: BsAtHome <bertho@vagrearg.org>
Date:   Mon Aug 17 21:54:58 2026 +0200

    Merge pull request #4372 from grandixximo/switchkins-n
    
    switchkins: allow more than three kinematics types

commit 7a029f408029d7224336d3b64fa0653fd4598973
Merge: b3a596f9 485413ad
Author: BsAtHome <bertho@vagrearg.org>
Date:   Mon Aug 17 21:53:59 2026 +0200

    Merge pull request #4398 from grandixximo/fix-4397-motion-logger-expected
    
    tests: add missing SET_SCURVE_PEAK_SCALE to m98m99 expected output

commit 485413ad0ae265f17e35dd25c660f5cc9de89857
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date:   Mon Aug 17 23:19:09 2026 +1000

    tests: add missing SET_SCURVE_PEAK_SCALE to m98m99 expected output
    
    The SCURVE_PEAK_SCALE change updated the expected files under
    tests/motion-logger/ but missed the one in
    tests/interp/m98m99/12-M99-endless-main-program.
    
    Fixes #4397

commit 0bc80c5ed9d7e21c3d4fe702c4eb018428d44b81
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date:   Mon Aug 17 20:53:31 2026 +0800

    hal_glib: defer file-loaded when the interp is already running
    
    GSTAT only emits 'file-loaded' if the poll that first sees stat.file
    change finds the interp IDLE. A client doing program_open + AUTO_RUN
    back to back starts the program within ms, so every 100 ms poll sees
    the file with the interp busy, the remap guard swallows the change,
    and the signal is never emitted: gmoccapy sits at 'No Program loaded'
    with an empty editor and preview after an externally driven run, and
    whether it does depends on poll timing.
    
    Emit a skipped change on the first poll with the interp back at IDLE.
    Remap protection unchanged: merge() ignores the file name at call
    level != 0.

commit c141dc62bebc7cc580a2f96fdde3dd7e91583bbd
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date:   Mon Aug 17 23:07:14 2026 +1000

    docs: outline the two routes to a kinstype
    
    The Code Notes describe switchkinsSetup() and switchkinsRegister()
    separately but never show them together, and this PR adds the second
    route without an in-tree caller to read.
    
    Add an outline of one switchkinsSetup() filling in types 0 to 2 through
    the pointer arguments and registering a fourth, and say plainly that no
    in-tree module registers one yet.

commit b3a596f9044f7b27bd3e901881851a943c9a32aa
Merge: 000c0a40 478e2b6b
Author: BsAtHome <bertho@vagrearg.org>
Date:   Mon Aug 17 14:07:19 2026 +0200

    Merge pull request #4370 from Sigma1912/Vismach_Add-functions
    
    Vismach: Merge functions from twp-vismach.py

commit ff925d400307057b513df0b323c87e31edd5d6a2
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date:   Sat Aug 15 12:57:49 2026 +1000

    posemath: move out of libnml into its own directory
    
    posemath is not part of NML and never has been.  It includes nothing from
    libnml, uses none of its types, and builds into its own shared library,
    libposemath.so.  The only edge between them runs the other way: cms_pm.cc
    includes <posemath.h> to serialise the classes.
    
    Sitting inside libnml/ made it look like an NML component, which is
    misleading for anyone reading the tree and awkward for anything that wants
    to depend on the maths without the messaging.
    
    Pure move.  The files are unchanged, and what follows is the paths that
    named the old location: the Submakefile's own prefixes, the SRCHEADERS
    entries and per-module object lists in src/Makefile, the two USE_TOPDIR
    includes in tpcomp.comp, and the copyright stanza in debian/.
    
    SUBDIRS gains libposemath as an entry of its own rather than one buried in
    the libnml group, since that grouping was the thing being corrected.

commit 754b3f89e14bc851c63514f9936c0984bf23496f
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date:   Sat Aug 15 12:56:26 2026 +1000

    posemath: drop the knobs that are never turned
    
    posemath.h carries four switches that have only ever had one setting, and
    they hide what the declarations actually say.
    
    USE_CONST, USE_CCONST and USE_REF are defined unconditionally a few lines
    above the blocks that test them, so PM_CONST and PM_CCONST are always
    const and PM_REF is always a reference.  Spelling them out turns
    declarations like
    
        PM_CARTESIAN(PM_CONST PM_SPHERICAL PM_REF s);
    
    into what they have always meant:
    
        PM_CARTESIAN(const PM_SPHERICAL & s);
    
    INCLUDE_POSEMATH_COPY_CONSTRUCTORS is guarded by __cplusplus < 201103L, so
    it is never defined in a tree built as C++20.  The comment beside it
    already explains that the compiler generates better copy constructors than
    the ones it hides, and every one of them has been dead code since the move
    to C++11.
    
    PM_LOOSE_NAMESPACE would typedef VECTOR, MATRIX, POSE and friends into the
    global namespace.  Nothing defines it.
    
    The remaining #if 0 blocks go too: the norm() declarations and their
    definitions, and a note about a call being ambiguous on g++ 2.8 and 2.9.
    The deliberate poison macro for pmCartNorm() stays, since it is there to
    turn a use into a compile error rather than to be compiled out.
    
    No behaviour change: the preprocessor already resolved all of this the same
    way on every build.

commit c83bc111b47d81180e26220b08b883a758a3615c
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date:   Mon Aug 17 19:19:19 2026 +0800

    CI: add rip-headless job testing --disable-gui builds
    
    keeps working.  The new rip-headless job configures with --disable-gui
    --disable-manpages --disable-build-documentation using a minimal
    dependency set without X11, Tk or GTK development packages, so a
    regression that reintroduces a GUI dependency into the headless build
    fails at configure or build time instead of being masked by full
    build-deps.  After the build it asserts that GUI artifacts (axis,
    touchy, halshow, pyvcp, ...) are absent and core headless artifacts
    (linuxcncrsh, halcmd, halui, ...) exist, then runs the full test
    suite.
    
    Also included, all found by running the full suite on a headless
    build:
    
    - pyvcp and gladevcp were still built with --disable-gui (#4364
      guarded only the install rules); guard USER_COMP_PY in
      hal/user_comps/Submakefile.
    - preview_helpers.py moved from the GUI-gated gremlin directory to
      lib/python: it is a pure-Python helper needed by the GUI-free
      tests/interp_initcode test.
    - Tests needing Tcl/GUI bits a headless build does not provide
      (pyvcp, twopass, twopass-personality, tclsh-extensions, tooledit,
      ui-smoke) get skip scripts, the mechanism the ui-smoke tests
      already use.  The ui-smoke skip helper now takes the GUI binary
      under test as an argument.

commit 8ee4b8968bffbe1f819821c0238956bdab6e7e76
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date:   Mon Aug 17 19:01:36 2026 +0800

    mesa_modbus: mark as superseded by hm2_modbus (2.9 backport)
    
    Backport of the master deprecation with status adjusted for 2.9, per
    the PR #4386 and #4396 review discussions: mesa_modbus is superseded
    by the hm2_modbus driver and mesambccc-compiled MBCCB files. It
    remains available throughout the 2.9 series, while new configurations
    are encouraged to migrate.
    
    Only build-time and documentation notes in 2.9, no load-time warning:
    the driver is still fully supported in this series, so a nudge at
    modcompile time is enough.
    
    Add a stderr note to modcompile and notes in the README, the
    mesa_modbus driver doc, the modcompile man page and the docs index.

commit 000c0a401f7dd1e8b684a42aaccc56b60fdc7ba2
Merge: 90f3f5df e620cf96
Author: BsAtHome <bertho@vagrearg.org>
Date:   Mon Aug 17 13:06:26 2026 +0200

    Merge pull request #4395 from grandixximo/rtapi-math-constants
    
    rtapi: define the math constants that are missing in kernel space

commit 90f3f5dfeed88869cd8145a5c0b6d94073cee7da
Merge: 204a6f05 d5503143
Author: BsAtHome <bertho@vagrearg.org>
Date:   Mon Aug 17 13:01:31 2026 +0200

    Merge pull request #4312 from grandixximo/issue-4300-docs
    
    docs: add standalone pyvcp testing example

commit 204a6f050a94acad06016956dcff5fb8b089484e
Merge: b40cee65 46074f8c
Author: BsAtHome <bertho@vagrearg.org>
Date:   Mon Aug 17 12:48:06 2026 +0200

    Merge pull request #4386 from grandixximo/mesa-modbus-deprecate
    
    mesa_modbus: deprecate in favor of hm2_modbus

commit b40cee65092baafe829406ed862abb5b82bccc33
Author: sliptonic <shopinthewoods@gmail.com>
Date:   Mon Aug 17 05:43:49 2026 -0500

    Feature/mtconnect/agent (#4318)
    
    mtconnect: native MTConnect agent for LinuxCNC

commit 8c8e0484707794c3d0706679653d108e049a505c
Author: tzuohann <2057796+tzuohann@users.noreply.github.com>
Date:   Sun Aug 16 00:36:52 2026 -0400

    sai: give rs274 its own tool mmap instead of truncating $HOME/.tool.mmap
    
    tool_mmap_creator() opens the file O_RDWR|O_CREAT|O_TRUNC
    (tooldata_mmap.cc:33, used at :135) and sai calls it at driver.cc:570 --
    before getopt() at :578. Every rs274 invocation therefore empties
    $HOME/.tool.mmap, including `rs274 --help` and including one that supplies
    -t, since -t is not read until :583.
    
    That file is not scratch space: tool_mmap_fname() builds it from
    secure_getenv("HOME") with a fixed name, and io, milltask, halui and the
    Python bindings all map that same inode MAP_SHARED. An offline parse run
    beside a live session therefore replaces the running machine's tool table
    with the compiled-in sample table. O_TRUNC preserves the inode, so nothing
    re-maps and nothing is notified: the session simply observes its tools
    change. Observed on a machine using [EMCIO]DB_PROGRAM -- 15 tools became the
    4 sample entries mid-session, G43 applied 0.0000 for a tool that was no
    longer in the table, and the tool-number/drawbar guard inhibited jog and
    feed. DB_PROGRAM neither prevents nor repairs it: ioControl.cc creates the
    mmap before the DB_ACTIVE branch, and io does not re-read afterwards.
    
    Give sai its own file and unlink it on exit. tool_mmap_close() already
    unlinks and tool_mmap_fname() already honours a preset filename -- this only
    adds the setter to reach it. io and milltask are untouched and remain the
    only creators of the shared file.
    
    Two points from review, both addressed here:
    
    mkstemp(), not a name built from the pid (grandixximo). TMPDIR is
    world-writable and a pid is guessable, and the creator opens without O_EXCL
    or O_NOFOLLOW, so a predictable name can be pre-created as a symlink and the
    victim's rs274 then truncates the attacker's chosen file -- and an attacker
    can blanket a pid range in advance. mkstemp() creates it atomically with
    O_EXCL and mode 0600, and TOOL_MMAP_CREATOR_OPEN_FLAGS gains O_NOFOLLOW so
    the creator refuses a symlink at that path even if one appears in the gap.
    
    tool_mmap_close() is now safe as an atexit handler (BsAtHome). It called
    exit(EXIT_FAILURE) when munmap failed, and calling exit() from within an
    atexit handler is undefined behaviour; _exit would skip the remaining
    handlers, so that is not the answer either. It now reports the failure,
    closes the fd and returns.
    
    Reproduce before the change:
    
        rm -rf /tmp/rsx && mkdir -p /tmp/rsx
        HOME=/tmp/rsx rs274 -g /dev/null
        # /tmp/rsx/.tool.mmap, last_index=4, holding
        # T1 z0.511 d0.125 / T2 z0.100 d0.0625 / T3 z1.273 d0.201 / T99999 P123
    
    After: rs274 writes $TMPDIR/rs274.tool.mmap.XXXXXX, removes it on exit, and
    does not open $HOME/.tool.mmap. Verified on a live machine: an rs274 run with
    the real $HOME left last_index=15 and every tool untouched.

commit e620cf96687526f56393f3a78c4fb242d66d5a35
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date:   Sun Aug 16 23:47:08 2026 +1000

    rtapi: define the math constants that are missing in kernel space
    
    The math constants are not in ISO C. Userspace takes them from math.h; a
    kernel build takes the other branch of this header, which includes no math.h,
    so the header already defines M_PI, M_PIl and M_PI_2l when they are absent.
    
    The other twelve of glibc's set are absent in kernel space, so using one in
    real time code builds on uspace and fails on RTAI. Define them under the same
    guard, with the values glibc uses. M_PI itself was spelled with the long
    double digits truncated; it rounds to the same double, but write it as glibc
    does. The typed variants are left out apart from the two already here.

commit 5ee1ecefa8f2e9070d65a2f190e5f0a102807fea
Merge: d19b5bd9 556fd7b6
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date:   Sun Aug 16 20:24:55 2026 +0800

    Merge pull request #4392 from grandixximo/dead-motion-cmds
    
    motion: remove dead commands ENABLE_WATCHDOG, DISABLE_WATCHDOG, SET_TELEOP_VECTOR

commit d19b5bd985e31225f395dd9f7816b8937682bbc8
Merge: 5cb34168 ac15ce8a
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date:   Sun Aug 16 20:24:06 2026 +0800

    Merge pull request #4390 from grandixximo/jerk-fallback-warn
    
    ini: warn when PLANNER_TYPE=1 falls back to trapezoidal due to low jerk

commit 556fd7b6c9abec874b01f8f25c13e4efae76bc94
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date:   Sun Aug 16 19:27:37 2026 +0800

    motion: remove dead commands ENABLE_WATCHDOG, DISABLE_WATCHDOG, SET_TELEOP_VECTOR
    
    No handler in command.c, no sender anywhere in the tree; the only
    references were unreachable log cases in motion-logger.c. Remove the
    enum entries, the logger cases, and the Code Notes sections that
    documented them. Fixes #4359.
Created: 2025-03-16 Last update: 2026-08-23 03:21
testing migrations
  • excuses:
    • Migration status for linuxcnc (- to 1:2.9.9-2): BLOCKED: Rejected/violates migration policy/introduces a regression
    • Issues preventing migration:
    • ∙ ∙ Updating linuxcnc would introduce bugs in testing: #1089809, #1143333
    • ∙ ∙ Autopkgtest for linuxcnc/1:2.9.9-2: amd64: Failed ♻, arm64: Failed ♻, armhf: Failed ♻, i386: Failed ♻
    • ∙ ∙ New but not reproduced on amd64 - info: linuxcnc-doc-de, linuxcnc-doc-en, linuxcnc-doc-es, linuxcnc-doc-fr, linuxcnc-doc-zh-cn, linuxcnc-uspace
    • ∙ ∙ New but not reproduced on arm64 - info: linuxcnc-doc-de, linuxcnc-doc-en, linuxcnc-doc-es, linuxcnc-doc-fr, linuxcnc-doc-zh-cn, linuxcnc-uspace
    • ∙ ∙ New but not reproduced on armhf - info: linuxcnc-doc-de, linuxcnc-doc-en, linuxcnc-doc-es, linuxcnc-doc-fr, linuxcnc-doc-zh-cn, linuxcnc-uspace
    • ∙ ∙ New but not reproduced on i386 - info: linuxcnc-doc-de, linuxcnc-doc-en, linuxcnc-doc-es, linuxcnc-doc-fr, linuxcnc-doc-zh-cn, linuxcnc-uspace
    • Additional info (not blocking):
    • ∙ ∙ Piuparts tested OK - https://piuparts.debian.org/sid/source/l/linuxcnc.html
    • ∙ ∙ 55 days old (needed 5 days)
    • Not considered
news
[rss feed]
  • [2026-06-30] Accepted linuxcnc 2.9.0~pre1+git20230208.f1270d6ed7-1+deb12u2 (source) into oldstable-proposed-updates (Debian FTP Masters) (signed by: Petter Reinholdtsen)
  • [2026-06-30] Accepted linuxcnc 1:2.9.4-2+deb13u1 (source) into proposed-updates (Debian FTP Masters) (signed by: Petter Reinholdtsen)
  • [2026-06-28] Accepted linuxcnc 1:2.9.9-2 (source) into unstable (Petter Reinholdtsen)
  • [2026-06-27] Accepted linuxcnc 1:2.9.9-1 (source) into unstable (Petter Reinholdtsen)
  • [2026-01-25] linuxcnc REMOVED from testing (Debian testing watch)
  • [2025-11-11] linuxcnc 1:2.9.7-1 MIGRATED to testing (Debian testing watch)
  • [2025-11-03] Accepted linuxcnc 1:2.9.7-1 (source) into unstable (andypugh) (signed by: Steffen Moeller)
  • [2025-05-20] linuxcnc 1:2.9.4-2 MIGRATED to testing (Debian testing watch)
  • [2025-04-13] Accepted linuxcnc 1:2.9.4-2 (source) into unstable (Steffen Moeller)
  • [2025-03-15] Accepted linuxcnc 1:2.9.4-1 (source) into unstable (Steffen Moeller)
  • [2025-03-11] linuxcnc REMOVED from testing (Debian testing watch)
  • [2025-01-31] linuxcnc 2.9.3-2 MIGRATED to testing (Debian testing watch)
  • [2025-01-27] Accepted linuxcnc 2.9.0~pre1+git20230208.f1270d6ed7-1+deb12u1 (source) into proposed-updates (Debian FTP Masters) (signed by: Petter Reinholdtsen)
  • [2025-01-26] Accepted linuxcnc 2.9.3-2 (source) into unstable (Petter Reinholdtsen)
  • [2025-01-20] linuxcnc REMOVED from testing (Debian testing watch)
  • [2024-07-09] linuxcnc 2.9.3-1 MIGRATED to testing (Debian testing watch)
  • [2024-07-07] Accepted linuxcnc 2.9.3-1 (source) into unstable (Petter Reinholdtsen)
  • [2023-12-28] linuxcnc REMOVED from testing (Debian testing watch)
  • [2023-11-06] Accepted linuxcnc 2.9.1-2 (source) into unstable (Steffen Moeller)
  • [2023-10-26] Accepted linuxcnc 2.9.1-1 (source) into unstable (Andy Pugh) (signed by: Steffen Moeller)
  • [2023-02-13] linuxcnc 2.9.0~pre1+git20230208.f1270d6ed7-1 MIGRATED to testing (Debian testing watch)
  • [2023-02-10] Accepted linuxcnc 2.9.0~pre1+git20230208.f1270d6ed7-1 (source) into unstable (Sebastian Kuzminsky) (signed by: Petter Reinholdtsen)
  • [2022-11-11] linuxcnc 2.9.0~pre0+git20221105.ffb6bda926-1.2 MIGRATED to testing (Debian testing watch)
  • [2022-11-08] Accepted linuxcnc 2.9.0~pre0+git20221105.ffb6bda926-1.2 (source) into unstable (Petter Reinholdtsen)
  • [2022-11-08] Accepted linuxcnc 2.9.0~pre0+git20221105.ffb6bda926-1.1 (source) into unstable (Petter Reinholdtsen)
  • [2022-11-06] Accepted linuxcnc 2.9.0~pre0+git20221105.ffb6bda926-1 (source) into unstable (Sebastian Kuzminsky) (signed by: Petter Reinholdtsen)
  • [2022-09-12] linuxcnc 2.9.0~pre0+git20220906.02744cdef6-1 MIGRATED to testing (Debian testing watch)
  • [2022-07-15] linuxcnc 2.9.0~pre0+git20220402.2500863908-4 MIGRATED to testing (Debian testing watch)
  • [2022-07-14] linuxcnc REMOVED from testing (Debian testing watch)
  • [2022-07-14] linuxcnc REMOVED from testing (Debian testing watch)
  • 1
  • 2
bugs [bug history graph]
  • all: 9
  • RC: 2
  • I&N: 4
  • M&W: 3
  • F&P: 0
  • patch: 1
links
  • homepage
  • lintian (1, 55)
  • buildd: logs, cross
  • popcon
  • browse source code
  • other distros
  • security tracker
  • l10n (-, 9)
  • debci
ubuntu Ubuntu logo [Information about Ubuntu for Debian Developers]
  • version: 1:2.9.4-2ubuntu4
  • patches for 1:2.9.4-2ubuntu4

Debian Package Tracker — Copyright 2013-2025 The Distro Tracker Developers
Report problems to the tracker.debian.org pseudo-package in the Debian BTS.
Documentation — Bugs — Git Repository — Contributing