From 5abb788486521824225f7290dde64ed0a4f5132a Mon Sep 17 00:00:00 2001 From: Mike Gilbert Date: Fri, 25 Aug 2017 14:54:41 -0400 Subject: systemd.eclass: add systemd_reenable function --- eclass/systemd.eclass | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'eclass/systemd.eclass') 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: ... +# @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 +} -- cgit v1.2.3-65-gdbad