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',