]> git.ipfire.org Git - thirdparty/openembedded/openembedded-core-contrib.git/commitdiff
dbus: add message-bus PACKAGECONFIG
authorRoss Burton <ross.burton@arm.com>
Tue, 5 Aug 2025 11:26:14 +0000 (12:26 +0100)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Thu, 7 Aug 2025 09:43:42 +0000 (10:43 +0100)
There's no need to build an actual message bus in native or nativesdk
environments, as if DBus is needed in those environments then it will be
used to connect to the existing session or system bus.

Add a PACKAGECONFIG for the message bus, and wrap the packaging logic
with a PACKAGECONFIG check.

Expat is only needed by the bus, so this reduces the mandatory build
dependencies in the native case.

This means we can merge the overridden do_install appends, as native and
nativesdk don't have the message bus enabled so they don't install
dbus-launch.

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
meta/recipes-core/dbus/dbus_1.16.2.bb

index 4fc590eb39e5f9ef50d7f75971a20135e6a91a8f..abe4196d9ad1c47e57f58e9d8e3b31291639e736 100644 (file)
@@ -27,12 +27,13 @@ EXTRA_OEMESON = "-Dxml_docs=disabled \
                 "
 
 PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'systemd x11', d)} \
-                   traditional-activation user-session \
+                   message-bus traditional-activation user-session \
                   ${@bb.utils.contains('PTEST_ENABLED', '1', 'tests', '', d)} \
                   "
 PACKAGECONFIG:class-native = ""
 PACKAGECONFIG:class-nativesdk = ""
 
+PACKAGECONFIG[message-bus] = "-Dmessage_bus=true,-Dmessage_bus=false,expat"
 PACKAGECONFIG[systemd] = "-Dsystemd=enabled -Dsystemd_system_unitdir=${systemd_system_unitdir},-Dsystemd=disabled,systemd"
 PACKAGECONFIG[x11] = "-Dx11_autolaunch=enabled,-Dx11_autolaunch=disabled, virtual/libx11 libsm"
 PACKAGECONFIG[traditional-activation] = "-Dtraditional_activation=true,-Dtraditional_activation=false"
@@ -42,7 +43,7 @@ PACKAGECONFIG[audit] = "-Dlibaudit=enabled,-Dlibaudit=disabled,audit"
 PACKAGECONFIG[selinux] = "-Dselinux=enabled,-Dselinux=disabled,libselinux"
 PACKAGECONFIG[tests] = "-Dmodular_tests=enabled -Dinstalled_tests=true,-Dmodular_tests=disabled -Dinstalled_tests=false,glib-2.0"
 
-DEPENDS = "expat virtual/libintl"
+DEPENDS = "virtual/libintl"
 RDEPENDS:${PN} += "${PN}-common ${PN}-tools"
 RDEPENDS:${PN}:class-native = ""
 
@@ -115,26 +116,31 @@ systemctl = '${bindir}/systemctl'
 EOF
 }
 
-do_install:append:class-target() {
-       if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then
-               install -d ${D}${sysconfdir}/init.d
-               sed 's:@bindir@:${bindir}:' < ${UNPACKDIR}/dbus-1.init > ${S}/dbus-1.init.sh
-               install -m 0755 ${S}/dbus-1.init.sh ${D}${sysconfdir}/init.d/dbus-1
-
-               install -d ${D}${sysconfdir}/default/volatiles
-               echo "d messagebus messagebus 0755 /run/dbus none" \
-                    > ${D}${sysconfdir}/default/volatiles/99_dbus
-
-               if ${@bb.utils.contains('PACKAGECONFIG', 'systemd', 'true', 'false', d)}; then
-                       # symlink dbus-1.service to /dev/null to "mask" the service, This ensures
-                       # that if systemd and sysv init systems are both enabled, systemd doesn't
-                       # start two system buses (one from init.d/dbus-1, one from dbus.service).
-                       ln -s /dev/null ${D}${systemd_system_unitdir}/dbus-1.service
+do_install:append() {
+       if ${@bb.utils.contains('PACKAGECONFIG', 'message-bus', 'true', 'false', d)}; then
+               if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then
+                       install -d ${D}${sysconfdir}/init.d
+                       sed 's:@bindir@:${bindir}:' < ${UNPACKDIR}/dbus-1.init > ${S}/dbus-1.init.sh
+                       install -m 0755 ${S}/dbus-1.init.sh ${D}${sysconfdir}/init.d/dbus-1
+
+                       install -d ${D}${sysconfdir}/default/volatiles
+                       echo "d messagebus messagebus 0755 /run/dbus none" \
+                           > ${D}${sysconfdir}/default/volatiles/99_dbus
+
+                       if ${@bb.utils.contains('PACKAGECONFIG', 'systemd', 'true', 'false', d)}; then
+                               # symlink dbus-1.service to /dev/null to "mask" the service, This ensures
+                               # that if systemd and sysv init systems are both enabled, systemd doesn't
+                               # start two system buses (one from init.d/dbus-1, one from dbus.service).
+                               ln -s /dev/null ${D}${systemd_system_unitdir}/dbus-1.service
+                       fi
                fi
-       fi
 
-       mkdir -p ${D}${localstatedir}/lib/dbus
-       chown messagebus:messagebus ${D}${localstatedir}/lib/dbus
+               mkdir -p ${D}${localstatedir}/lib/dbus
+               chown messagebus:messagebus ${D}${localstatedir}/lib/dbus
+       else
+               # This gets installed even if the bus is disabled
+               rm -rf ${D}${localstatedir}
+       fi
 
        if [ "${@bb.utils.contains('PACKAGECONFIG', 'traditional-activation', '1', '0', d)}" = "1" ]
        then
@@ -146,20 +152,6 @@ do_install:append:class-target() {
        rm -rf ${D}${runtimedir}
 }
 
-do_install:append:class-native() {
-       # dbus-launch has no X support so lets not install it in case the host
-       # has a more featured and useful version
-       rm -f ${D}${bindir}/dbus-launch
-}
-
-do_install:append:class-nativesdk() {
-       # dbus-launch has no X support so lets not install it in case the host
-       # has a more featured and useful version
-       rm -f ${D}${bindir}/dbus-launch
-
-       # Remove /run to avoid QA error
-       rm -rf ${D}${runtimedir}
-}
 BBCLASSEXTEND = "native nativesdk"
 
 CVE_PRODUCT += "d-bus_project:d-bus freedesktop:dbus freedesktop:libdbus"