new file mode 100644
@@ -0,0 +1,11 @@
+HOMEPAGE = "http://www.github.com/CodeConstruct/mctp"
+SECTION = "net"
+LICENSE = "GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=4cc91856b08b094b4f406a29dc61db21"
+
+SRC_URI = "git://github.com/CodeConstruct/mctp;branch=main;protocol=https;tag=v${PV}"
+SRCREV = "07c7a5d526f686da89bc9ae9cad917e46652b272"
+
+inherit meson pkgconfig
+
+EXTRA_OEMESON = "-Dtests=false"
@@ -1,45 +1,5 @@
-SUMMARY = "Management Component Control Protocol utilities"
-HOMEPAGE = "http://www.github.com/CodeConstruct/mctp"
-SECTION = "net"
-LICENSE = "GPL-2.0-only"
+require mctp.inc
-LIC_FILES_CHKSUM = "file://LICENSE;md5=4cc91856b08b094b4f406a29dc61db21"
+SUMMARY = "Management Component Transport Protocol (MCTP) utilities"
-SRCREV = "07c7a5d526f686da89bc9ae9cad917e46652b272"
-
-SRC_URI = "git://github.com/CodeConstruct/mctp;branch=main;protocol=https;tag=v${PV}"
-
-
-inherit meson pkgconfig systemd
-
-EXTRA_OEMESON = " \
- -Dtests=false \
-"
-
-PACKAGECONFIG ??= " \
- ${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)} \
-"
-
-# mctpd will only be built if pkg-config detects libsystemd; in which case
-# we'll want to declare the dep and install the service.
-PACKAGECONFIG[systemd] = ",,systemd,libsystemd"
-SYSTEMD_SERVICE:${PN} = "mctpd.service mctp.target mctp-local.target"
-SYSTEMD_AUTO_ENABLE:${PN} = "enable"
-
-do_install:append () {
- if ${@bb.utils.contains('PACKAGECONFIG', 'systemd', 'true', 'false', d)}; then
- install -d ${D}${systemd_system_unitdir}
- install -m 0644 ${S}/conf/mctpd.service \
- ${D}${systemd_system_unitdir}/mctpd.service
- install -m 0644 ${S}/conf/*.target \
- ${D}${systemd_system_unitdir}/
- install -d ${D}${datadir}/dbus-1/system.d
- install -m 0644 ${S}/conf/mctpd-dbus.conf \
- ${D}${datadir}/dbus-1/system.d/mctpd.conf
- fi
-}
-
-FILES:${PN} += " \
- ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', \
- '${datadir}/dbus-1/system.d/mctpd.conf', '', d)} \
-"
+MESON_TARGET = "mctp mctp-client"
new file mode 100644
@@ -0,0 +1,28 @@
+require mctp.inc
+
+SUMMARY = "Management Component Transport Protocol (MCTP) control protocol daemon"
+
+inherit systemd
+
+do_install:append () {
+ install -d ${D}${systemd_system_unitdir}
+ install -m 0644 ${S}/conf/mctpd.service \
+ ${D}${systemd_system_unitdir}/mctpd.service
+ install -m 0644 ${S}/conf/*.target \
+ ${D}${systemd_system_unitdir}/
+ install -d ${D}${datadir}/dbus-1/system.d
+ install -m 0644 ${S}/conf/mctpd-dbus.conf \
+ ${D}${datadir}/dbus-1/system.d/mctpd.conf
+}
+
+SYSTEMD_SERVICE:${PN} = "mctpd.service mctp.target mctp-local.target"
+
+DEPENDS += "systemd"
+
+# Meson adds mctp utility binaries to FILES and do_install(), which cannot be
+# overriden by MESON_TARGET. Override FILES and remove binaries to correct.
+FILES:${PN} = "${datadir}/dbus-1/system.d/mctpd.conf ${sbindir}/mctpd"
+
+do_install:append () {
+ rm -r ${D}${bindir}
+}
The current mctp recipe relies on the upstream's conditional build and install of the mctpd binary if systemd is present, only building the mctp utility otherwise. Future upstream changes allowing running as non-root require more control over the build process. We will need to add a new system user when mctpd is built. Adding a user requires inheriting useradd, which assumes at least one user will be created, failing the recipe otherwise. Building without mctpd would then cause the recipe to fail as conditionally inheriting useradd seems infeasible. To make useradd available for the new upstream release, split the recipe into "mctp" for the utilities and "mctpd" for the daemon, isolating the systemd dependency to "mctpd". This makes the two parts of the source explicitly selectable from user choice, rather than auto-detecting based on the presence of systemd. It will also let us express the useradd rules only when they're needed for the mctpd installation in the upcoming version bump. Signed-off-by: James Lee james@codeconstruct.com.au --- meta-networking/recipes-support/mctp/mctp.inc | 11 +++++ .../recipes-support/mctp/mctp_2.5.bb | 46 ++----------------- .../recipes-support/mctp/mctpd_2.5.bb | 28 +++++++++++ 3 files changed, 42 insertions(+), 43 deletions(-) create mode 100644 meta-networking/recipes-support/mctp/mctp.inc create mode 100644 meta-networking/recipes-support/mctp/mctpd_2.5.bb