[Buildroot] [PATCH] package/quagga: Add systemd.service file
Arnout Vandecappelle
arnout at mind.be
Sun Jun 26 21:09:25 UTC 2016
On 25-06-16 19:02, Nathaniel Roach wrote:
> Use a template service file as all of the daemons use almost
> identical arguments and generally appear the same to the init
> system.
>
> We "Wants=" zebra as that's the daemon for interfacing to the
> kernel, and it's not required for the other daemons to work
> but it's probably going to be used in nearly all setups.
>
> /usr/bin/env is needed as systemd doesn't allow the instance
> variable (%i) in the executable path.
>
> We don't enable these services by default as this would require
> creating configuration and /etc/default files. (And is easily
> achieved with an FS overlay)
^missing .
So the goal of this patch is that the user simply can symlink to instead of
having to create the service file.
However, since the Wants= is added for zebra, it would make sense to create the
zebra symlink, no?
>
> Signed-off-by: Nathaniel Roach <nroach44 at gmail.com>
> ---
> Changes v1 -> v2:
> (As suggested by Arnout Vandecappelle)
> - Completely remove shim and use /usr/bin/env instead
> - Don't tell quagga to fork as systemd prefers it
> - Add comment to .service file about /usr/bin/env
> - Explain not enabling the service on build in patch
>
> ---
> package/quagga/quagga.mk | 3 +++
> package/quagga/quagga at .service | 20 ++++++++++++++++++++
> 2 files changed, 23 insertions(+)
> create mode 100644 package/quagga/quagga at .service
>
> diff --git a/package/quagga/quagga.mk b/package/quagga/quagga.mk
> index 22e90ad..5b5623f 100644
> --- a/package/quagga/quagga.mk
> +++ b/package/quagga/quagga.mk
> @@ -75,6 +75,9 @@ endif
> define QUAGGA_INSTALL_INIT_SYSTEMD
> $(INSTALL) -D -m 644 package/quagga/quagga_tmpfiles.conf \
> $(TARGET_DIR)/usr/lib/tmpfiles.d/quagga.conf
> +
This empty line is redundant.
> + $(INSTALL) -D -m 644 package/quagga/quagga at .service \
> + $(TARGET_DIR)/usr/lib/systemd/system/quagga at .service
> endef
>
> $(eval $(autotools-package))
> diff --git a/package/quagga/quagga at .service b/package/quagga/quagga at .service
> new file mode 100644
> index 0000000..b17af89
> --- /dev/null
> +++ b/package/quagga/quagga at .service
> @@ -0,0 +1,20 @@
> +[Unit]
> +Description=Quagga %i routing daemon
> +PartOf=quagga.service
I don't understand this. Doesn't the quagga.service actually have to exist for
this to be valid?
> +ReloadPropagatedFrom=quagga.service
> +Wants=quagga at zebra.service
I just realize now: this line should probably be removed when
BR2_PACKAGE_QUAGGA_ZEBRA is not set.
> +
> +[Service]
> +PrivateTmp=true
> +KillMode=mixed
It would make sense to keep this together with KillSignal.
> +Type=simple
> +EnvironmentFile=/etc/default/quagga-%i
> +# Systemd doesn't like having %i in the executable path.
> +ExecStart=/usr/bin/env /usr/sbin/%i $OPTS -f /etc/quagga/%i.conf -i /var/run/quagga/%i.pid
> +PIDFile=/var/run/quagga/%i.pid
I repeat, I'm not very familiar with systemd, but as I understand it PID files
shouldn't be needed anymore with a Type=simple daemon. Unless of course if
quagga uses them somewhere else too.
Regards,
Arnout
> +KillSignal=SIGINT
> +Restart=on-failure
> +RestartSec=1
> +
> +[Install]
> +WantedBy=multi-user.target
>
--
Arnout Vandecappelle arnout at mind be
Senior Embedded Software Architect +32-16-286500
Essensium/Mind http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint: 7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF
More information about the buildroot
mailing list