Re: [PATCH 0/1] libevl: Add debian package config
Jan Kiszka <[email protected]> Tue, 21 Jul 2026 12:37:26 +0200
| Newsgroups | dev.linux.lists.xenomai |
|---|---|
| Message-ID | <[email protected]> |
On 21.07.26 00:22, Hannes Diethelm wrote: > Am 20.07.26 um 16:30 schrieb Jan Kiszka: >> Hi Hannes, >> >> thanks for carrying this over. > > Thanks for all the feedback. > >> >> On 17.07.26 22:58, Hannes Diethelm wrote: >>> This patch adds a debian package config that allows to build a deb's >>> using dpkg-buildpackage -b -uc. >>> >>> The packages are libevl / libevl-test similar to[1]. However, latmus >>> is placed in libevl. One might not need the tests but still want to >>> use latmus. >> >> For the purpose of tuning the core, or what is the reasoning here? > > Yes exactly. One might need latmus but won't care about the tests. > > Based on the comment from Florian, it would probably make more sense to > create more packages: > > - libevl (only library) > - libevl-bin (evl / latmus / oob-* tidbits) > - libevl-test (tests) > - libevl-dev (headers / libevl.a) > Alternatively, maybe there is a way to split off the tuning feature from latmus tool, like we have with autotune in xenomai3. >> >>> >>> Additionally, libevl installs /usr/lib/udev/rules.d/90-libevl.rules >>> which sets all evl >>> device files to group evl, g+rw. libevl.postinst adds this group and >>> triggers an udev reload. >>> >>> This allows to use libevl without root. However, using SCHED_FIFO still >>> needs either root or setcap cap_sys_nice+ep and possibly some other >>> tweaks. >>> Some tests and my application work with cap_sys_nice+ep. However, for >>> example latmus fails >>> due to unknown reasons. The debian packages sets no capabilities but >>> this could be added >>> if desired. >>> >>> Caveats: >>> >>> The test ptrace-sync fails with <timeout waiting for gdb>. dh_strip - >>> Xptrace-sync from[1] >>> does not help and it is not needed: When libevl-test-dbgsym is >>> installed, the symbols are >>> available but the test still fails. With dh_strip -Xptrace-sync, the >>> symbols are not found: >>> warning: could not find '.gnu_debugaltlink' file for /usr/libexec/ >>> evl/tests/ptrace-sync >> >> But the package built by xenomai-images does not have this problem and >> runs the ptrace test successfully. Already dug into the key differences? > > Not yet. Might be just a different gdb version or path issue. I am using > Debian Trixie. > > Is there a way to download this images? I've seen there is a way to > build them locally, i can also try this. > We do not ship pre-built images, you would have to build your own image here. >> >>> >>> If linux-evl is also built and installed as a debian package, linux- >>> libc-dev can not be >>> installed due to /usr/include/evl/*-abi.h are both installed by >>> libevl and linux-libc-dev >>> from the kernel build. However, installing linux-libc-dev from debian >>> trixie works fine. >> >> This looks wrong: The kernel is providing us with a different UAPI, thus >> also needs to deliver an alternative linux-libc-dev package. It should >> be the role of libevl to deliver those headers as it has no knowledge >> about the actual kernel in use here. That's why xenomai-images is >> generating a new linux-libc-dev and is not relying on libevl here. >> > > Yes, Philippe sent me the hint with the -Dinstall-uapi=false switch, > thanks. > > One remaining issue is the versioning / dependency's. For now, to keep > it simple, I just used the libevl tag > as the version. And it doesn't recommend a xenomai4 kernel. > > For now, the packages are: > libevl_59_amd64.deb > libevl-test_59_amd64.deb dep libevl >= 59 > linux-image-6.12.90-cip24-xenomai4-r59_6.12.90-3_amd64.deb (Withouth > PREEMT_RT) > linux-image-6.12.90-cip24-xenomai4-r59-rt_6.12.90-3_amd64.deb (With > PREEMT_RT) > > I am working here [1] on creating Debian xenomai4 packages for linuxcnc. > Not perfect but does the job. It's still WIP > but a few people got this already working without knowledge how to build > kernels. > I did not yet push the latest version and I have to change from pushing > the binary's to github releases. > > With the uapi installed with linux-libc-dev, libevl has to depend on the > right linux-libc-dev. > > Version 59 is not really correct. The kernel has EVL ABI 45. Libevl has > API 36, needs API >= 45. > For kernel dependency's, the ABI version is important, right? > > For libevl, it could be either the API = 36 / dso_version = 8.0.0 / > version = 0.59. > > Variant with API/ABI as version: > - libevl 36 recommends linux-image-xenomai4 >= 45 or linux-image- > xenomai4-rt >= 45 > - libevl-bin 36 dep libevl >= 36 > - libevl-test 36 dep libevl >= 36 > - libevl-dev 36 dep libevl >= 36 linux-libc-dev >= 1:45 > > Dependency packages, needed to convert the ABI versioning into kernel > versioning: > - linux-image-xenomai4 45 dep linux-image-6.12.90-cip24-xenomai4-45 or > other kernel versions > - linux-image-xenomai4-rt 45 dep linux-image-6.12.90-cip24-xenomai4- > rt-45 or other kernel versions > - linux-libc-dev 1:45 dep linux-libc-dev-xenomai4-45 > > Kernel packages: > - linux-image-6.12.90-cip24-xenomai4-45 6.12.90 > - linux-image-6.12.90-cip24-xenomai4-rt-45 6.12.90 > - linux-libc-dev-xenomai4-45 6.12.90 > > To create a linux-libc-dev-xenomai4-45 package, I would have to add a > patch for linux-evl, the standard > kernel debian package system doesn't support custom names for linux- > libc-dev. But this should be not to > complicated. > > It's the first Debian package I am working on that's not only for me. I > have to read a bit more in the > doc's how this dependency's are normally created properly. > > Also linux-libc-dev 1:45 is a bit dirty: Using the epoch to replace the > standard linux-libc-dev by a dependency > package that will not be replaced by the latest stock one. It should > work tough. > > Alternatives: > -Install the abi with libevl > -Create a linux-libc-dev-xenomai4 package from linux-evl and depend on > that / remove the evl headers from linux-libc-dev > so linux-libc-dev stock can be installed together with linux-libc-dev- > xenomai4. I compared the content, most evl related files > are new, only fnctl.h has > #define O_OOB 010000000000 > added. However, I don't see any usage in libevl. So this should work. > -Leave the dependency's on the kernel packages away and solve this by > documentation > However, you would have to place a hold on linux-libc-dev so it doesn't > get replaced as soon as your OS has a newer kernel. > > Do you have other ideas how to solve the version / dependency's / linux- > libc-dev issue? > > For now I named the kernel packages -xenomai4 but I am thinking about > changing to -evl or xenomai-evl. What is more appropriate? The topic is complicated because neither Debian nor other packaging systems I know allow to express this two-dimensional version dependency (>= ABI version X, latest kernel Y). If you encode the ABI into the package version as well, you are folding that version matrix into a single version number (>= abi-X-kernel-Y, or >= kernel-Y-ABI-X) - none is perfect. If your target audience for those packages primarily consists of beginners, it will be best to model it via a lock-step between libevl and some kernel package that carries a specific ABI version in its name (linux-image-evlX_kernel-ver-Y etc.). This implies creating a linux-libc-dev flavor as well (linux-libc-dev-evlX or so). That package should carry Provides:, Conflicts:, and Replaces: for linux-libc-dev in its metadata. We side-step all these issues in xenomai-images by generating and installing a set of custom packages in a curated environment where upstream will not be able to replace the self-build xenomai packages (preferences are set accordingly for local repo with those packages). Jan -- Siemens AG, Foundational Technologies Linux Expert Center