From: Dudemanguy Date: Fri, 20 Dec 2024 16:53:28 +0000 (-0600) Subject: build: add elogind support X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=79e7e69aaa4bc0849dcd372bcb278f784fe5fed9;p=thirdparty%2Fdbus.git build: add elogind support Checking the uid of the user seat also works if elogind is used. Add this as an option to the build and make it mutually exclusive with enabling systemd. --- diff --git a/dbus/dbus-userdb-util.c b/dbus/dbus-userdb-util.c index 736244955..a7b611309 100644 --- a/dbus/dbus-userdb-util.c +++ b/dbus/dbus-userdb-util.c @@ -42,6 +42,10 @@ #include #endif +#ifdef HAVE_ELOGIND +#include +#endif + /** * @addtogroup DBusInternalsUtils * @{ @@ -67,7 +71,7 @@ dbus_bool_t _dbus_is_console_user (dbus_uid_t uid, DBusError *error) { -#ifdef HAVE_SYSTEMD +#if defined(HAVE_SYSTEMD) || defined(HAVE_ELOGIND) /* check if we have logind */ if (access ("/run/systemd/seats/", F_OK) >= 0) { diff --git a/dbus/meson.build b/dbus/meson.build index 4c9f7be17..a5946b690 100644 --- a/dbus/meson.build +++ b/dbus/meson.build @@ -24,6 +24,7 @@ dbus_dependencies = [ adt_libs, network_libs, systemd, + elogind, valgrind.partial_dependency(compile_args: true), ] diff --git a/meson.build b/meson.build index 451da9114..ae63f45d8 100644 --- a/meson.build +++ b/meson.build @@ -535,6 +535,17 @@ else endif data_config.set('SYSTEMCTL', systemctl) +elogind_opt = get_option('elogind') +if use_systemd + if elogind_opt.enabled() + error('-Dsystemd and -Delogind are mutually exclusive') + endif + elogind = dependency('', required: false) +else + elogind = dependency('libelogind', version: '>=209', required: elogind_opt) +endif +use_elogind = elogind.found() +config.set('HAVE_ELOGIND', use_elogind) use_traditional_activation = message_bus and get_option('traditional_activation') @@ -1378,6 +1389,7 @@ summary_dict += { 'Building inotify support': use_inotify, 'Building kqueue support': use_kqueue, 'Building systemd support': use_systemd, + 'Building elogind support': use_elogind, 'Traditional activation': use_traditional_activation, 'Building X11 code': config.get('DBUS_BUILD_X11'), 'Building Doxygen docs': doxygen.found(), diff --git a/meson_options.txt b/meson_options.txt index 079b04da8..38ff03220 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -95,6 +95,13 @@ option( description: 'Enable tests that require insecure extra code in the library and binaries' ) +option( + 'elogind', + type: 'feature', + value: 'disabled', + description: 'Use elogind for detecting user sessions' +) + option( 'epoll', type: 'feature',