diff options
author | Otavio Salvador <otavio@ossystems.com.br> | 2011-11-04 17:25:58 +0000 |
---|---|---|
committer | Koen Kooi <koen@dominion.thruhere.net> | 2011-11-04 19:41:19 +0100 |
commit | 79f35231a351a7df30db8b2037f274a41e8d9e58 (patch) | |
tree | 972e818381586d9604e40223091afe9a53e42ebe /meta-oe/recipes-core/systemd | |
parent | 7f5ca6706aa51dd7f1512e41757b0345aba59a47 (diff) | |
download | meta-openembedded-79f35231a351a7df30db8b2037f274a41e8d9e58.tar.gz |
systemd-systemctl-native: add a systemctl wrapper
The wrapper allows for enabling services at rootfs generation thus
allowing systemd to be used in ready-only filesystems.
Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
Diffstat (limited to 'meta-oe/recipes-core/systemd')
-rw-r--r-- | meta-oe/recipes-core/systemd/systemd-systemctl-native.bb | 13 | ||||
-rwxr-xr-x | meta-oe/recipes-core/systemd/systemd-systemctl-native/systemctl | 51 |
2 files changed, 64 insertions, 0 deletions
diff --git a/meta-oe/recipes-core/systemd/systemd-systemctl-native.bb b/meta-oe/recipes-core/systemd/systemd-systemctl-native.bb new file mode 100644 index 0000000000..3ee757e153 --- /dev/null +++ b/meta-oe/recipes-core/systemd/systemd-systemctl-native.bb @@ -0,0 +1,13 @@ +DESCRIPTION = "Wrapper to enable of systemd services" + +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=3f40d7994397109285ec7b81fdeb3b58" + +inherit native + +SRC_URI = "file://systemctl" + +do_install() { + install -d ${D}${bindir} + install -m 0755 ${WORKDIR}/systemctl ${D}${bindir} +} diff --git a/meta-oe/recipes-core/systemd/systemd-systemctl-native/systemctl b/meta-oe/recipes-core/systemd/systemd-systemctl-native/systemctl new file mode 100755 index 0000000000..1fc77fd92b --- /dev/null +++ b/meta-oe/recipes-core/systemd/systemd-systemctl-native/systemctl @@ -0,0 +1,51 @@ +#!/bin/sh + +ROOT= + +# parse command line params +while [ $# != 0 ]; do + opt="$1" + + case "$opt" in + enable) + shift + + service="$1" + shift + ;; + --root=*) + ROOT=${opt##--root=} + shift + ;; + *) + echo "'$opt' is an unkown option; exiting with error" + exit 1 + ;; + esac +done + +# find service file +for p in $ROOT/etc/systemd/system \ + $ROOT/lib/systemd/system \ + $ROOT/usr/lib/systemd/system; do + if [ -e $p/$service ]; then + service_file=$p/$service + service_file=${service_file##$ROOT} + fi +done +if [ -z "$service_file" ]; then + echo "'$service' couldn't be found; exiting with error" + exit 1 +fi + +# create the required symbolic links +wanted_by=$(grep WantedBy $ROOT/$service_file \ + | sed 's,WantedBy=,,g' \ + | tr ',' '\n' \ + | grep '\.target$') + +for r in $wanted_by; do + mkdir -p $ROOT/etc/systemd/system/$r.wants + ln -s $service_file $ROOT/etc/systemd/system/$r.wants + echo "Enabled $service for $wanted_by." +done |