Michael Stapelberg’s Debian Blog

Systemd support in Debian packages: how to help (2013-07-14)

Sometimes, people show up in our IRC channel #debian-systemd or on our mailing list pkg-systemd-maintainers@lists.alioth.debian.org and ask how they can help. This blog post answers that question.

First of all, whatever you end up doing, please coordinate with us first! Saying hi in our IRC channel or on our mailing list and explaining what you intend to do is all we ask for. In the past, people have filed bug reports with service files that are not idiomatic, and we really need to avoid that.

Currently, our biggest task is to add/improve systemd support to individual Debian packages, and this is where we can use a lot of help.

We have a dashboard which contains two lists:

Packages that ship a service file, but don’t use dh-systemd yet.

These need to be updated to get proper maintscripts (e.g. deb-systemd-helper enable/disable calls, possibly start/stop/restart calls). Packages that ship an init script but no service file yet.

These need a service file plus dh-systemd support.

Adding a service file and dh-systemd support

After you picked a service from the second list in our dashboard, first double-check that there is no bug filed against it yet (the dashboard might be a few hours behind).

Then, search for a service file, either upstream or in other distributions such as Arch Linux, Fedora, Gentoo, etc. In case there is no service file yet, write one. Please carefully test the service file (e.g. does starting/stopping/restarting and reloading work) and send it to us for review.

Be careful to avoid obvious regressions from the sysvinit init script. That is, don’t just write a very simplistic service file that breaks a use-case which formerly worked. If in doubt, ask pkg-systemd-maintainers or chose a different package to work on.

Afterwards, add systemd support by using the dh-systemd helper, see https://wiki.debian.org/Systemd/Packaging.

The last step is to file a proper bug report against the package that uses our usertag and CCs pkg-systemd-maintainers. See http://bugs.debian.org/714190 for an example.

Replacing custom maintscripts with dh-systemd

Check if the package currently has any direct systemctl calls in its maintscripts and remove them if so (see http://bugs.debian.org/713853 for an example).

Follow https://wiki.debian.org/Systemd/Packaging to add systemd support using the dh-systemd helper.

Check whether the maintscripts look good and generate a debdiff to highlight the differences between the old and the new version:

debdiff --controlfiles=ALL OLD_amd64.changes NEW_amd64.changes

Then file a bug report which uses our usertag and CCs pkg-systemd-maintainers. See http://bugs.debian.org/713853 for an example.

Thanks!

Thank you for helping us and Debian in general!