While investigating missing links in the CI docs build (see #4471, components_gen.adoc lacks pcl720, pluto_servo, pluto_step), I found the root cause: these three driver comps have not been built on uspace since 2b0c9aa (June 2014), when the BUILD_SYS=uspace whitelist in src/hal/components/Submakefile was introduced with only serport (later also mesa_7i65, mesa_uart).
Since every modern install (preempt-rt) is a uspace build, these drivers are effectively unavailable to all current users. Only an RTAI/kbuild build produces them. Their man pages are also absent from the published docs (linuxcnc.org returns 404 for pluto_servo.9.html and pcl720.9.html), so the entries in components.adoc point to nothing.
The situation differs per driver:
- pluto_servo / pluto_step: no technical blocker.
pluto_common.h has had a userspace I/O path (sys/io.h) since 2007, the comp compiles cleanly with uspace flags, and its dependency hal_parport builds on uspace. It was simply never whitelisted and never hardware-tested on uspace.
- pcl720: genuinely kernel-only. It includes
<asm/io.h> unconditionally and uses kernel types, so a uspace build needs an actual port.
Questions for direction:
- pluto_servo/pluto_step: whitelist for uspace (compile-tested, needs someone with Pluto-P hardware to verify), or leave as-is?
- pcl720: worth a port, or formally deprecate?
- Independently: should the docs note that these drivers are only available on kbuild/RTAI builds? Right now the docs present them as normal components.
Side note: make clean-manpages only removes $(GENERATED_MANPAGES), which on uspace excludes these drivers' man pages, so stale pluto_servo.9 etc. survive forever in old build trees and confuse the generated component list (that is why a local Trixie build showed links the CI build did not).
While investigating missing links in the CI docs build (see #4471,
components_gen.adoclackspcl720,pluto_servo,pluto_step), I found the root cause: these three driver comps have not been built on uspace since 2b0c9aa (June 2014), when theBUILD_SYS=uspacewhitelist insrc/hal/components/Submakefilewas introduced with onlyserport(later alsomesa_7i65,mesa_uart).Since every modern install (preempt-rt) is a uspace build, these drivers are effectively unavailable to all current users. Only an RTAI/kbuild build produces them. Their man pages are also absent from the published docs (linuxcnc.org returns 404 for
pluto_servo.9.htmlandpcl720.9.html), so the entries incomponents.adocpoint to nothing.The situation differs per driver:
pluto_common.hhas had a userspace I/O path (sys/io.h) since 2007, the comp compiles cleanly with uspace flags, and its dependencyhal_parportbuilds on uspace. It was simply never whitelisted and never hardware-tested on uspace.<asm/io.h>unconditionally and uses kernel types, so a uspace build needs an actual port.Questions for direction:
Side note:
make clean-manpagesonly removes$(GENERATED_MANPAGES), which on uspace excludes these drivers' man pages, so stalepluto_servo.9etc. survive forever in old build trees and confuse the generated component list (that is why a local Trixie build showed links the CI build did not).