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 | <CAMKF1srfUdNC=gxPzeEKZmRK9msT3wEUKJpJfFi8o4i7B5GqSg@mail.gmail.com> |
On Thu, Aug 13, 2026 at 9:53 PM James Lee <[email protected]> wrote: > On Thu, 2026-08-13 at 21:45 -0700, Khem Raj wrote: > > > > > > 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 ? > > > > I believe that would break the inherit_defer approach? > Cant be sure. Looking forward to you experiment with it :) > > > > > > > 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} > > > > > +} >