From e36358c598e688e308b43299e686fc8fa057cf84 Mon Sep 17 00:00:00 2001 From: Brad Bishop Date: Wed, 8 Jun 2016 22:03:59 -0400 Subject: Support multiple systemd service files Enhance obmc-phosphor-systemd such that an array of service/template socket files in SYSTEMD_SERVICES_${PN} works. Signed-off-by: Brad Bishop --- .../classes/obmc-phosphor-systemd.bbclass | 56 ++++++++++++++++++---- .../host-ipmi-hw-example.service | 9 ---- .../host-ipmi-hw-example/host-ipmi-hw.service | 9 ++++ 3 files changed, 56 insertions(+), 18 deletions(-) delete mode 100644 meta-phosphor/common/recipes-phosphor/host-ipmid/host-ipmi-hw-example/host-ipmi-hw-example.service create mode 100644 meta-phosphor/common/recipes-phosphor/host-ipmid/host-ipmi-hw-example/host-ipmi-hw.service (limited to 'meta-phosphor') diff --git a/meta-phosphor/classes/obmc-phosphor-systemd.bbclass b/meta-phosphor/classes/obmc-phosphor-systemd.bbclass index 12e0bc168..b07174f9f 100644 --- a/meta-phosphor/classes/obmc-phosphor-systemd.bbclass +++ b/meta-phosphor/classes/obmc-phosphor-systemd.bbclass @@ -1,14 +1,52 @@ -# Common code for Phosphor OpenBMC systemd services. - +# Common code for systemd based services. +# +# Prior to inheriting this class, recipes can define services like this: +# +# SYSTEMD_SERVICE_${PN} = "foo.service bar.socket baz@.service" +# +# and these files will be added to the main package if they exist. +# +# Alternatively this class can just be inherited and +# ${BPN}.service will be added to the main package. inherit systemd -SYSTEMD_SERVICE_${PN} = "${BPN}.service" -SRC_URI += " \ - file://${BPN}.service \ - " + +python() { + bpn = d.getVar('BPN', True) + searchpaths = d.getVar('FILESPATH', True) + + services = d.getVar('SYSTEMD_SERVICE_' + bpn, True) + + if services: + services = services.split() + else: + services = [bpn + '.service'] + + for s in services: + file = s + path = bb.utils.which(searchpaths, file) + if os.path.isfile(path): + d.appendVar('SRC_URI', ' file://' + file) + d.appendVar( + 'FILES_' + bpn, ' ' + + d.getVar('systemd_system_unitdir', True) + file) + d.appendVar('OBMC_SYSTEMD_SERVICES', ' ' + file) + if file not in (d.getVar('SYSTEMD_SERVICE_' + bpn, True) or "").split(): + d.appendVar('SYSTEMD_SERVICE_' + bpn, ' ' + file) + else: + bb.error("Could not find service file: %s" % file) +} do_install_append() { - # install systemd unit files - install -d ${D}${systemd_unitdir}/system - install -m 0644 ${WORKDIR}/${BPN}.service ${D}${systemd_unitdir}/system + # install systemd service/socket/template files + if [ "${OBMC_SYSTEMD_SERVICES}" ]; then + install -d ${D}${systemd_system_unitdir} + fi + for s in ${OBMC_SYSTEMD_SERVICES}; do + install -m 0644 ${WORKDIR}/$s ${D}${systemd_system_unitdir} + sed -i -e 's,@BASE_BINDIR@,${base_bindir},g' \ + -e 's,@BINDIR@,${bindir},g' \ + -e 's,@SBINDIR@,${sbindir},g' \ + ${D}${systemd_system_unitdir}/$s + done } diff --git a/meta-phosphor/common/recipes-phosphor/host-ipmid/host-ipmi-hw-example/host-ipmi-hw-example.service b/meta-phosphor/common/recipes-phosphor/host-ipmid/host-ipmi-hw-example/host-ipmi-hw-example.service deleted file mode 100644 index e15d8d71b..000000000 --- a/meta-phosphor/common/recipes-phosphor/host-ipmid/host-ipmi-hw-example/host-ipmi-hw-example.service +++ /dev/null @@ -1,9 +0,0 @@ -[Unit] -Description=Phosphor OpenBMC host IPMI to DBUS example implementation - -[Service] -Restart=always -ExecStart=/usr/sbin/host-ipmi-hw - -[Install] -WantedBy=multi-user.target diff --git a/meta-phosphor/common/recipes-phosphor/host-ipmid/host-ipmi-hw-example/host-ipmi-hw.service b/meta-phosphor/common/recipes-phosphor/host-ipmid/host-ipmi-hw-example/host-ipmi-hw.service new file mode 100644 index 000000000..e15d8d71b --- /dev/null +++ b/meta-phosphor/common/recipes-phosphor/host-ipmid/host-ipmi-hw-example/host-ipmi-hw.service @@ -0,0 +1,9 @@ +[Unit] +Description=Phosphor OpenBMC host IPMI to DBUS example implementation + +[Service] +Restart=always +ExecStart=/usr/sbin/host-ipmi-hw + +[Install] +WantedBy=multi-user.target -- cgit v1.2.1 From 10c2f855e927bcfdaedbf93681f2734792f0675e Mon Sep 17 00:00:00 2001 From: Brad Bishop Date: Wed, 8 Jun 2016 22:27:31 -0400 Subject: Turn on socket activation for rest-dbus Defer starting of rest-dbus until a client connects. Signed-off-by: Brad Bishop --- .../common/recipes-phosphor/rest-dbus/files/rest-dbus.service | 3 --- .../common/recipes-phosphor/rest-dbus/files/rest-dbus.socket | 8 ++++++++ meta-phosphor/common/recipes-phosphor/rest-dbus/rest-dbus.bb | 5 +++-- 3 files changed, 11 insertions(+), 5 deletions(-) create mode 100644 meta-phosphor/common/recipes-phosphor/rest-dbus/files/rest-dbus.socket (limited to 'meta-phosphor') diff --git a/meta-phosphor/common/recipes-phosphor/rest-dbus/files/rest-dbus.service b/meta-phosphor/common/recipes-phosphor/rest-dbus/files/rest-dbus.service index 79a848a43..5ad582f4b 100644 --- a/meta-phosphor/common/recipes-phosphor/rest-dbus/files/rest-dbus.service +++ b/meta-phosphor/common/recipes-phosphor/rest-dbus/files/rest-dbus.service @@ -4,6 +4,3 @@ Description=DBUS introspecting REST server. [Service] Restart=always ExecStart=/usr/sbin/rest-dbus - -[Install] -WantedBy=multi-user.target diff --git a/meta-phosphor/common/recipes-phosphor/rest-dbus/files/rest-dbus.socket b/meta-phosphor/common/recipes-phosphor/rest-dbus/files/rest-dbus.socket new file mode 100644 index 000000000..89f99b8c3 --- /dev/null +++ b/meta-phosphor/common/recipes-phosphor/rest-dbus/files/rest-dbus.socket @@ -0,0 +1,8 @@ +[Unit] +Description=DBUS introspecting REST server socket. + +[Socket] +ListenStream=3000 + +[Install] +WantedBy=sockets.target diff --git a/meta-phosphor/common/recipes-phosphor/rest-dbus/rest-dbus.bb b/meta-phosphor/common/recipes-phosphor/rest-dbus/rest-dbus.bb index 7f990aaa3..afee21c5e 100644 --- a/meta-phosphor/common/recipes-phosphor/rest-dbus/rest-dbus.bb +++ b/meta-phosphor/common/recipes-phosphor/rest-dbus/rest-dbus.bb @@ -16,11 +16,12 @@ RDEPENDS_${PN} += " \ pyphosphor \ " +SYSTEMD_SERVICE_${PN} += "rest-dbus.service rest-dbus.socket" + SRC_URI += " \ git://github.com/openbmc/rest-dbus.git \ - file://rest-dbus.service \ " -SRCREV = "64077101d9f2b6e51c897db82ffc0a399a34d15b" +SRCREV = "5a65d2f605494d5c308171ba4fd1ab08d7b3a91d" S = "${WORKDIR}/git" -- cgit v1.2.1