diff options
Diffstat (limited to 'meta-oe/classes/systemd.bbclass')
-rw-r--r-- | meta-oe/classes/systemd.bbclass | 34 |
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 @@ | |||
1 | DEPENDS_append = " systemd-systemctl-native" | 1 | DEPENDS_append = " systemd-systemctl-native" |
2 | 2 | ||
3 | SYSTEMD_AUTO_ENABLE ??= "enable" | ||
4 | |||
3 | systemd_postinst() { | 5 | systemd_postinst() { |
4 | OPTS="" | 6 | OPTS="" |
5 | 7 | ||
@@ -7,9 +9,9 @@ if [ -n "$D" ]; then | |||
7 | OPTS="--root=$D" | 9 | OPTS="--root=$D" |
8 | fi | 10 | fi |
9 | 11 | ||
10 | systemctl $OPTS enable ${SYSTEMD_SERVICE} | 12 | systemctl $OPTS ${SYSTEMD_AUTO_ENABLE} ${SYSTEMD_SERVICE} |
11 | 13 | ||
12 | if [ -z "$D" ]; then | 14 | if [ -z "$D" -a ${SYSTEMD_AUTO_ENABLE} = "enable" ]; then |
13 | systemctl start ${SYSTEMD_SERVICE} | 15 | systemctl start ${SYSTEMD_SERVICE} |
14 | fi | 16 | fi |
15 | } | 17 | } |
@@ -24,6 +26,12 @@ systemd_postrm() { | |||
24 | systemctl disable ${SYSTEMD_SERVICE} | 26 | systemctl disable ${SYSTEMD_SERVICE} |
25 | } | 27 | } |
26 | 28 | ||
29 | def 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 | |||
27 | def systemd_after_parse(d): | 35 | def 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() |