Re: [oe] [meta-networking] [PATCH v2 1/2] mctp: split mctp tools and mctpd into separate recipes
Khem Raj <[email protected]>
| Newsgroups | org.openembedded.lists.openembedded-devel |
|---|---|
| Message-ID | <CAMKF1sqKEhVdUExdeUEQSft5SSixeh2-F+1S06SFgkZDrFWgpg@mail.gmail.com> |
On Thu, Aug 13, 2026 at 9:14 PM James Lee <[email protected]> wrote: > I believe that would work, but think it's important to have a clear > split at this point. > > The mctp utilities and mctpd daemon have different use-cases and > dependencies, and do not depend on each other. The split allows users > to install the mctp utilities on systemd distros without automatically > adding the daemon. It also makes it clear that the mctp package does > not depend on systemd or useradd. > The output can be packaged to be more granular such that daemon goes into package of its own, would that work ? > > On Thu, 2026-08-13 at 06:53 -0700, Khem Raj wrote: > > Can we do something like > > inherit_defer ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', > > 'useradd', '', d)} > > > > On Tue, Aug 11, 2026 at 12:25 AM James Lee via lists.openembedded.org > > <[email protected]> wrote: > > > 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 [email protected] > > > --- > > > 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 > > > > > > 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..f049be646b > > > --- /dev/null > > > +++ b/meta-networking/recipes-support/mctp/mctpd_2.5.bb > > > @@ -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} > > > +} >