diff options
Diffstat (limited to 'meta/classes')
-rw-r--r-- | meta/classes/systemd.bbclass | 41 |
1 files changed, 19 insertions, 22 deletions
diff --git a/meta/classes/systemd.bbclass b/meta/classes/systemd.bbclass index c8f4fdec88..3935685c18 100644 --- a/meta/classes/systemd.bbclass +++ b/meta/classes/systemd.bbclass | |||
@@ -16,45 +16,30 @@ python __anonymous() { | |||
16 | # from doing any work so that pure-systemd images don't have redundant init | 16 | # from doing any work so that pure-systemd images don't have redundant init |
17 | # files. | 17 | # files. |
18 | if bb.utils.contains('DISTRO_FEATURES', 'systemd', True, False, d): | 18 | if bb.utils.contains('DISTRO_FEATURES', 'systemd', True, False, d): |
19 | d.appendVar("DEPENDS", " systemd-systemctl-native") | ||
20 | d.appendVar("PACKAGE_WRITE_DEPS", " systemd-systemctl-native") | ||
21 | if not bb.utils.contains('DISTRO_FEATURES', 'sysvinit', True, False, d): | 19 | if not bb.utils.contains('DISTRO_FEATURES', 'sysvinit', True, False, d): |
22 | d.setVar("INHIBIT_UPDATERCD_BBCLASS", "1") | 20 | d.setVar("INHIBIT_UPDATERCD_BBCLASS", "1") |
23 | } | 21 | } |
24 | 22 | ||
25 | systemd_postinst() { | 23 | systemd_postinst() { |
26 | OPTS="" | ||
27 | |||
28 | if [ -n "$D" ]; then | ||
29 | OPTS="--root=$D" | ||
30 | fi | ||
31 | |||
32 | if type systemctl >/dev/null 2>/dev/null; then | 24 | if type systemctl >/dev/null 2>/dev/null; then |
33 | if [ -z "$D" ]; then | 25 | if [ -z "$D" ]; then |
34 | systemctl daemon-reload | 26 | systemctl daemon-reload |
35 | fi | 27 | systemctl preset "${SYSTEMD_SERVICE_ESCAPED}" |
36 | |||
37 | systemctl $OPTS ${SYSTEMD_AUTO_ENABLE} ${SYSTEMD_SERVICE_ESCAPED} | ||
38 | 28 | ||
39 | if [ -z "$D" -a "${SYSTEMD_AUTO_ENABLE}" = "enable" ]; then | 29 | if [ "${SYSTEMD_AUTO_ENABLE}" = "enable" ]; then |
40 | systemctl --no-block restart ${SYSTEMD_SERVICE_ESCAPED} | 30 | systemctl --no-block restart "${SYSTEMD_SERVICE_ESCAPED}" |
31 | fi | ||
41 | fi | 32 | fi |
42 | fi | 33 | fi |
43 | } | 34 | } |
44 | 35 | ||
45 | systemd_prerm() { | 36 | systemd_prerm() { |
46 | OPTS="" | ||
47 | |||
48 | if [ -n "$D" ]; then | ||
49 | OPTS="--root=$D" | ||
50 | fi | ||
51 | |||
52 | if type systemctl >/dev/null 2>/dev/null; then | 37 | if type systemctl >/dev/null 2>/dev/null; then |
53 | if [ -z "$D" ]; then | 38 | if [ -z "$D" ]; then |
54 | systemctl stop ${SYSTEMD_SERVICE_ESCAPED} | 39 | systemctl stop "${SYSTEMD_SERVICE_ESCAPED}" |
55 | fi | ||
56 | 40 | ||
57 | systemctl $OPTS disable ${SYSTEMD_SERVICE_ESCAPED} | 41 | systemctl disable "${SYSTEMD_SERVICE_ESCAPED}" |
42 | fi | ||
58 | fi | 43 | fi |
59 | } | 44 | } |
60 | 45 | ||
@@ -177,12 +162,24 @@ python systemd_populate_packages() { | |||
177 | else: | 162 | else: |
178 | bb.fatal("SYSTEMD_SERVICE_%s value %s does not exist" % (pkg_systemd, service)) | 163 | bb.fatal("SYSTEMD_SERVICE_%s value %s does not exist" % (pkg_systemd, service)) |
179 | 164 | ||
165 | def systemd_create_presets(pkg): | ||
166 | action = get_package_var(d, 'SYSTEMD_AUTO_ENABLE', pkg) | ||
167 | if action not in ("enable", "disable"): | ||
168 | bb.fatal("SYSTEMD_AUTO_ENABLE_%s '%s' is not 'enable' or 'disable'" % (pkg, action)) | ||
169 | presetf = oe.path.join(d.getVar("PKGD"), d.getVar("systemd_unitdir"), "system-preset/98-%s.preset" % pkg) | ||
170 | bb.utils.mkdirhier(os.path.dirname(presetf)) | ||
171 | with open(presetf, 'a') as fd: | ||
172 | for service in d.getVar('SYSTEMD_SERVICE_%s' % pkg).split(): | ||
173 | fd.write("%s %s\n" % (action,service)) | ||
174 | d.appendVar("FILES_%s" % pkg, ' ' + oe.path.join(d.getVar("systemd_unitdir"), "system-preset/98-%s.preset" % pkg)) | ||
175 | |||
180 | # Run all modifications once when creating package | 176 | # Run all modifications once when creating package |
181 | if os.path.exists(d.getVar("D")): | 177 | if os.path.exists(d.getVar("D")): |
182 | for pkg in d.getVar('SYSTEMD_PACKAGES').split(): | 178 | for pkg in d.getVar('SYSTEMD_PACKAGES').split(): |
183 | systemd_check_package(pkg) | 179 | systemd_check_package(pkg) |
184 | if d.getVar('SYSTEMD_SERVICE_' + pkg): | 180 | if d.getVar('SYSTEMD_SERVICE_' + pkg): |
185 | systemd_generate_package_scripts(pkg) | 181 | systemd_generate_package_scripts(pkg) |
182 | systemd_create_presets(pkg) | ||
186 | systemd_check_services() | 183 | systemd_check_services() |
187 | } | 184 | } |
188 | 185 | ||