[oe-commits] [openembedded-core] 03/13: systemd: Restore mask and preset targets, fix instance creation

git at git.openembedded.org git at git.openembedded.org
Thu May 9 15:33:04 UTC 2019


This is an automated email from the git hooks/post-receive script.

rpurdie pushed a commit to branch master
in repository openembedded-core.

commit e9444649f49431a8e203e6e2009a1de05e505007
Author: Alex Kiernan <alex.kiernan at gmail.com>
AuthorDate: Wed May 8 16:57:28 2019 +0100

    systemd: Restore mask and preset targets, fix instance creation
    
    Ensure that anyone who sets SYSTEMD_AUTO_ENABLE_${PN} = "mask" (or
    "preset") retains the previous behaviour. In addition fix "enable" so it
    can (again) create instance units out of templates.
    
    Remove over-zealous quoting of SYSTEMD_SERVICE_ESCAPED as it's already
    safely escaped (and can be multiple arguments).
    
    Reported-by: Paul Barker <paul at betafive.co.uk>
    Signed-off-by: Alex Kiernan <alex.kiernan at gmail.com>
    Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
---
 meta/classes/systemd.bbclass | 37 ++++++++++++++++++++++++++++---------
 1 file changed, 28 insertions(+), 9 deletions(-)

diff --git a/meta/classes/systemd.bbclass b/meta/classes/systemd.bbclass
index 3935685..d1cb17d 100644
--- a/meta/classes/systemd.bbclass
+++ b/meta/classes/systemd.bbclass
@@ -16,18 +16,36 @@ python __anonymous() {
     # from doing any work so that pure-systemd images don't have redundant init
     # files.
     if bb.utils.contains('DISTRO_FEATURES', 'systemd', True, False, d):
+        d.appendVar("DEPENDS", " systemd-systemctl-native")
+        d.appendVar("PACKAGE_WRITE_DEPS", " systemd-systemctl-native")
         if not bb.utils.contains('DISTRO_FEATURES', 'sysvinit', True, False, d):
             d.setVar("INHIBIT_UPDATERCD_BBCLASS", "1")
 }
 
 systemd_postinst() {
 if type systemctl >/dev/null 2>/dev/null; then
+	OPTS=""
+
+	if [ -n "$D" ]; then
+		OPTS="--root=$D"
+	fi
+
+	if [ "${SYSTEMD_AUTO_ENABLE}" = "enable" ]; then
+		for service in ${SYSTEMD_SERVICE_ESCAPED}; do
+			case "${service}" in
+			*@*)
+				systemctl ${OPTS} enable "${service}"
+				;;
+			esac
+		done
+	fi
+
 	if [ -z "$D" ]; then
 		systemctl daemon-reload
-		systemctl preset "${SYSTEMD_SERVICE_ESCAPED}"
+		systemctl preset ${SYSTEMD_SERVICE_ESCAPED}
 
 		if [ "${SYSTEMD_AUTO_ENABLE}" = "enable" ]; then
-			systemctl --no-block restart "${SYSTEMD_SERVICE_ESCAPED}"
+			systemctl --no-block restart ${SYSTEMD_SERVICE_ESCAPED}
 		fi
 	fi
 fi
@@ -36,9 +54,9 @@ fi
 systemd_prerm() {
 if type systemctl >/dev/null 2>/dev/null; then
 	if [ -z "$D" ]; then
-		systemctl stop "${SYSTEMD_SERVICE_ESCAPED}"
+		systemctl stop ${SYSTEMD_SERVICE_ESCAPED}
 
-		systemctl disable "${SYSTEMD_SERVICE_ESCAPED}"
+		systemctl disable ${SYSTEMD_SERVICE_ESCAPED}
 	fi
 fi
 }
@@ -162,10 +180,7 @@ python systemd_populate_packages() {
                 else:
                     bb.fatal("SYSTEMD_SERVICE_%s value %s does not exist" % (pkg_systemd, service))
 
-    def systemd_create_presets(pkg):
-        action = get_package_var(d, 'SYSTEMD_AUTO_ENABLE', pkg)
-        if action not in ("enable", "disable"):
-            bb.fatal("SYSTEMD_AUTO_ENABLE_%s '%s' is not 'enable' or 'disable'" % (pkg, action))
+    def systemd_create_presets(pkg, action):
         presetf = oe.path.join(d.getVar("PKGD"), d.getVar("systemd_unitdir"), "system-preset/98-%s.preset" % pkg)
         bb.utils.mkdirhier(os.path.dirname(presetf))
         with open(presetf, 'a') as fd:
@@ -179,7 +194,11 @@ python systemd_populate_packages() {
             systemd_check_package(pkg)
             if d.getVar('SYSTEMD_SERVICE_' + pkg):
                 systemd_generate_package_scripts(pkg)
-                systemd_create_presets(pkg)
+                action = get_package_var(d, 'SYSTEMD_AUTO_ENABLE', pkg)
+                if action in ("enable", "disable"):
+                    systemd_create_presets(pkg, action)
+                elif action not in ("mask", "preset"):
+                    bb.fatal("SYSTEMD_AUTO_ENABLE_%s '%s' is not 'enable', 'disable', 'mask' or 'preset'" % (pkg, action))
         systemd_check_services()
 }
 

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Openembedded-commits mailing list