diff options
author | 2023-09-27 16:08:05 +0200 | |
---|---|---|
committer | 2023-10-01 14:16:06 -0400 | |
commit | 866faf07e36ba85b4c1cce2ac642eb5b7b041f57 (patch) | |
tree | 3915717acc830da7fb6aed8cb621a07e777b504e /eclass/systemd.eclass | |
parent | app-admin/sxid: drop 4.2-r2 (diff) | |
download | gentoo-866faf07e36ba85b4c1cce2ac642eb5b7b041f57.tar.gz gentoo-866faf07e36ba85b4c1cce2ac642eb5b7b041f57.tar.bz2 gentoo-866faf07e36ba85b4c1cce2ac642eb5b7b041f57.zip |
systemd.eclass: add systemd_install_dropin
Closes: https://bugs.gentoo.org/876658
Signed-off-by: Florian Schmaus <flow@gentoo.org>
Closes: https://github.com/gentoo/gentoo/pull/33089
Signed-off-by: Mike Gilbert <floppym@gentoo.org>
Diffstat (limited to 'eclass/systemd.eclass')
-rw-r--r-- | eclass/systemd.eclass | 44 |
1 files changed, 43 insertions, 1 deletions
diff --git a/eclass/systemd.eclass b/eclass/systemd.eclass index fbed387e0ca0..03d6a82fd310 100644 --- a/eclass/systemd.eclass +++ b/eclass/systemd.eclass @@ -1,4 +1,4 @@ -# Copyright 2011-2022 Gentoo Authors +# Copyright 2011-2023 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 # @ECLASS: systemd.eclass @@ -227,6 +227,48 @@ systemd_install_serviced() { ) } +# @FUNCTION: systemd_install_dropin +# @USAGE: [--user] <unit> <conf-file> +# @DESCRIPTION: +# Install <conf-file> as the dropin file <unit>.d/00gentoo.conf, +# overriding the settings of <unit>. +# Defaults to system unit dropins, unless --user is provided, +# which causes the dropin to be installed for user units. +# The required argument <conf-file> may be '-', in which case the +# file is read from stdin and <unit> must also be specified. +# @EXAMPLE: +# systemd_install_dropin foo.service "${FILESDIR}/foo.service.conf" +# systemd_install_dropin foo.service - <<-EOF +# [Service] +# RestartSec=120 +# EOF +systemd_install_dropin() { + debug-print-function ${FUNCNAME} "${@}" + + local basedir + if [[ $# -ge 1 ]] && [[ $1 == "--user" ]]; then + basedir=$(_systemd_unprefix systemd_get_userunitdir) + shift 1 + else + basedir=$(_systemd_unprefix systemd_get_systemunitdir) + fi + + local unit=${1} + local src=${2} + + [[ ${unit} ]] || die "No unit specified" + [[ ${src} ]] || die "No conf file specified" + + # avoid potentially common mistake + [[ ${unit} == *.d ]] && die "Unit ${unit} must not have .d suffix" + + ( + insopts -m 0644 + insinto "${basedir}/${unit}".d + newins "${src}" 00gentoo.conf + ) +} + # @FUNCTION: systemd_enable_service # @USAGE: <target> <service> # @DESCRIPTION: |