Submitted by:            DJ Lucas (dj_AT_linuxfromscratch_DOT_org)
Date:                    2018-12-18
Initial Package Version: 1.12.12
Upstream Status:         Submitted
Origin:                  https://raw.githubusercontent.com/gentoo/gentoo/master/sys-apps/dbus/files/dbus-enable-elogind.patch
Description:             Allows detection and use of elogind

diff -Naurp dbus-1.12.12-orig/configure.ac dbus-1.12.12/configure.ac
--- dbus-1.12.12-orig/configure.ac	2018-12-04 07:56:54.000000000 -0600
+++ dbus-1.12.12/configure.ac	2018-12-17 23:59:18.407740101 -0600
@@ -206,6 +206,7 @@ AC_ARG_ENABLE(inotify, AS_HELP_STRING([-
 AC_ARG_ENABLE(kqueue, AS_HELP_STRING([--enable-kqueue],[build with kqueue support]),enable_kqueue=$enableval,enable_kqueue=auto)
 AC_ARG_ENABLE(console-owner-file, AS_HELP_STRING([--enable-console-owner-file],[enable console owner file]),enable_console_owner_file=$enableval,enable_console_owner_file=auto)
 AC_ARG_ENABLE(launchd, AS_HELP_STRING([--enable-launchd],[build with launchd auto-launch support]),enable_launchd=$enableval,enable_launchd=auto)
+AC_ARG_ENABLE(elogind, AS_HELP_STRING([--enable-elogind],[build with elogind user seat support]),enable_elogind=$enableval,enable_elogind=auto)
 AC_ARG_ENABLE(systemd, AS_HELP_STRING([--enable-systemd],[build with systemd at_console support]),enable_systemd=$enableval,enable_systemd=auto)
 
 AC_ARG_WITH(session-socket-dir, AS_HELP_STRING([--with-session-socket-dir=[dirname]],[Where to put sockets for the per-login-session message bus]))
@@ -1078,6 +1079,24 @@ fi
 
 AM_CONDITIONAL(HAVE_CONSOLE_OWNER_FILE, test x$have_console_owner_file = xyes)
 
+dnl elogind detection
+if test x$enable_elogind = xno ; then
+    have_elogind=no;
+else
+    PKG_CHECK_MODULES([ELOGIND],
+        [libelogind >= 209],
+        [have_elogind=yes],
+        [have_elogind=no])
+fi
+
+if test x$have_elogind = xyes; then
+    AC_DEFINE(HAVE_ELOGIND,1,[Have elogind])
+fi
+
+if test x$enable_elogind = xyes -a x$have_elogind != xyes ; then
+    AC_MSG_ERROR([Explicitly requested elogind support, but libelogind not found])
+fi
+
 dnl systemd detection
 if test x$enable_systemd = xno ; then
     have_systemd=no;
@@ -1184,7 +1203,7 @@ if test x$with_valgrind != xno; then
 fi
 
 #### Set up final flags
-LIBDBUS_LIBS="$THREAD_LIBS $NETWORK_libs $SYSTEMD_LIBS"
+LIBDBUS_LIBS="$THREAD_LIBS $NETWORK_libs $SYSTEMD_LIBS $ELOGIND_LIBS"
 AC_SUBST([LIBDBUS_LIBS])
 
 ### X11 detection
@@ -1826,6 +1845,7 @@ echo "
         Building AppArmor support: ${have_apparmor}
         Building inotify support: ${have_inotify}
         Building kqueue support:  ${have_kqueue}
+        Building elogind support: ${have_elogind}
         Building systemd support: ${have_systemd}
         Building X11 code:        ${have_x11}
         Building Doxygen docs:    ${enable_doxygen_docs}
diff -Naurp dbus-1.12.12-orig/dbus/dbus-userdb-util.c dbus-1.12.12/dbus/dbus-userdb-util.c
--- dbus-1.12.12-orig/dbus/dbus-userdb-util.c	2017-10-30 07:26:18.000000000 -0500
+++ dbus-1.12.12/dbus/dbus-userdb-util.c	2018-12-17 23:59:18.406740100 -0600
@@ -32,6 +32,9 @@
 #ifdef HAVE_SYSTEMD
 #include <systemd/sd-login.h>
 #endif
+#if HAVE_ELOGIND
+#include <elogind/sd-login.h>
+#endif
 
 /**
  * @addtogroup DBusInternalsUtils
@@ -54,7 +57,7 @@ _dbus_is_console_user (dbus_uid_t uid,
   const DBusUserInfo *info;
   dbus_bool_t result = FALSE;
 
-#ifdef HAVE_SYSTEMD
+#if defined(HAVE_SYSTEMD) || defined(HAVE_ELOGIND)
   /* check if we have logind */
   if (access ("/run/systemd/seats/", F_OK) >= 0)
     {
