From: Mike Gilbert Date: Fri, 25 Aug 2017 18:54:41 +0000 (-0400) Subject: systemd.eclass: add systemd_reenable function X-Git-Url: http://git.tremily.us/gitweb.cgi?a=commitdiff_plain;h=5abb788486521824225f7290dde64ed0a4f5132a;p=gentoo.git systemd.eclass: add systemd_reenable function --- 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 +}