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}
> > > +}
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.