summaryrefslogtreecommitdiffstats
path: root/meta-oe/classes/systemd.bbclass
diff options
context:
space:
mode:
Diffstat (limited to 'meta-oe/classes/systemd.bbclass')
-rw-r--r--meta-oe/classes/systemd.bbclass34
1 files changed, 15 insertions, 19 deletions
diff --git a/meta-oe/classes/systemd.bbclass b/meta-oe/classes/systemd.bbclass
index db35717f6..a2c8ddf0e 100644
--- a/meta-oe/classes/systemd.bbclass
+++ b/meta-oe/classes/systemd.bbclass
@@ -1,5 +1,7 @@
1DEPENDS_append = " systemd-systemctl-native" 1DEPENDS_append = " systemd-systemctl-native"
2 2
3SYSTEMD_AUTO_ENABLE ??= "enable"
4
3systemd_postinst() { 5systemd_postinst() {
4OPTS="" 6OPTS=""
5 7
@@ -7,9 +9,9 @@ if [ -n "$D" ]; then
7 OPTS="--root=$D" 9 OPTS="--root=$D"
8fi 10fi
9 11
10systemctl $OPTS enable ${SYSTEMD_SERVICE} 12systemctl $OPTS ${SYSTEMD_AUTO_ENABLE} ${SYSTEMD_SERVICE}
11 13
12if [ -z "$D" ]; then 14if [ -z "$D" -a ${SYSTEMD_AUTO_ENABLE} = "enable" ]; then
13 systemctl start ${SYSTEMD_SERVICE} 15 systemctl start ${SYSTEMD_SERVICE}
14fi 16fi
15} 17}
@@ -24,6 +26,12 @@ systemd_postrm() {
24systemctl disable ${SYSTEMD_SERVICE} 26systemctl disable ${SYSTEMD_SERVICE}
25} 27}
26 28
29def get_package_var(d, var, pkg):
30 val = (d.getVar('%s_%s' % (var, pkg), d, 1) or "").strip()
31 if val == "":
32 val = (d.getVar(var, d, 1) or "").strip()
33 return val
34
27def systemd_after_parse(d): 35def systemd_after_parse(d):
28 def systemd_check_vars(): 36 def systemd_check_vars():
29 if d.getVar('BB_WORKERCONTEXT', True) is not None: 37 if d.getVar('BB_WORKERCONTEXT', True) is not None:
@@ -40,25 +48,15 @@ def systemd_after_parse(d):
40 if pkg_systemd.find("-systemd") == -1: 48 if pkg_systemd.find("-systemd") == -1:
41 if pkg_systemd != d.getVar('PN', 1): 49 if pkg_systemd != d.getVar('PN', 1):
42 raise bb.build.FuncFailed, \ 50 raise bb.build.FuncFailed, \
43 "\n\n%s: %s in SYSTEMD_PACKAGES does not match <existing-package>-systemd or ${PN} (deprecated)" % \ 51 "\n\n%s: %s in SYSTEMD_PACKAGES does not match <existing-package>-systemd or ${PN}" % \
44 (bb_filename, pkg_systemd) 52 (bb_filename, pkg_systemd)
45 else:
46 # Only complain if recipe lacks native systemd support
47 native_systemd_support = d.getVar('NATIVE_SYSTEMD_SUPPORT', 1) or ""
48 if native_systemd_support == "":
49 bb.warn("%s: it is recommended to set SYSTEMD_PACKAGES as <existing-package>-systemd" % bb_filename)
50 else: 53 else:
51 pkg_systemd_base = pkg_systemd.replace('-systemd', '') 54 pkg_systemd_base = pkg_systemd.replace('-systemd', '')
52 if pkg_systemd_base not in packages: 55 if pkg_systemd_base not in packages:
53 raise bb.build.FuncFailed, \ 56 raise bb.build.FuncFailed, \
54 "\n\n%s: %s in SYSTEMD_PACKAGES does not match <existing-package>-systemd or ${PN} (deprecated)" % \ 57 "\n\n%s: %s in SYSTEMD_PACKAGES does not match <existing-package>-systemd or ${PN}" % \
55 ( bb_filename, pkg_systemd) 58 ( bb_filename, pkg_systemd)
56 59
57 # check SYSTEMD_SERVICE
58 for pkg_systemd in systemd_pkgs.split():
59 service_pkg = 'SYSTEMD_SERVICE' + "_" + pkg_systemd
60 systemd_services = d.getVar(service_pkg, 1) or d.getVar('SYSTEMD_SERVICE', 1) or ""
61
62 # prepend systemd-packages not already included 60 # prepend systemd-packages not already included
63 def systemd_create_package(pkg_systemd): 61 def systemd_create_package(pkg_systemd):
64 packages = d.getVar('PACKAGES', 1) 62 packages = d.getVar('PACKAGES', 1)
@@ -160,8 +158,7 @@ python populate_packages_prepend () {
160 systemd_packages = d.getVar('SYSTEMD_PACKAGES', 1) 158 systemd_packages = d.getVar('SYSTEMD_PACKAGES', 1)
161 has_exactly_one_service = len(systemd_packages.split()) == 1 159 has_exactly_one_service = len(systemd_packages.split()) == 1
162 if has_exactly_one_service: 160 if has_exactly_one_service:
163 systemd_services = d.getVar('SYSTEMD_SERVICE' + "_" + systemd_packages, 1) or d.getVar('SYSTEMD_SERVICE', 1) 161 has_exactly_one_service = len(get_package_var(d, 'SYSTEMD_SERVICE', systemd_packages).split()) == 1
164 has_exactly_one_service = len(systemd_services.split()) == 1
165 162
166 keys = 'Also' # Conflicts?? 163 keys = 'Also' # Conflicts??
167 if has_exactly_one_service: 164 if has_exactly_one_service:
@@ -169,8 +166,7 @@ python populate_packages_prepend () {
169 keys = 'Also Conflicts' 166 keys = 'Also Conflicts'
170 # scan for all in SYSTEMD_SERVICE[] 167 # scan for all in SYSTEMD_SERVICE[]
171 for pkg_systemd in systemd_packages.split(): 168 for pkg_systemd in systemd_packages.split():
172 systemd_services = d.getVar('SYSTEMD_SERVICE' + "_" + pkg_systemd, 1) or d.getVar('SYSTEMD_SERVICE', 1) 169 for service in get_package_var(d, 'SYSTEMD_SERVICE', pkg_systemd).split():
173 for service in systemd_services.split():
174 path_found = '' 170 path_found = ''
175 for path in searchpaths.split(): 171 for path in searchpaths.split():
176 if os.path.exists('${D}' + path + service): 172 if os.path.exists('${D}' + path + service):
@@ -201,7 +197,7 @@ python populate_packages_prepend () {
201 # run all modifications once when creating package 197 # run all modifications once when creating package
202 if os.path.exists('${D}'): 198 if os.path.exists('${D}'):
203 for pkg_systemd in d.getVar('SYSTEMD_PACKAGES', 1).split(): 199 for pkg_systemd in d.getVar('SYSTEMD_PACKAGES', 1).split():
204 if d.getVar('SYSTEMD_SERVICE' + "_" + pkg_systemd, 1) and d.getVar('SYSTEMD_SERVICE' + "_" + pkg_systemd, 1).strip(): 200 if get_package_var(d, 'SYSTEMD_SERVICE', pkg_systemd) != "":
205 systemd_generate_package_scripts(pkg_systemd) 201 systemd_generate_package_scripts(pkg_systemd)
206 systemd_add_rdepends(pkg_systemd) 202 systemd_add_rdepends(pkg_systemd)
207 systemd_check_services() 203 systemd_check_services()