--- a/config.h.in 2017-06-07 16:38:45.046910693 +0200 +++ b/config.h.in 2017-06-07 16:39:06.973911120 +0200 @@ -78,8 +78,8 @@ /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H -/* Build systemd code */ -#undef HAVE_SYSTEMD +/* Build systemd-login code */ +#undef HAVE_SYSTEMD_SD_LOGIN_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H --- a/configure.ac 2017-06-06 09:03:57.171355965 +0200 +++ b/configure.ac 2017-06-06 09:55:11.242384458 +0200 @@ -254,7 +254,6 @@ AS_HELP_STRING([--with-systemdsystemunitdir=DIR], [Directory for systemd service files]), [has_systemdsystemunitdir=$with_systemdsystemunitdir], [has_systemdsystemunitdir=$($PKG_CONFIG --variable=systemdsystemunitdir systemd)]) - AC_DEFINE(HAVE_SYSTEMD,1,[Build systemd code]) AC_SUBST([systemdsystemunitdir], [$has_systemdsystemunitdir]) fi AM_CONDITIONAL(HAVE_SYSTEMD, [test -n "$has_systemdsystemunitdir"]) @@ -267,6 +266,24 @@ AM_CONDITIONAL(ENABLE_OFFLINE_UPDATE, [test x$enable_systemd = xyes -a x$enable_offline_update = xyes]) dnl --------------------------------------------------------------------------- +dnl - Use elogind instead of systemd-login +dnl --------------------------------------------------------------------------- +AC_ARG_ENABLE(elogind, AS_HELP_STRING([--enable-elogind],[enable elogind session tracker]), + enable_elogind=$enableval,enable_elogind=no) +if test x$enable_elogind = xyes; then + PKG_CHECK_MODULES(ELOGIND, [libelogind >= 229.4], [have_elogind=yes], [have_elogind=no]) +else + have_elogind=no +fi + +dnl --------------------------------------------------------------------------- +dnl --- Is systemd/sd-login.h, either from systemd or elogind, available? +dnl --------------------------------------------------------------------------- +if test -n "$has_systemdsystemunitdir" -o "x$have_elogind" != "xno" ; then + AC_DEFINE(HAVE_SYSTEMD_SD_LOGIN_H,1,[Build systemd-login code]) +fi + +dnl --------------------------------------------------------------------------- dnl - Generate man pages ? (default enabled) dnl --------------------------------------------------------------------------- AC_ARG_ENABLE(man_pages, AS_HELP_STRING([--disable-man-pages],[Disable man pages generation]), enable_man_pages=$enableval) @@ -629,6 +644,7 @@ cflags: ${CFLAGS} cppflags: ${CPPFLAGS} Able to run locally: ${enable_local} + Use elogind: ${enable_elogind} Use systemd: ${enable_systemd} Enable offline update: ${enable_offline_update} Networking stacks: ${networking_apis} --- a/src/Makefile.am +++ b/src/Makefile.am @@ -9,6 +9,7 @@ AM_CPPFLAGS = \ $(SQLITE_CFLAGS) \ $(POLKIT_CFLAGS) \ $(PYTHON_CFLAGS) \ + $(ELOGIND_CFLAGS) \ $(SYSTEMD_CFLAGS) \ -DPACKAGE_LOCALE_DIR=\"$(localedir)\" \ -DBINDIR=\"$(bindir)\" \ @@ -100,6 +101,7 @@ packagekit_direct_LDADD = \ $(POLKIT_LIBS) \ $(GIO_LIBS) \ $(ARCHIVE_LIBS) \ + $(ELOGIND_LIBS) \ $(SYSTEMD_LIBS) packagekit_direct_LDFLAGS = \ @@ -128,6 +130,7 @@ packagekitd_LDADD = \ $(POLKIT_LIBS) \ $(GIO_LIBS) \ $(ARCHIVE_LIBS) \ + $(ELOGIND_LIBS) \ $(SYSTEMD_LIBS) packagekitd_LDFLAGS = \ @@ -153,6 +156,7 @@ pk_self_test_LDADD = \ $(POLKIT_LIBS) \ $(GIO_LIBS) \ $(ARCHIVE_LIBS) \ + $(ELOGIND_LIBS) \ $(SYSTEMD_LIBS) pk_self_test_CPPFLAGS = \ --- a/src/pk-engine.c 2017-06-06 09:12:23.828371176 +0200 +++ b/src/pk-engine.c 2017-06-06 09:55:47.426385545 +0200 @@ -98,7 +98,7 @@ guint owner_id; GDBusNodeInfo *introspection; GDBusConnection *connection; -#ifdef HAVE_SYSTEMD +#ifdef HAVE_SYSTEMD_SD_LOGIN_H GDBusProxy *logind_proxy; gint logind_fd; #endif @@ -281,7 +281,7 @@ static void pk_engine_inhibit (PkEngine *engine) { -#ifdef HAVE_SYSTEMD +#ifdef HAVE_SYSTEMD_SD_LOGIN_H g_autoptr(GError) error = NULL; g_autoptr(GUnixFDList) out_fd_list = NULL; g_autoptr(GVariant) res = NULL; @@ -331,7 +331,7 @@ static void pk_engine_uninhibit (PkEngine *engine) { -#ifdef HAVE_SYSTEMD +#ifdef HAVE_SYSTEMD_SD_LOGIN_H if (engine->priv->logind_fd == 0) return; g_debug ("closed logind fd %i", engine->priv->logind_fd); @@ -1830,7 +1830,7 @@ } } -#ifdef HAVE_SYSTEMD +#ifdef HAVE_SYSTEMD_SD_LOGIN_H /** * pk_engine_proxy_logind_cb: **/ @@ -1872,7 +1872,7 @@ /* save copy for emitting signals */ engine->priv->connection = g_object_ref (connection); -#ifdef HAVE_SYSTEMD +#ifdef HAVE_SYSTEMD_SD_LOGIN_H /* connect to logind */ g_dbus_proxy_new (connection, G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES, @@ -2031,7 +2031,7 @@ if (engine->priv->connection != NULL) g_object_unref (engine->priv->connection); -#ifdef HAVE_SYSTEMD +#ifdef HAVE_SYSTEMD_SD_LOGIN_H /* uninhibit */ if (engine->priv->logind_fd != 0) close (engine->priv->logind_fd); --- a/src/pk-dbus.c 2017-06-06 09:12:13.254370858 +0200 +++ b/src/pk-dbus.c 2017-06-06 10:09:17.249409857 +0200 @@ -27,7 +27,7 @@ #include #include -#ifdef HAVE_SYSTEMD +#ifdef HAVE_SYSTEMD_SD_LOGIN_H #include #endif @@ -177,7 +177,7 @@ return cmdline; } -#ifdef HAVE_SYSTEMD +#ifdef HAVE_SYSTEMD_SD_LOGIN_H /** * pk_dbus_get_session_systemd: **/ @@ -220,7 +220,7 @@ pk_dbus_get_session (PkDbus *dbus, const gchar *sender) { gchar *session = NULL; -#ifndef HAVE_SYSTEMD +#ifndef HAVE_SYSTEMD_SD_LOGIN_H g_autoptr(GError) error = NULL; #endif guint pid; @@ -250,7 +250,7 @@ } /* get session from systemd or ConsoleKit */ -#ifdef HAVE_SYSTEMD +#ifdef HAVE_SYSTEMD_SD_LOGIN_H session = pk_dbus_get_session_systemd (pid); #else /* get session from ConsoleKit */