summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Gilbert <floppym@gentoo.org>2017-08-25 14:54:41 -0400
committerMike Gilbert <floppym@gentoo.org>2017-09-02 21:14:43 -0400
commit5abb788486521824225f7290dde64ed0a4f5132a (patch)
tree75058c586994aa5917a60f37283336f9ec35adb0 /eclass/systemd.eclass
parentdev-qt/qt-creator: drop insecure git:// repo URI (diff)
downloadgentoo-5abb788486521824225f7290dde64ed0a4f5132a.tar.gz
gentoo-5abb788486521824225f7290dde64ed0a4f5132a.tar.bz2
gentoo-5abb788486521824225f7290dde64ed0a4f5132a.zip
systemd.eclass: add systemd_reenable function
Diffstat (limited to 'eclass/systemd.eclass')
-rw-r--r--eclass/systemd.eclass21
1 files changed, 21 insertions, 0 deletions
diff --git a/eclass/systemd.eclass b/eclass/systemd.eclass
index 4b7f5c4cb5fe..63ff5609589d 100644
--- a/eclass/systemd.eclass
+++ b/eclass/systemd.eclass
@@ -418,3 +418,24 @@ systemd_tmpfiles_create() {
type systemd-tmpfiles &> /dev/null || return 0
systemd-tmpfiles --create "${@}"
}
+
+# @FUNCTION: systemd_reenable
+# @USAGE: <unit> ...
+# @DESCRIPTION:
+# Re-enables units if they are currently enabled. This resets symlinks to the
+# defaults specified in the [Install] section.
+#
+# This function is intended to fix broken symlinks that result from moving
+# the systemd system unit directory. It should be called from pkg_postinst
+# for system units that define the 'Alias' option in their [Install] section.
+# It is not necessary to call this function to fix dependency symlinks
+# generated by the 'WantedBy' and 'RequiredBy' options.
+systemd_reenable() {
+ type systemctl &>/dev/null || return 0
+ local x
+ for x; do
+ if systemctl --quiet --root="${ROOT}" is-enabled "${x}"; then
+ systemctl --root="${ROOT}" reenable "${x}"
+ fi
+ done
+}