diff options
| -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 | ||
