]> git.ipfire.org Git - thirdparty/openembedded/openembedded-core.git/commitdiff
dbus: add traditional-activation PACKAGECONFIG
authorWeisser, Pascal.ext <Pascal.Weisser.ext@karlstorz.com>
Tue, 22 Jul 2025 11:32:50 +0000 (13:32 +0200)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Thu, 24 Jul 2025 09:47:27 +0000 (10:47 +0100)
Add traditional-activation PACKAGECONFIG to DBus recipe in order to allow
users to enable or disable traditional DBus service activation.

DBus service activation refers to automatically starting an application
when a DBus message is sent to a service provided by that application.
Traditionally, this is done by the DBus-daemon, thus, the term traditional
here. On systems using systemd, systemd can do this, instead.

On some systems it might be of interest to disable the traditional service
activation in order to ensure that services are always started via systemd.

Per default, traditional service activation is enabled for DBus. Thus, the
traditional-activation PACKAGECONFIG is added to the default PACKAGECONFIG.
Otherwise, we might introduce a breaking change here.

The binary dbus-daemon-launch-helper isn't created in case DBus is built
with traditional service activation disabled, so we change its attributes
only when traditional service activation is turned on.

Signed-off-by: Weisser, Pascal <pascal.weisser.ext@karlstorz.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
meta/recipes-core/dbus/dbus_1.16.2.bb

index 65f7028b4f49c8f5b94e3f5b4e3e61893de7be38..aabc4c3efb8e84df7a5813496dc98cf001b9c343 100644 (file)
@@ -28,7 +28,7 @@ EXTRA_OEMESON = "-Dxml_docs=disabled \
                 "
 
 PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'systemd x11', d)} \
-                   user-session \
+                   traditional-activation user-session \
                   ${@bb.utils.contains('PTEST_ENABLED', '1', 'tests', '', d)} \
                   "
 PACKAGECONFIG:class-native = ""
@@ -36,6 +36,7 @@ PACKAGECONFIG:class-nativesdk = ""
 
 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"
 PACKAGECONFIG[user-session] = "-Duser_session=true -Dsystemd_user_unitdir=${systemd_user_unitdir},-Duser_session=false"
 PACKAGECONFIG[verbose-mode] = "-Dverbose_mode=true,-Dverbose_mode=false,,"
 PACKAGECONFIG[audit] = "-Dlibaudit=enabled,-Dlibaudit=disabled,audit"
@@ -152,8 +153,11 @@ do_install:append:class-target() {
 
        chown messagebus:messagebus ${D}${localstatedir}/lib/dbus
 
-       chown root:messagebus ${D}${libexecdir}/dbus-daemon-launch-helper
-       chmod 4755 ${D}${libexecdir}/dbus-daemon-launch-helper
+       if [ "${@bb.utils.contains('PACKAGECONFIG', 'traditional-activation', '1', '0', d)}" = "1" ]
+       then
+               chown root:messagebus ${D}${libexecdir}/dbus-daemon-launch-helper
+               chmod 4755 ${D}${libexecdir}/dbus-daemon-launch-helper
+       fi
 
        # Remove Red Hat initscript
        rm -rf ${D}${sysconfdir}/rc.d