SystemD service management support
cover SystemD service management support
The following changes since commit 120753e7437bc893462356ef153b67d38f7f696e:
php 5.3.6: import from OE classic (2011-11-03 15:02:20 +0100)
are available in the git repository at:
git://github.com/OSSystems/meta-oe master
https://github.com/OSSystems/meta-oe/tree/master
Otavio Salvador (3):
systemd-systemctl-native: add a systemctl wrapper systemd.bbclass: make easier handle service enabling
connman: refactor systemd packaging
meta-oe/classes/systemd.bbclass | 78 ++++++++++++++++++++ meta-oe/recipes-connectivity/connman/connman.inc | 24 +----- .../recipes-connectivity/connman/connman_0.77.bb | 2 +- .../systemd/systemd-systemctl-native.bb | 13 +++ .../systemd/systemd-systemctl-native/systemctl | 51 +++++++++++++ 5 files changed, 148 insertions(+), 20 deletions(-) create mode 100644 meta-oe/classes/systemd.bbclass create mode 100644 meta-oe/recipes-core/systemd/systemd-systemctl-native.bb create mode 100755 meta-oe/recipes-core/systemd/systemd-systemctl-native/systemctl
Signature · 1 line
1.7.2.5
PATCH 1/3 systemd-systemctl-native: add a systemctl wrapper
The wrapper allows for enabling services at rootfs generation thus allowing systemd to be used in ready-only filesystems.
--- .../systemd/systemd-systemctl-native.bb | 13 +++++ .../systemd/systemd-systemctl-native/systemctl | 51 ++++++++++++++++++++ 2 files changed, 64 insertions(+), 0 deletions(-) create mode 100644 meta-oe/recipes-core/systemd/systemd-systemctl-native.bb create mode 100755 meta-oe/recipes-core/systemd/systemd-systemctl-native/systemctl
meta-oe/recipes-core/systemd/systemd-systemctl-native.bb new file +13 -0
@@ -0,0 +1,13 @@ +DESCRIPTION = "Wrapper to enable of systemd services" + +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=3f40d7994397109285ec7b81fdeb3b58" + +inherit native + +SRC_URI = "file://systemctl" + +do_install() { + install -d ${D}${bindir} + install -m 0755 ${WORKDIR}/systemctl ${D}${bindir} +}
meta-oe/recipes-core/systemd/systemd-systemctl-native/systemctl new file +51 -0
51 lines not on this page · raw message
Signature · 1 line
1.7.2.5
PATCH 2/3 systemd.bbclass: make easier handle service enabling
In reply to Otavio SalvadorThis generates the postinst/prerm/postrm routines for the package specified in SYSTEMD_PACKAGES avoding code duplication and centralizing the handling of it for easy maintainence work.
--- meta-oe/classes/systemd.bbclass | 78 +++++++++++++++++++++++++++++++++++++++ 1 files changed, 78 insertions(+), 0 deletions(-) create mode 100644 meta-oe/classes/systemd.bbclass
meta-oe/classes/systemd.bbclass new file +78 -0
@@ -0,0 +1,78 @@ +SYSTEMDPN ?= "${PN}" + +DEPENDS_append = " systemd-systemctl-native" +RDEPENDS_${SYSTEMDPN}_append = " systemd" + +systemd_postinst() { +OPTS="" + +if [ -n "$D" ]; then + OPTS="--root=$D" +fi + +systemctl $OPTS enable ${SYSTEMD_SERVICE} + +if [ -z "$D" ]; then + systemctl start ${SYSTEMD_SERVICE} +fi +} + +systemd_prerm() { +if [ -z "$D" ]; then + systemctl stop ${SYSTEMD_SERVICE} +fi +} + +systemd_postrm() { +systemctl disable ${SYSTEMD_SERVICE} +} + +def systemd_after_parse(d): + if bb.data.getVar('SYSTEMD_PACKAGES', d) == None: + if bb.data.getVar('SYSTEMD_SERVICE', d) == None: + raise bb.build.FuncFailed, "%s inherits systemd but doesn't set SYSTEMD_SERVICE" % bb.data.getVar('FILE', d) + +python __anonymous() { + systemd_after_parse(d) +} + +python populate_packages_prepend () { + def systemd_package(pkg): + bb.debug(1, 'adding systemd calls to postinst/postrm for %s' % pkg) + localdata = bb.data.createCopy(d) + overrides = bb.data.getVar("OVERRIDES", localdata, 1) + bb.data.setVar("OVERRIDES", "%s:%s" % (pkg, overrides), localdata) + bb.data.update_data(localdata) + + """ + systemd postinst is appended here because pkg_postinst may require to + execute on the target. Not doing so may cause systemd postinst invoked + twice to cause unwanted warnings. + """ + postinst = bb.data.getVar('pkg_postinst', localdata, 1) + if not postinst: + postinst = '#!/bin/sh\n' + postinst += bb.data.getVar('systemd_postinst', localdata, 1) + bb.data.setVar('pkg_postinst_%s' % pkg, postinst, d) + + prerm = bb.data.getVar('pkg_prerm', localdata, 1) + if not prerm: + prerm = '#!/bin/sh\n' + prerm += bb.data.getVar('systemd_prerm', localdata, 1) + bb.data.setVar('pkg_prerm_%s' % pkg, prerm, d) + + postrm = bb.data.getVar('pkg_postrm', localdata, 1) + if not postrm: + postrm = '#!/bin/sh\n' + postrm += bb.data.getVar('systemd_postrm', localdata, 1) + bb.data.setVar('pkg_postrm_%s' % pkg, postrm, d) + + pkgs = bb.data.getVar('SYSTEMD_PACKAGES', d, 1) + if pkgs == None: + pkgs = bb.data.getVar('SYSTEMDPN', d, 1) + packages = (bb.data.getVar('PACKAGES', d, 1) or "").split() + if not pkgs in packages and packages != []: + pkgs = packages[0] + for pkg in pkgs.split(): + systemd_package(pkg) +}
Signature · 1 line
1.7.2.5
PATCH 3/3 connman: refactor systemd packaging
In reply to Otavio SalvadorThis changes the recipe to use systemd.bbclass to avoid duplicating code and also fix the rdepends of connman-systemd on connman.
--- meta-oe/recipes-connectivity/connman/connman.inc | 24 ++++--------------- .../recipes-connectivity/connman/connman_0.77.bb | 2 +- 2 files changed, 6 insertions(+), 20 deletions(-)
meta-oe/recipes-connectivity/connman/connman.inc +5 -19
@@ -31,9 +31,12 @@ EXTRA_OECONF += "\ INITSCRIPT_NAME = "connman" INITSCRIPT_PARAMS = "start 05 5 2 . stop 22 0 1 6 ." +SYSTEMD_PACKAGES = "${PN}-systemd" +SYSTEMD_SERVICE_${PN}-systemd = "connman.service" + PARALLEL_MAKE = "" -inherit autotools pkgconfig update-rc.d +inherit autotools pkgconfig update-rc.d systemd do_configure_append() { ln -sf . include/connman
@@ -84,24 +87,7 @@ FILES_${PN} = "${bindir}/* ${sbindir}/* ${libexecdir}/* ${libdir}/lib*.so.* \ PACKAGES =+ "${PN}-systemd" # Package up systemd files FILES_${PN}-systemd += "${base_libdir}/systemd" - -pkg_postinst_connman-systemd() { - # can't do this offline - if [ "x$D" != "x" ]; then - exit 1 - fi - - systemctl enable connman.service -} - -pkg_postrm_connman-systemd() { - # can't do this offline - if [ "x$D" != "x" ]; then - exit 1 - fi - - systemctl disable connman.service -} +RDEPENDS_${PN}-systemd += "${PN}" # Needed when using DNS proxy feature RRECOMMENDS_${PN} += "dnsmasq-dbus"
meta-oe/recipes-connectivity/connman/connman_0.77.bb +1 -1
@@ -1,5 +1,5 @@ require connman.inc -PR = "r2" +PR = "r3" EXTRA_OECONF += "\ --disable-gtk-doc \
Signature · 1 line
1.7.2.5