Sometimes it is useful to have a set of units that get enabled or
disabled for an image, but that aren't enabled by default during package
installation.

The image-systemd.bbclass allows for adding a list of whitespace
separated units to the SYSTEMD_UNITS_ENABLE, SYSTEMD_UNITS_DISABLE, or
SYSTEMD_UNITS_MASK variables, in order to run the corresponding systemctl
command only as a rootfs postprocess.

Signed-off-by: Randy Witt <[email protected]>
---
 meta/classes/image-systemd.bbclass | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)
 create mode 100644 meta/classes/image-systemd.bbclass

diff --git a/meta/classes/image-systemd.bbclass 
b/meta/classes/image-systemd.bbclass
new file mode 100644
index 0000000..f268a5c
--- /dev/null
+++ b/meta/classes/image-systemd.bbclass
@@ -0,0 +1,26 @@
+# Runs systemctl commands on the units in the SYSTEMD_UNITS_ENABLE,
+# SYSTEMD_UNITS_DISABLE, and SYSTEMD_UNITS_MASK variables. This bbclass
+# is intended to be inherited by image generation recipes.
+
+SYSTEMD_UNITS_ENABLE ??= ""
+SYSTEMD_UNITS_DISABLE ??= ""
+SYSTEMD_UNITS_MASK ??= ""
+
+run_systemctl_commands() {
+if type systemctl > /dev/null 2>&1; then
+       for unit in ${SYSTEMD_UNITS_ENABLE}; do
+               systemctl --root=${IMAGE_ROOTFS} enable ${unit} && continue
+               echo "WARNING: Could not enable unit ${unit}"
+       done
+       for unit in ${SYSTEMD_UNITS_DISABLE}; do
+               systemctl --root=${IMAGE_ROOTFS} disable ${unit} && continue
+               echo "WARNING: Could not disable unit ${unit}"
+       done
+       for unit in ${SYSTEMD_UNITS_MASK}; do
+               systemctl --root=${IMAGE_ROOTFS} mask ${unit} && continue
+               echo "WARNING: Could not mask unit ${unit}"
+       done
+fi
+}
+
+ROOTFS_POSTPROCESS_COMMAND += "run_systemctl_commands; "
-- 
1.8.1.4

_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.openembedded.org/mailman/listinfo/openembedded-core

Reply via email to