summaryrefslogtreecommitdiffstats
path: root/meta
diff options
context:
space:
mode:
authorKhem Raj <raj.khem@gmail.com>2013-11-22 22:28:44 -0800
committerRichard Purdie <richard.purdie@linuxfoundation.org>2013-12-14 09:11:11 +0000
commitb53a0117c8bc75d98722ea9ca8363db9c22b0aa8 (patch)
treee277af97413f5c7c7bab294c70f40d83f25aa343 /meta
parente0d4865bbd3f619fd1aeca261e4c4d664eddcc6e (diff)
downloadpoky-b53a0117c8bc75d98722ea9ca8363db9c22b0aa8.tar.gz
systemd-systemctl: Add preset capability
systemd has presets as described here http://lists.freedesktop.org/archives/systemd-devel/2011-July/002830.html This patch will let distros define presets file which will override the enable/disable specified by recipes. systemctl preset without any argument will run presents on all services systemctl preset service1 service2 will run presets on specified pervice. something like enable * or disable * would mean that all services will be either enabled or disabled by default. If no user-presets are specified then 'enable' is default systemd allows basic globs but we do not implement them except '*' (From OE-Core rev: 1254416901a0c70814296a86784f4934f27c7d4a) Signed-off-by: Khem Raj <raj.khem@gmail.com> Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta')
-rwxr-xr-xmeta/recipes-core/systemd/systemd-systemctl/systemctl28
1 files changed, 27 insertions, 1 deletions
diff --git a/meta/recipes-core/systemd/systemd-systemctl/systemctl b/meta/recipes-core/systemd/systemd-systemctl/systemctl
index f7866565b9..b37f27abfb 100755
--- a/meta/recipes-core/systemd/systemd-systemctl/systemctl
+++ b/meta/recipes-core/systemd/systemd-systemctl/systemctl
@@ -33,6 +33,14 @@ while [ $# != 0 ]; do
33 cmd_args="1" 33 cmd_args="1"
34 shift 34 shift
35 ;; 35 ;;
36 preset)
37 shift
38
39 action="$opt"
40 services="$1"
41 cmd_args="1"
42 shift
43 ;;
36 --root=*) 44 --root=*)
37 ROOT=${opt##--root=} 45 ROOT=${opt##--root=}
38 cmd_args="0" 46 cmd_args="0"
@@ -49,8 +57,16 @@ while [ $# != 0 ]; do
49 ;; 57 ;;
50 esac 58 esac
51done 59done
60if [ "$action" = "preset" -a "$service_file" = "" ]; then
61 services=$(for f in `find $ROOT/etc/systemd/system $ROOT/lib/systemd/system $ROOT/usr/lib/systemd/system -type f 2>1`; do basename $f; done)
62 services="$services $opt"
63 presetall=1
64fi
52 65
53for service in $services; do 66for service in $services; do
67 if [ "$presetall" = "1" ]; then
68 action="preset"
69 fi
54 if [ "$action" = "mask" ]; then 70 if [ "$action" = "mask" ]; then
55 if [ ! -d $ROOT/etc/systemd/system/ ]; then 71 if [ ! -d $ROOT/etc/systemd/system/ ]; then
56 mkdir -p $ROOT/etc/systemd/system/ 72 mkdir -p $ROOT/etc/systemd/system/
@@ -80,7 +96,17 @@ for service in $services; do
80 # If any new unit types are added to systemd they should be added 96 # If any new unit types are added to systemd they should be added
81 # to this regular expression. 97 # to this regular expression.
82 unit_types_re='\.\(service\|socket\|device\|mount\|automount\|swap\|target\|path\|timer\|snapshot\)$' 98 unit_types_re='\.\(service\|socket\|device\|mount\|automount\|swap\|target\|path\|timer\|snapshot\)$'
83 99 if [ "$action" = "preset" ]; then
100 action=`egrep -sh $service $ROOT/etc/systemd/user-preset/*.preset | cut -f1 -d' '`
101 if [ -z "$action" ]; then
102 globalpreset=`egrep -sh '\*' $ROOT/etc/systemd/user-preset/*.preset | cut -f1 -d' '`
103 if [ -n "$globalpreset" ]; then
104 action="$globalpreset"
105 else
106 action="enable"
107 fi
108 fi
109 fi
84 # create the required symbolic links 110 # create the required symbolic links
85 wanted_by=$(sed '/^WantedBy[[:space:]]*=/s,[^=]*=,,p;d' "$ROOT/$service_file" \ 111 wanted_by=$(sed '/^WantedBy[[:space:]]*=/s,[^=]*=,,p;d' "$ROOT/$service_file" \
86 | tr ',' '\n' \ 112 | tr ',' '\n' \