[Buildroot] [PATCH v3] package/quagga: Add systemd.service file
Maxime Hadjinlian
maxime.hadjinlian at gmail.com
Sun Jul 3 10:42:09 UTC 2016
Hi Nathaniel, all
On Sun, Jul 3, 2016 at 10:18 AM, Nathaniel Roach <nroach44 at gmail.com> 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)
>
> Signed-off-by: Nathaniel Roach <nroach44 at gmail.com>
> ---
> Changes v2 -> v3:
> - Remove invalid references to quagga.service (Arnout)
> - Check if the binary is executable before trying to start it
> (Arnout)
> - Remove PID file arguments and options (Arnout)
> - Add reload capability as the daemons do support it
>
> 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 | 2 ++
> package/quagga/quagga at .service | 20 ++++++++++++++++++++
> 2 files changed, 22 insertions(+)
> create mode 100644 package/quagga/quagga at .service
>
> diff --git a/package/quagga/quagga.mk b/package/quagga/quagga.mk
> index 22e90ad..1bbc72d 100644
> --- a/package/quagga/quagga.mk
> +++ b/package/quagga/quagga.mk
> @@ -75,6 +75,8 @@ endif
> define QUAGGA_INSTALL_INIT_SYSTEMD
> $(INSTALL) -D -m 644 package/quagga/quagga_tmpfiles.conf \
> $(TARGET_DIR)/usr/lib/tmpfiles.d/quagga.conf
> + $(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..16acc30
> --- /dev/null
> +++ b/package/quagga/quagga at .service
> @@ -0,0 +1,20 @@
> +[Unit]
> +Description=Quagga %i routing daemon
> +ConditionFileIsExecutable=/usr/sbin/%i
> +Wants=quagga at zebra.service
Just a though, I read about why you added the Wants, maybe a comment
would be nice here ?
> +
> +[Service]
> +Type=simple
Since you have removed the '--daemon' option, maybe you should revert
this to "forking" ?
> +EnvironmentFile=/etc/default/quagga-%i
> +PrivateTmp=true
> +# Systemd doesn't like having %i in the executable path.
> +ExecStart=/usr/bin/env /usr/sbin/%i $OPTS -f /etc/quagga/%i.conf
> +ExecReload=/bin/kill -HUP $MAINPID
> +KillMode=mixed
> +KillSignal=SIGINT
If I understand correctly, what you want to do is send a SIGINT to the
main processes and SIGKILL to the other ? From the services file I can
find in major distro, they don't specify it so it's left to the
default SIGTERM, why did you need to change that ? (Maybe you already
explained in your previous mail and I missed, sorry if that's the
case).
> +Restart=on-failure
> +RestartSec=1
Why ?
> +
> +[Install]
> +WantedBy=multi-user.target
> +
> --
> 2.8.1
>
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
More information about the buildroot
mailing list