Re: [PATCH] debian: Replace SysV init script with native systemd unit
Jan Kiszka <[email protected]> Thu, 30 Jul 2026 19:21:17 +0200
| Newsgroups | dev.linux.lists.xenomai |
|---|---|
| Message-ID | <[email protected]> |
On 30.07.26 17:47, Clara Kowalsky wrote: > Debian trixie warns when relying on the generated compatibility unit for > /etc/init.d/xenomai. > > This addresses > > systemd-sysv-generator[1423]: SysV service '/etc/init.d/xenomai' lacks a native systemd unit file, automatically generating a unit file for compatibility. > systemd-sysv-generator[1423]: Please update package to include a native systemd unit file. > systemd-sysv-generator[1423]: ⚠ This compatibility logic is deprecated, expect removal soon. ⚠ > > See #54. > > Signed-off-by: Clara Kowalsky <[email protected]> > --- > debian/libxenomai1.xenomai.init | 36 ------------------------------ > debian/libxenomai1.xenomai.service | 13 +++++++++++ > debian/rules | 2 +- > 3 files changed, 14 insertions(+), 37 deletions(-) > delete mode 100644 debian/libxenomai1.xenomai.init > create mode 100644 debian/libxenomai1.xenomai.service > > diff --git a/debian/libxenomai1.xenomai.init b/debian/libxenomai1.xenomai.init > deleted file mode 100644 > index 811fe25fd..000000000 > --- a/debian/libxenomai1.xenomai.init > +++ /dev/null > @@ -1,36 +0,0 @@ > -#!/bin/sh -e > -### BEGIN INIT INFO > -# Provides: xenomai > -# Required-Start: mountkernfs > -# Required-Stop: > -# Default-Start: 2 3 4 5 > -# Default-Stop: 0 1 6 > -# Short-Description: Set Xenomai group > -### END INIT INFO > - > -GROUP=xenomai > -INITNAME=/etc/init.d/xenomai > -FILENAME=/sys/module/xenomai/parameters/allowed_group > -GID=$(getent group $GROUP | cut -d: -f3) > - > -test -e $FILENAME || exit 0 > -test -n "$GID" || exit 0 > - > -case "$1" in > - start) > - echo "$GID" > $FILENAME > - ;; > - stop) > - echo "-1" > $FILENAME > - ;; > - restart|force-reload) > - $0 start > - ;; > - *) > - echo "Usage: $INITNAME {start|stop|restart|force-reload}" > - exit 1 > - ;; > -esac > - > -exit 0 > - > diff --git a/debian/libxenomai1.xenomai.service b/debian/libxenomai1.xenomai.service > new file mode 100644 > index 000000000..4494dc00c > --- /dev/null > +++ b/debian/libxenomai1.xenomai.service > @@ -0,0 +1,13 @@ > +[Unit] > +Description=Set Xenomai group > +ConditionPathExists=/sys/module/xenomai/parameters/allowed_group > +After=systemd-modules-load.service > + > +[Service] > +Type=oneshot > +RemainAfterExit=yes > +ExecStart=/bin/sh -ec 'gid=$(/usr/bin/getent group xenomai | /usr/bin/cut -d: -f3); [ -n "$gid" ] && echo "$gid" > /sys/module/xenomai/parameters/allowed_group || true' > +ExecStop=/bin/sh -ec 'echo -1 > /sys/module/xenomai/parameters/allowed_group || true' Why "|| true"? Can't we detect the condition when we should not write (like in the original script) and give the write the chance to properly fail the unit? You may even use a script to deduplicate that part of the logic. BTW, how did you test this? Jan > + > +[Install] > +WantedBy=multi-user.target > diff --git a/debian/rules b/debian/rules > index 9e56de260..dd52cbaf0 100755 > --- a/debian/rules > +++ b/debian/rules > @@ -103,7 +103,7 @@ binary-indep: build install > binary-arch: build install > dh_testdir -a > dh_testroot -a > - dh_installinit -a --name=xenomai > + dh_installsystemd -a --name=xenomai > dh_installman -a > dh_installdocs -a -A README > dh_link -a -- Siemens AG, Foundational Technologies Linux Expert Center