From 79e7e69aaa4bc0849dcd372bcb278f784fe5fed9 Mon Sep 17 00:00:00 2001 From: Dudemanguy Date: Fri, 20 Dec 2024 10:53:28 -0600 Subject: [PATCH] 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. --- dbus/dbus-userdb-util.c | 6 +++++- dbus/meson.build | 1 + meson.build | 12 ++++++++++++ meson_options.txt | 7 +++++++ 4 files changed, 25 insertions(+), 1 deletion(-) diff --git a/dbus/dbus-userdb-util.c b/dbus/dbus-userdb-util.c index 73624495..a7b61130 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 4c9f7be1..a5946b69 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 451da911..ae63f45d 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 079b04da..38ff0322 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',