| Message ID | 20260422193025.1263535-1-jhonata.poma@gmail.com |
|---|---|
| State | New |
| Headers | show |
| Series | [scarthgap] dbus: gate user-session PACKAGECONFIG on systemd in DISTRO_FEATURES | expand |
diff --git a/meta/recipes-core/dbus/dbus_1.14.10.bb b/meta/recipes-core/dbus/dbus_1.14.10.bb index 4fe7af7512..1b6dd0dad0 100644 --- a/meta/recipes-core/dbus/dbus_1.14.10.bb +++ b/meta/recipes-core/dbus/dbus_1.14.10.bb @@ -29,7 +29,7 @@ EXTRA_OECONF = "--disable-xml-docs \ EXTRA_OECONF:append:class-target = " SYSTEMCTL=${base_bindir}/systemctl" PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'systemd x11', d)} \ - user-session \ + ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'user-session', '', d)} \ " PACKAGECONFIG:class-native = "" PACKAGECONFIG:class-nativesdk = ""
On scarthgap images built without systemd in DISTRO_FEATURES, dbus still shipped dbus.socket and dbus.service under ${systemd_user_unitdir} (/usr/lib/systemd/user), because the 'user-session' PACKAGECONFIG was always enabled and passed --enable-user-session --with-systemduserunitdir=... to configure. In dbus-1.14.10 the user-session autoconf option (configure.ac and bus/Makefile.am 'if DBUS_ENABLE_USER_SESSION') only installs systemd user units; it has no non-systemd effect. Enabling it on a sysvinit image has no benefit and produces the stale unit files. Make user-session a systemd-gated PACKAGECONFIG by using bb.utils.contains in the default, so it is enabled when systemd is in DISTRO_FEATURES and disabled otherwise. No changes to the PACKAGECONFIG[user-session] or PACKAGECONFIG[systemd] entries are needed: --disable-user-session is passed on sysvinit builds, which prevents the configure/Makefile machinery from ever setting up the user-unit install step. This is the scarthgap equivalent of master commit a296b0623eb2 ("dbus: use the systemd class to handle the unit files"), adapted to the autotools 1.14.10 recipe. The master fix was broader because the meson 1.16.2 build handles unit-file install differently, which let that commit drop the manual do_install unit block, the systemctl mask postinst, and PACKAGE_WRITE_DEPS. On 1.14.10 those pieces are still needed; the minimal correct gate here is the user-session default. Fixes [YOCTO #15779] Signed-off-by: Jhonata Poma-Hansen <jhonata.poma@gmail.com> --- Build-verified on scarthgap (crops/poky:ubuntu-22.04), qemux86-64 core-image-minimal with DISTRO_FEATURES:remove = "systemd" and VIRTUAL-RUNTIME_init_manager = "sysvinit". After 'bitbake -c cleansstate dbus && bitbake -c package dbus': - packages-split for dbus/dbus-common/dbus-tools contains no files under /lib/systemd/system or /usr/lib/systemd/user. - /etc/init.d/dbus-1 is installed (packages-split/dbus/etc/init.d/). - The work tree contains only image/ (no imageno/ side-effect dir that would indicate --without-systemduserunitdir is silently redirecting installs outside ${D}). systemd-enabled images are unchanged: bb.utils.contains returns 'user-session' whenever systemd is in DISTRO_FEATURES, so the default PACKAGECONFIG matches the pre-patch value for that configuration and autotools receives the same flag set. meta/recipes-core/dbus/dbus_1.14.10.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)