summaryrefslogtreecommitdiff
path: root/eclass/systemd.eclass
diff options
context:
space:
mode:
authorV3n3RiX <venerix@koprulu.sector>2023-10-01 23:44:45 +0100
committerV3n3RiX <venerix@koprulu.sector>2023-10-01 23:44:45 +0100
commitca52870b45c298a446df20ae15d12bff5f37c480 (patch)
tree96295ab2f8990b4411cd7628ff8ded21b5e3a030 /eclass/systemd.eclass
parent5bd02f229a9c4ce484e49ec36dcb1f4eb5dfcdae (diff)
gentoo auto-resync : 01:10:2023 - 23:44:45
Diffstat (limited to 'eclass/systemd.eclass')
-rw-r--r--eclass/systemd.eclass44
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: