--- /dev/null
+From ee8a65b3fd7636a60f8a2b2e509376cbbd8326cb Mon Sep 17 00:00:00 2001
+From: Sven Eden <yamakuzure@gmx.net>
+Date: Tue, 11 Dec 2018 16:59:28 +0100
+Subject: [PATCH 2/2] Add elogind support
+
+Closes: https://bugs.gentoo.org/620948
+Signed-off-by: Ettore Di Giacinto <mudler@gentoo.org>
+---
+ configure.ac | 20 +++++++++++++++++++-
+ src/Makefile.am | 4 ++++
+ src/pk-dbus.c | 8 ++++----
+ src/pk-engine.c | 12 ++++++------
+ 4 files changed, 33 insertions(+), 11 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 737c1d4dc..0778c57d3 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -216,7 +216,6 @@ if test x$enable_systemd = xyes; then
+ 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"])
+@@ -228,6 +227,24 @@ AC_ARG_ENABLE(offline-update, AS_HELP_STRING([--enable-offline-update],[enable o
+ enable_offline_update=$enableval,enable_offline_update=yes)
+ 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 ---------------------------------------------------------------------------
+@@ -590,6 +607,7 @@ echo "
+ cflags: ${CFLAGS}
+ cppflags: ${CPPFLAGS}
+ Able to run locally: ${enable_local}
++ Use elogind: ${enable_elogind}
+ Use systemd: ${enable_systemd}
+ Enable offline update: ${enable_offline_update}
+ GStreamer plugin: ${build_gstreamer_plugin}
+diff --git a/src/Makefile.am b/src/Makefile.am
+index 24c9a0b9a..468f31d04 100644
+--- 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 = \
+diff --git a/src/pk-dbus.c b/src/pk-dbus.c
+index 0cf512f38..37cc1d83c 100644
+--- a/src/pk-dbus.c
++++ b/src/pk-dbus.c
+@@ -27,7 +27,7 @@
+ #include <glib.h>
+ #include <gio/gio.h>
+
+-#ifdef HAVE_SYSTEMD
++#ifdef HAVE_SYSTEMD_SD_LOGIN_H
+ #include <systemd/sd-login.h>
+ #endif
+
+@@ -177,7 +177,7 @@ pk_dbus_get_cmdline (PkDbus *dbus, const gchar *sender)
+ return cmdline;
+ }
+
+-#ifdef HAVE_SYSTEMD
++#ifdef HAVE_SYSTEMD_SD_LOGIN_H
+ static gchar *
+ pk_dbus_make_logind_session_id (const gchar *session)
+ {
+@@ -218,7 +218,7 @@ gchar *
+ 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;
+@@ -248,7 +248,7 @@ pk_dbus_get_session (PkDbus *dbus, const gchar *sender)
+ }
+
+ /* get session from systemd or ConsoleKit */
+-#ifdef HAVE_SYSTEMD
++#ifdef HAVE_SYSTEMD_SD_LOGIN_H
+ session = pk_dbus_get_session_systemd (pid);
+ if (session == NULL)
+ g_warning ("failed to get session for pid %u", pid);
+diff --git a/src/pk-engine.c b/src/pk-engine.c
+index f63058fbc..7ea87a448 100644
+--- a/src/pk-engine.c
++++ b/src/pk-engine.c
+@@ -98,7 +98,7 @@ struct PkEnginePrivate
+ guint owner_id;
+ GDBusNodeInfo *introspection;
+ GDBusConnection *connection;
+-#ifdef HAVE_SYSTEMD
++#ifdef HAVE_SYSTEMD_SD_LOGIN_H
+ GDBusProxy *logind_proxy;
+ gint logind_fd;
+ #endif
+@@ -256,7 +256,7 @@ pk_engine_emit_offline_property_changed (PkEngine *engine,
+ 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;
+@@ -303,7 +303,7 @@ pk_engine_inhibit (PkEngine *engine)
+ 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);
+@@ -1701,7 +1701,7 @@ pk_engine_offline_method_call (GDBusConnection *connection_, const gchar *sender
+ }
+ }
+
+-#ifdef HAVE_SYSTEMD
++#ifdef HAVE_SYSTEMD_SD_LOGIN_H
+ static void
+ pk_engine_proxy_logind_cb (GObject *source_object,
+ GAsyncResult *res,
+@@ -1737,7 +1737,7 @@ pk_engine_on_bus_acquired_cb (GDBusConnection *connection,
+ /* 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,
+@@ -1883,7 +1883,7 @@ pk_engine_finalize (GObject *object)
+ 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);
+--
+2.19.2
+
--- /dev/null
+# Copyright 1999-2018 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="6"
+
+# PackageKit supports 3.2+, but entropy and portage backends are untested
+PYTHON_COMPAT=( python2_7 )
+VALA_USE_DEPEND="vapigen"
+
+inherit autotools bash-completion-r1 multilib python-single-r1 systemd vala xdg
+
+MY_PN="PackageKit"
+MY_P=${MY_PN}-${PV}
+
+DESCRIPTION="Manage packages in a secure way using a cross-distro and cross-architecture API"
+HOMEPAGE="https://www.freedesktop.org/software/PackageKit/"
+SRC_URI="https://www.freedesktop.org/software/${MY_PN}/releases/${MY_P}.tar.xz"
+
+LICENSE="GPL-2"
+SLOT="0/18"
+KEYWORDS="~alpha ~amd64 ~arm ~mips ~ppc ~ppc64 ~x86"
+IUSE="cron command-not-found elogind +introspection entropy systemd test vala"
+REQUIRED_USE="
+ ${PYTHON_REQUIRED_USE}
+ ?? ( elogind systemd )
+ vala? ( introspection )
+ entropy? ( $(python_gen_useflags 'python2*' ) )
+"
+
+# While not strictly needed, consolekit is the alternative to systemd-login
+# or elogind to get current session's user.
+COMMON_DEPEND="
+ >=app-shells/bash-completion-2
+ dev-db/sqlite:3
+ >=dev-libs/dbus-glib-0.74
+ >=dev-libs/glib-2.54.0:2
+ >=sys-auth/polkit-0.114
+ >=sys-apps/dbus-1.3.0
+ ${PYTHON_DEPS}
+ elogind? ( >=sys-auth/elogind-229.4 )
+ introspection? ( >=dev-libs/gobject-introspection-0.9.9:= )
+ systemd? ( >=sys-apps/systemd-213 )
+"
+# vala-common needed for eautoreconf
+DEPEND="${COMMON_DEPEND}
+ app-text/docbook-xsl-stylesheets
+ >=dev-cpp/glibmm-2.4
+ dev-libs/libxml2:2
+ dev-libs/libxslt
+ dev-libs/vala-common
+ dev-util/glib-utils
+ >=dev-util/gtk-doc-am-1.11
+ >=dev-util/intltool-0.35.0
+ sys-devel/gettext
+ virtual/pkgconfig
+ vala? ( $(vala_depend) )
+"
+RDEPEND="${COMMON_DEPEND}
+ >=app-portage/layman-2[${PYTHON_USEDEP}]
+ || (
+ >=sys-apps/portage-2.2[${PYTHON_USEDEP}]
+ sys-apps/portage-mgorny[${PYTHON_USEDEP}]
+ )
+ entropy? ( >=sys-apps/entropy-234[${PYTHON_USEDEP}] )
+ !systemd? ( !elogind? ( sys-auth/consolekit ) )
+"
+
+PATCHES=(
+ # Fixes QA Notices:
+ # - https://github.com/gentoo/gentoo/pull/1760
+ # - https://github.com/hughsie/PackageKit/issues/143
+ "${FILESDIR}"/${PV}-cache-qafix.patch
+
+ # Adds elogind support:
+ # - https://bugs.gentoo.org/show_bug.cgi?id=620948
+ # - https://github.com/hughsie/PackageKit/pull/299
+ "${FILESDIR}"/${PV}-elogind-support.patch
+
+ # From master
+ "${FILESDIR}"/${PV}-use-autotool-python.patch
+ "${FILESDIR}"/${PV}-add-missing-config.h.patch
+)
+
+S="${WORKDIR}/${MY_P}"
+
+src_prepare() {
+ # Disable unittests not working with portage backend
+ # console: requires terminal input
+ sed -e 's:^\(.*/packagekit-glib2/control\)://\1:' \
+ -e 's:^\(.*/packagekit-glib2/transaction-list\)://\1:' \
+ -e 's:^\(.*/packagekit-glib2/client"\)://\1:' \
+ -e 's:^\(.*/packagekit-glib2/package-sack\)://\1:' \
+ -e 's:^\(.*/packagekit-glib2/task\)://\1:' \
+ -e 's:^\(.*/packagekit-glib2/console\)://\1:' \
+ -i lib/packagekit-glib2/pk-test-daemon.c || die
+ sed -e 's:^\(.*/packagekit/spawn\)://\1:' \
+ -e 's:^\(.*/packagekit/transaction-db\)://\1:' \
+ -e 's:^\(.*/packagekit/backend\)://\1:' \
+ -i src/pk-self-test.c || die
+
+ eapply_user
+ use vala && vala_src_prepare
+ xdg_src_prepare
+
+ # Needed by elogind patch
+ eautoreconf
+}
+
+src_configure() {
+ econf \
+ --disable-gstreamer-plugin \
+ --disable-gtk-doc \
+ --disable-gtk-module \
+ --disable-schemas-compile \
+ --disable-static \
+ --enable-bash-completion \
+ --enable-man-pages \
+ --enable-nls \
+ --enable-portage \
+ --localstatedir=/var \
+ $(use_enable command-not-found) \
+ $(use_enable cron) \
+ $(use_enable elogind) \
+ $(use_enable entropy) \
+ $(use_enable introspection) \
+ $(use_enable systemd) \
+ $(use_enable test daemon-tests) \
+ $(use_enable test local) \
+ $(use_enable vala) \
+ --with-systemdsystemunitdir="$(systemd_get_systemunitdir)"
+}
+
+src_install() {
+ python_fix_shebang backends/portage/portageBackend.py
+
+ emake DESTDIR="${D}" install
+ find "${D}" -name '*.la' -delete || die
+
+ dodoc AUTHORS ChangeLog MAINTAINERS NEWS README
+}