summaryrefslogtreecommitdiff
path: root/pcr/accountsservice-elogind/accountsservice-enable-elogind.patch
blob: 5c3a9507223465640d3f27c56c39d27bcd8eb4f6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
--- a/configure.ac	2017-01-10 14:41:49.303134338 +0100
+++ b/configure.ac	2017-01-10 14:49:17.627133630 +0100
@@ -264,6 +264,49 @@
 dnl ---------------------------------------------------------------------------
 AC_PATH_PROG([XSLTPROC], [xsltproc])
 
+# elogind
+
+AC_ARG_ENABLE([elogind],
+              AS_HELP_STRING([--enable-elogind], [Use elogind]),
+              [enable_elogind=$enableval],
+              [enable_elogind=auto])
+
+if test "x$enable_elogind" != "xno"; then
+   PKG_CHECK_MODULES(ELOGIND, [libelogind >= 219],
+                              [have_elogind=yes],
+                              [have_elogind=no])
+else
+   have_elogind=no
+fi
+
+AC_MSG_CHECKING([whether to use elogind])
+
+if test "x$enable_elogind" = "xauto" ; then
+        if test "x$have_elogind" = "xno" ; then
+                enable_elogind=no
+        else
+                enable_elogind=yes
+        fi
+fi
+
+AC_MSG_RESULT($enable_elogind)
+
+if test "x$enable_elogind" = "xyes"; then
+        if test "x$have_elogind" = "xno"; then
+                AC_MSG_ERROR([elogind support explicitly required, but libelogind not found])
+        fi
+fi
+AC_SUBST(ELOGIND_CFLAGS)
+AC_SUBST(ELOGIND_LIBS)
+
+LIBACCOUNTSSERVICE_LIBS="$LIBACCOUNTSSERVICE_LIBS $ELOGIND_LIBS"
+LIBACCOUNTSSERVICE_CFLAGS="$LIBACCOUNTSSERVICE_CFLAGS $ELOGIND_CFLAGS"
+
+if test "x$have_elogind" != "xno" ; then
+        AC_DEFINE(WITH_ELOGIND, 1, [Define to enable elogind support])
+fi
+
+
 # systemd
 
 AC_ARG_ENABLE([systemd],
@@ -272,8 +315,14 @@
               [enable_systemd=auto])
 
 if test x$enable_systemd != xno; then
+   if test "x$have_elogind" != "xno"; then
+           AC_MSG_NOTICE([Systemd support requested, but elogind found])
+           have_systemd=no
+           enable_systemd=no
+   else
    PKG_CHECK_MODULES(SYSTEMD, [libsystemd >= 186],
 			                     [have_systemd=yes], [have_systemd=no])
+   fi
 else
    have_systemd=no
 fi
--- a/src/libaccountsservice/act-user-manager.c	2016-11-08 09:11:28.489353842 +0100
+++ b/src/libaccountsservice/act-user-manager.c	2016-11-08 09:18:47.768357775 +0100
@@ -42,7 +42,12 @@
 #include <gio/gunixinputstream.h>
 
 #ifdef WITH_SYSTEMD
 #include <systemd/sd-login.h>
+#else
+#ifdef WITH_ELOGIND
+#include <elogind/sd-login.h>
+#define WITH_SYSTEMD 1 /* Do not clutter the sources */
+#endif /* check against elogind substitution
 
 /* check if logind is running */
 #define LOGIND_RUNNING() (access("/run/systemd/seats/", F_OK) >= 0)