All of lore.kernel.org
 help / color / mirror / Atom feed
From: James Lee <james@codeconstruct.com.au>
To: openembedded-devel@lists.openembedded.org
Cc: andrew@codeconstruct.com.au, jk@codeconstruct.com.au
Subject: [oe] [meta-networking] [PATCH v3 1/2] mctp: split mctp tools and mctpd into separate recipes
Date: Fri, 14 Aug 2026 15:17:00 +0800	[thread overview]
Message-ID: <20260814071701.3733870-1-james@codeconstruct.com.au> (raw)

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.
This will allow the mctpd daemon to be installed without the mctp
utilities and allow the utilities to be installed without the daemon in
distros without systemd. It will also let us express the useradd rules
only when they're needed for the mctpd installation in the upcoming
version bump.

The mctp/mctpd split cannot be done with different packages within the
same recipe. It would require the systemd and useradd classes be added
to inherit_defer only when mctpd is to be built, and the library
functions cannot be used to detect which packages are built.

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         | 29 ++++++++++++
 3 files changed, 43 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

diff --git a/meta-networking/recipes-support/mctp/mctp.inc b/meta-networking/recipes-support/mctp/mctp.inc
new file mode 100644
index 0000000000..98225cffea
--- /dev/null
+++ b/meta-networking/recipes-support/mctp/mctp.inc
@@ -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"
diff --git a/meta-networking/recipes-support/mctp/mctp_2.5.bb b/meta-networking/recipes-support/mctp/mctp_2.5.bb
index a8787d3f2b..5811495c66 100644
--- a/meta-networking/recipes-support/mctp/mctp_2.5.bb
+++ b/meta-networking/recipes-support/mctp/mctp_2.5.bb
@@ -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"
diff --git a/meta-networking/recipes-support/mctp/mctpd_2.5.bb b/meta-networking/recipes-support/mctp/mctpd_2.5.bb
new file mode 100644
index 0000000000..a0f2f778a3
--- /dev/null
+++ b/meta-networking/recipes-support/mctp/mctpd_2.5.bb
@@ -0,0 +1,29 @@
+require mctp.inc
+
+SUMMARY = "Management Component Transport Protocol (MCTP) control protocol daemon"
+
+inherit systemd features_check
+
+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"
+REQUIRED_DISTRO_FEATURES = "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}
+}
-- 
2.47.3



             reply	other threads:[~2026-08-14  7:17 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-14  7:17 James Lee [this message]
2026-08-14  7:17 ` [oe] [meta-networking] [PATCH v3 2/2] mctp: upgrade 2.5 -> 2.6 James Lee

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260814071701.3733870-1-james@codeconstruct.com.au \
    --to=james@codeconstruct.com.au \
    --cc=andrew@codeconstruct.com.au \
    --cc=jk@codeconstruct.com.au \
    --cc=openembedded-devel@lists.openembedded.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.