doc: document command candidates and the duplicate title rule

The migration guide covered a stanza at a time, which is the wrong
shape for the two idioms that repeated a whole stanza.  One of them,
several candidate binaries for one service, is now a command list.
The other, one service gated differently per platform, has no block
equivalent: those blocks share an identity because they share the
barrier condition downstream services wait for, so they cannot be
given separate titles.  For that one the guide says to split the
variants across files, or leave that file in the line-based format,
which Finit still reads.

The udevd example in services.md taught the merge-broken form, and
system/10-hotplug.conf.in pointed readers at it for their syslogd.

Also lists libConfuse among the build dependencies.  It has been
mandatory since the new .conf format landed, and build.md still said
two libraries.  And corrects the note on variable expansion: it is
${VAR} that libconfuse expands when the file is read, with
${VAR:-default} supported.  A plain $VAR reaches the service, which is
what makes `command = "syslogd -F $SYSLOGD_ARGS"` work with envfile.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
This commit is contained in:
Joachim Wiberg committed 2026-08-05 17:57:56 +02:00
1 parent cfae4a0e10
commit 4299ce8839
6 files changed
+147 -14

No files matched your search

+11
View File
@@ -8,6 +8,10 @@ All relevant changes are documented in this file.
### Changes
- The `command` setting in a block takes a list of candidates for the
same service, `command = { "/lib/systemd/systemd-udevd", "-udevd" }`,
and Finit starts the first one it finds. The line-based format could
only express this by repeating the whole stanza per candidate
- Restart log now spells out the signal name and flags core dumps,
e.g. `killed by SIGKILL` or `killed by SIGSEGV, core dumped`, in
place of the bare numeric `by signal: N`. Gives operators a much
@@ -15,6 +19,13 @@ All relevant changes are documented in this file.
### Fixes
- Reject a .conf file that declares the same block title twice. The
title is the service identity and libConfuse merges two sections
sharing one, so the file loaded as a single service holding a mix of
both declarations, silently. This hit `system/10-hotplug.conf`,
where the two `udevd` blocks left only the second command, dropping
the service on systems that only have `systemd-udevd`. The same
title in another file is still how a system .conf is overridden
- Remove stale daemon-owned (`pid:!`) pidfiles after unclean exits.
When a daemon dies via SIGKILL/OOM/segfault, or exits early during
startup, its pidfile lingers and can prevent the next instance from