summaryrefslogtreecommitdiffstats
path: root/source/l/ConsoleKit2
diff options
context:
space:
mode:
author Patrick J Volkerding <volkerdi@slackware.com>2016-06-30 20:26:57 +0000
committer Eric Hameleers <alien@slackware.com>2018-05-31 23:31:18 +0200
commitd31c50870d0bee042ce660e445c9294a59a3a65b (patch)
tree6bfc0de3c95267b401b620c2c67859557dc60f97 /source/l/ConsoleKit2
parent76fc4757ac91ac7947a01fb7b53dddf9a78a01d1 (diff)
downloadcurrent-d31c50870d0bee042ce660e445c9294a59a3a65b.tar.gz
current-d31c50870d0bee042ce660e445c9294a59a3a65b.tar.xz
Slackware 14.2slackware-14.2
Thu Jun 30 20:26:57 UTC 2016 Slackware 14.2 x86_64 stable is released! The long development cycle (the Linux community has lately been living in "interesting times", as they say) is finally behind us, and we're proud to announce the release of Slackware 14.2. The new release brings many updates and modern tools, has switched from udev to eudev (no systemd), and adds well over a hundred new packages to the system. Thanks to the team, the upstream developers, the dedicated Slackware community, and everyone else who pitched in to help make this release a reality. The ISOs are off to be replicated, a 6 CD-ROM 32-bit set and a dual-sided 32-bit/64-bit x86/x86_64 DVD. Please consider supporting the Slackware project by picking up a copy from store.slackware.com. We're taking pre-orders now, and offer a discount if you sign up for a subscription. Have fun! :-)
Diffstat (limited to 'source/l/ConsoleKit2')
-rwxr-xr-xsource/l/ConsoleKit2/ConsoleKit2.SlackBuild157
-rw-r--r--source/l/ConsoleKit2/doinst.sh27
-rw-r--r--source/l/ConsoleKit2/patches/0001-Revert-Minor-code-refactoring.patch477
-rw-r--r--source/l/ConsoleKit2/patches/0002-Fix-some-libdir-scripts-stuff-missed-in-4d87a25ea0af.patch42
-rw-r--r--source/l/ConsoleKit2/patches/0003-Filter-out-the-kdm-user.patch29
-rw-r--r--source/l/ConsoleKit2/patches/0004-Apply-overlooked-prefix-lib-libdir-substitution.patch22
-rw-r--r--source/l/ConsoleKit2/rc.consolekit34
-rw-r--r--source/l/ConsoleKit2/slack-desc19
8 files changed, 807 insertions, 0 deletions
diff --git a/source/l/ConsoleKit2/ConsoleKit2.SlackBuild b/source/l/ConsoleKit2/ConsoleKit2.SlackBuild
new file mode 100755
index 000000000..4f4e39490
--- /dev/null
+++ b/source/l/ConsoleKit2/ConsoleKit2.SlackBuild
@@ -0,0 +1,157 @@
+#!/bin/sh
+
+# Slackware build script for ConsoleKit
+
+# Copyright 2009, 2015 Robby Workman, Northport, Alabama, USA
+# Copyright 2010, 2015 Eric Hameleers, Eindhoven, NL
+# Copyright 2010 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+PKGNAM=ConsoleKit2
+VERSION=${VERSION:-1.0.0}
+BUILD=${BUILD:-3}
+
+NUMJOBS=${NUMJOBS:--j6}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-$PKGNAM
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$(uname -m)" in
+ i?86) ARCH=i586 ;;
+ arm*) readelf /usr/bin/file -A | egrep -q "Tag_CPU.*[4,5]" && ARCH=arm || ARCH=armv7hl ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) ARCH=$(uname -m) ;;
+ esac
+ export ARCH
+fi
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ SLKLDFLAGS=""
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
+ SLKLDFLAGS=""
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ SLKLDFLAGS="-L/usr/lib64"
+ LIBDIRSUFFIX="64"
+elif [ "$ARCH" = "armv7hl" ]; then
+ SLKCFLAGS="-O3 -march=armv7-a -mfpu=vfpv3-d16"
+ SLKLDFLAGS=""
+ LIBDIRSUFFIX=""
+else
+ SLKCFLAGS="-O2"
+ SLKLDFLAGS=""
+ LIBDIRSUFFIX=""
+fi
+
+case "$ARCH" in
+ arm*) TARGET=$ARCH-slackware-linux-gnueabi ;;
+ *) TARGET=$ARCH-slackware-linux ;;
+esac
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+cd $TMP
+rm -rf $PKGNAM-$VERSION
+tar xvf $CWD/$PKGNAM-$VERSION.tar.?z* || exit 1
+cd $PKGNAM-$VERSION || exit 1
+
+zcat $CWD/patches/0001-Revert-Minor-code-refactoring.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/patches/0002-Fix-some-libdir-scripts-stuff-missed-in-4d87a25ea0af.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/patches/0003-Filter-out-the-kdm-user.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/patches/0004-Apply-overlooked-prefix-lib-libdir-substitution.patch.gz | patch -p1 --verbose || exit 1
+
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+autoreconf -vif
+
+CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --mandir=/usr/man \
+ --docdir=/usr/doc/$PKGNAM-$VERSION \
+ --with-rundir=/var/run \
+ --with-pid-file=/var/run/ConsoleKit/pid \
+ --enable-docbook-docs \
+ --enable-pam-module=no \
+ --enable-udev-acl \
+ --disable-static \
+ --build=$TARGET
+
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG
+
+# Let's not clobber config files
+mv $PKG/etc/ConsoleKit/seats.d/00-primary.seat \
+ $PKG/etc/ConsoleKit/seats.d/00-primary.seat.new
+
+# Add an init script
+mkdir -p $PKG/etc/rc.d
+cat $CWD/rc.consolekit > $PKG/etc/rc.d/rc.consolekit.new
+chmod 0755 $PKG/etc/rc.d/rc.consolekit.new
+
+# Remove unused xinitrc.d script:
+rm -r $PKG/etc/X11/xinit/xinitrc.d
+
+find $PKG | xargs file | grep -e "executable" -e "shared object" \
+ | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+# Compress manual pages:
+find $PKG/usr/man -type f -exec gzip -9 {} \;
+for i in $( find $PKG/usr/man -type l ) ; do
+ ln -s $( readlink $i ).gz $i.gz
+ rm $i
+done
+
+mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION
+cp -a \
+ AUTHORS COPYING HACKING INSTALL NEWS README TODO \
+ $PKG/usr/doc/$PKGNAM-$VERSION
+
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/l/ConsoleKit2/doinst.sh b/source/l/ConsoleKit2/doinst.sh
new file mode 100644
index 000000000..c13a36e3e
--- /dev/null
+++ b/source/l/ConsoleKit2/doinst.sh
@@ -0,0 +1,27 @@
+config() {
+ NEW="$1"
+ OLD="$(dirname $NEW)/$(basename $NEW .new)"
+ # If there's no config file by that name, mv it over:
+ if [ ! -r $OLD ]; then
+ mv $NEW $OLD
+ elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then
+ # toss the redundant copy
+ rm $NEW
+ fi
+ # Otherwise, we leave the .new copy for the admin to consider...
+}
+
+preserve_perms() {
+ NEW="$1"
+ OLD="$(dirname $NEW)/$(basename $NEW .new)"
+ if [ -e $OLD ]; then
+ cp -a $OLD ${NEW}.incoming
+ cat $NEW > ${NEW}.incoming
+ mv ${NEW}.incoming $NEW
+ fi
+ config $NEW
+}
+
+config etc/ConsoleKit/seats.d/00-primary.seat.new
+preserve_perms etc/rc.d/rc.consolekit.new
+
diff --git a/source/l/ConsoleKit2/patches/0001-Revert-Minor-code-refactoring.patch b/source/l/ConsoleKit2/patches/0001-Revert-Minor-code-refactoring.patch
new file mode 100644
index 000000000..b6cadb3f8
--- /dev/null
+++ b/source/l/ConsoleKit2/patches/0001-Revert-Minor-code-refactoring.patch
@@ -0,0 +1,477 @@
+From 1e3f7f9862dceec3fa11ee4205c343ed64ce5b63 Mon Sep 17 00:00:00 2001
+From: Eric Koegel <eric.koegel@gmail.com>
+Date: Sat, 22 Aug 2015 10:51:20 +0300
+Subject: [PATCH 1/5] Revert "Minor code refactoring"
+
+This reverts commit bee63889f4a0b8f57807a61d8396346cec8cd5b1.
+
+There are some cases where ConsoleKit2 would crash after successfully
+suspending so revert this commit.
+---
+ src/ck-manager.c | 160 ++++++++++++++++++++++++++++++++++----------------
+ src/ck-session.c | 56 +++++++++++++++++-
+ src/ck-sysdeps-unix.c | 59 -------------------
+ src/ck-sysdeps.h | 6 --
+ tools/Makefile.am | 3 -
+ 5 files changed, 163 insertions(+), 121 deletions(-)
+
+diff --git a/src/ck-manager.c b/src/ck-manager.c
+index db5f906..66da8b2 100644
+--- a/src/ck-manager.c
++++ b/src/ck-manager.c
+@@ -960,11 +960,13 @@ logind_ready_cb (PolkitAuthority *authority,
+ g_object_unref (ret);
+ }
+
++/* We use this to avoid breaking API compability with ConsoleKit1 for
++ * CanStop and CanRestart, but this method emulates how logind
++ * presents it's API */
+ static void
+-get_polkit_permissions_for_callback (CkManager *manager,
+- const char *action,
+- GDBusMethodInvocation *context,
+- GAsyncReadyCallback callback)
++get_polkit_logind_permissions (CkManager *manager,
++ const char *action,
++ GDBusMethodInvocation *context)
+ {
+ const char *sender;
+ PolkitSubject *subject;
+@@ -980,37 +982,96 @@ get_polkit_permissions_for_callback (CkManager *manager,
+ NULL,
+ 0,
+ NULL,
+- callback,
++ (GAsyncReadyCallback) logind_ready_cb,
+ context);
+ g_object_unref (subject);
+ }
+
+-/* We use this to avoid breaking API compability with ConsoleKit1 for
+- * CanStop and CanRestart, but this method emulates how logind
+- * presents it's API */
+-static void
+-get_polkit_logind_permissions (CkManager *manager,
+- const char *action,
+- GDBusMethodInvocation *context)
+-{
+- get_polkit_permissions_for_callback (manager,
+- action,
+- context,
+- (GAsyncReadyCallback) logind_ready_cb);
+-}
+-
+ static void
+ get_polkit_permissions (CkManager *manager,
+ const char *action,
+ GDBusMethodInvocation *context)
+ {
+- get_polkit_permissions_for_callback (manager,
+- action,
+- context,
+- (GAsyncReadyCallback) ready_cb);
++ const char *sender;
++ PolkitSubject *subject;
++
++ g_debug ("get permissions for action %s", action);
++
++ sender = g_dbus_method_invocation_get_sender (context);
++ subject = polkit_system_bus_name_new (sender);
++
++ polkit_authority_check_authorization (manager->priv->pol_ctx,
++ subject,
++ action,
++ NULL,
++ 0,
++ NULL,
++ (GAsyncReadyCallback) ready_cb,
++ context);
++ g_object_unref (subject);
+ }
+ #endif
+
++/* adapted from PolicyKit */
++static gboolean
++get_caller_info (CkManager *manager,
++ const char *sender,
++ uid_t *calling_uid,
++ pid_t *calling_pid)
++{
++ gboolean res = FALSE;
++ GVariant *value = NULL;
++ GError *error = NULL;
++
++ if (sender == NULL) {
++ g_debug ("sender == NULL");
++ goto out;
++ }
++
++ if (manager->priv->bus_proxy == NULL) {
++ g_debug ("manager->priv->bus_proxy == NULL");
++ goto out;
++ }
++
++ value = g_dbus_proxy_call_sync (manager->priv->bus_proxy, "GetConnectionUnixUser",
++ g_variant_new ("(s)", sender),
++ G_DBUS_CALL_FLAGS_NONE,
++ 2000,
++ NULL,
++ &error);
++
++ if (value == NULL) {
++ g_warning ("GetConnectionUnixUser() failed: %s", error->message);
++ g_error_free (error);
++ goto out;
++ }
++ g_variant_get (value, "(u)", calling_uid);
++ g_variant_unref (value);
++
++ value = g_dbus_proxy_call_sync (manager->priv->bus_proxy, "GetConnectionUnixProcessID",
++ g_variant_new ("(s)", sender),
++ G_DBUS_CALL_FLAGS_NONE,
++ 2000,
++ NULL,
++ &error);
++
++ if (value == NULL) {
++ g_warning ("GetConnectionUnixProcessID() failed: %s", error->message);
++ g_error_free (error);
++ goto out;
++ }
++ g_variant_get (value, "(u)", calling_pid);
++ g_variant_unref (value);
++
++ res = TRUE;
++
++ g_debug ("uid = %d", *calling_uid);
++ g_debug ("pid = %d", *calling_pid);
++
++out:
++ return res;
++}
++
+ static char *
+ get_user_name (uid_t uid)
+ {
+@@ -1118,7 +1179,7 @@ check_rbac_permissions (CkManager *manager,
+
+ username = NULL;
+ sender = g_dbus_method_invocation_get_sender (context);
+- res = get_caller_info (manager->priv->bus_proxy,
++ res = get_caller_info (manager,
+ sender,
+ &uid,
+ &pid);
+@@ -2055,7 +2116,7 @@ dbus_inhibit (ConsoleKitManager *ckmanager,
+ priv = CK_MANAGER_GET_PRIVATE (CK_MANAGER (ckmanager));
+
+ sender = g_dbus_method_invocation_get_sender (context);
+- res = get_caller_info (priv->bus_proxy,
++ res = get_caller_info (CK_MANAGER (ckmanager),
+ sender,
+ &uid,
+ &pid);
+@@ -2698,7 +2759,7 @@ create_session_for_sender (CkManager *manager,
+
+ g_debug ("CkManager: create session for sender: %s", sender);
+
+- res = get_caller_info (manager->priv->bus_proxy,
++ res = get_caller_info (manager,
+ sender,
+ &uid,
+ &pid);
+@@ -2767,7 +2828,7 @@ dbus_get_session_for_cookie (ConsoleKitManager *ckmanager,
+
+ sender = g_dbus_method_invocation_get_sender (context);
+
+- res = get_caller_info (manager->priv->bus_proxy,
++ res = get_caller_info (manager,
+ sender,
+ &calling_uid,
+ &calling_pid);
+@@ -2852,7 +2913,7 @@ dbus_get_session_for_unix_process (ConsoleKitManager *ckmanager,
+ TRACE ();
+ g_debug ("pid: %u", pid);
+
+- res = get_caller_info (manager->priv->bus_proxy,
++ res = get_caller_info (manager,
+ sender,
+ &calling_uid,
+ &calling_pid);
+@@ -2900,7 +2961,7 @@ dbus_get_current_session (ConsoleKitManager *ckmanager,
+
+ g_debug ("CkManager: get current session");
+
+- res = get_caller_info (manager->priv->bus_proxy,
++ res = get_caller_info (manager,
+ sender,
+ &calling_uid,
+ &calling_pid);
+@@ -3100,7 +3161,7 @@ dbus_close_session (ConsoleKitManager *ckmanager,
+ manager = CK_MANAGER (ckmanager);
+
+ sender = g_dbus_method_invocation_get_sender (context);
+- res = get_caller_info (manager->priv->bus_proxy,
++ res = get_caller_info (manager,
+ sender,
+ &calling_uid,
+ &calling_pid);
+@@ -3443,17 +3504,6 @@ create_seats (CkManager *manager)
+ }
+
+ static void
+-cancel_timeout_and_call_system_action (CkManagerPrivate *priv)
+-{
+- /* The inhibit lock for this action was removed.
+- * Stop the timeout and call the system action now.
+- */
+- g_source_remove (priv->system_action_idle_id);
+- priv->system_action_idle_id = 0;
+- system_action_idle_cb (priv->system_action_data);
+-}
+-
+-static void
+ on_inhibit_manager_changed_event (CkInhibitManager *manager, gint inhibit_mode, gint event, gboolean enabled, gpointer user_data)
+ {
+ CkManagerPrivate *priv;
+@@ -3472,6 +3522,17 @@ on_inhibit_manager_changed_event (CkInhibitManager *manager, gint inhibit_mode,
+ return;
+ }
+
++ /* this system action must be for a sleep or shutdown operation */
++ if (priv->system_action_data->signal != PREPARE_FOR_SLEEP &&
++ priv->system_action_data->signal != PREPARE_FOR_SHUTDOWN) {
++ return;
++ }
++
++ /* the inhibit change must be for sleep or shutdown */
++ if (event != CK_INHIBIT_EVENT_SUSPEND && event != CK_INHIBIT_EVENT_SHUTDOWN) {
++ return;
++ }
++
+ /* must be a delay inhibitor */
+ if (inhibit_mode != CK_INHIBIT_MODE_DELAY) {
+ return;
+@@ -3482,17 +3543,12 @@ on_inhibit_manager_changed_event (CkInhibitManager *manager, gint inhibit_mode,
+ return;
+ }
+
+- /* Did we stop inhibiting sleep? */
+- if (priv->system_action_data->signal == PREPARE_FOR_SLEEP &&
+- event == CK_INHIBIT_EVENT_SUSPEND) {
+- cancel_timeout_and_call_system_action (priv);
+- }
+-
+- /* Did we stop inhibiting shutdown? */
+- if (priv->system_action_data->signal == PREPARE_FOR_SHUTDOWN &&
+- event == CK_INHIBIT_EVENT_SHUTDOWN) {
+- cancel_timeout_and_call_system_action (priv);
+- }
++ /* The inhibit lock for this action was removed.
++ * Stop the timeout and call the system action now.
++ */
++ g_source_remove (priv->system_action_idle_id);
++ priv->system_action_idle_id = 0;
++ system_action_idle_cb (priv->system_action_data);
+ }
+
+ static void
+diff --git a/src/ck-session.c b/src/ck-session.c
+index 478dce2..ca0f8ca 100644
+--- a/src/ck-session.c
++++ b/src/ck-session.c
+@@ -248,6 +248,60 @@ dbus_unlock (ConsoleKitSession *cksession,
+ return TRUE;
+ }
+
++/* adapted from PolicyKit */
++static gboolean
++get_caller_info (CkSession *session,
++ const char *sender,
++ uid_t *calling_uid,
++ pid_t *calling_pid)
++{
++ gboolean res = FALSE;
++ GVariant *value = NULL;
++ GError *error = NULL;
++
++ if (sender == NULL) {
++ goto out;
++ }
++
++ value = g_dbus_proxy_call_sync (session->priv->bus_proxy, "GetConnectionUnixUser",
++ g_variant_new ("(s)", sender),
++ G_DBUS_CALL_FLAGS_NONE,
++ 2000,
++ NULL,
++ &error);
++
++ if (value == NULL) {
++ g_warning ("GetConnectionUnixUser() failed: %s", error->message);
++ g_error_free (error);
++ goto out;
++ }
++ g_variant_get (value, "(u)", calling_uid);
++ g_variant_unref (value);
++
++ value = g_dbus_proxy_call_sync (session->priv->bus_proxy, "GetConnectionUnixProcessID",
++ g_variant_new ("(s)", sender),
++ G_DBUS_CALL_FLAGS_NONE,
++ 2000,
++ NULL,
++ &error);
++
++ if (value == NULL) {
++ g_warning ("GetConnectionUnixProcessID() failed: %s", error->message);
++ g_error_free (error);
++ goto out;
++ }
++ g_variant_get (value, "(u)", calling_pid);
++ g_variant_unref (value);
++
++ res = TRUE;
++
++ g_debug ("uid = %d", *calling_uid);
++ g_debug ("pid = %d", *calling_pid);
++
++out:
++ return res;
++}
++
+ static gboolean
+ session_set_idle_hint_internal (CkSession *session,
+ gboolean idle_hint)
+@@ -326,7 +380,7 @@ dbus_set_idle_hint (ConsoleKitSession *cksession,
+
+ sender = g_dbus_method_invocation_get_sender (context);
+
+- res = get_caller_info (session->priv->bus_proxy,
++ res = get_caller_info (session,
+ sender,
+ &calling_uid,
+ &calling_pid);
+diff --git a/src/ck-sysdeps-unix.c b/src/ck-sysdeps-unix.c
+index 87333d1..0f751b9 100644
+--- a/src/ck-sysdeps-unix.c
++++ b/src/ck-sysdeps-unix.c
+@@ -132,65 +132,6 @@ ck_get_socket_peer_credentials (int socket_fd,
+ return ret;
+ }
+
+-/* adapted from PolicyKit */
+-gboolean
+-get_caller_info (GDBusProxy *bus_proxy,
+- const char *sender,
+- uid_t *calling_uid,
+- pid_t *calling_pid)
+-{
+- gboolean res = FALSE;
+- GVariant *value = NULL;
+- GError *error = NULL;
+-
+- if (sender == NULL) {
+- g_debug ("sender == NULL");
+- goto out;
+- }
+-
+- if (bus_proxy == NULL) {
+- g_debug ("bus_proxy == NULL");
+- goto out;
+- }
+-
+- value = g_dbus_proxy_call_sync (bus_proxy, "GetConnectionUnixUser",
+- g_variant_new ("(s)", sender),
+- G_DBUS_CALL_FLAGS_NONE,
+- 2000,
+- NULL,
+- &error);
+-
+- if (value == NULL) {
+- g_warning ("GetConnectionUnixUser() failed: %s", error->message);
+- g_error_free (error);
+- goto out;
+- }
+- g_variant_get (value, "(u)", calling_uid);
+- g_variant_unref (value);
+-
+- value = g_dbus_proxy_call_sync (bus_proxy, "GetConnectionUnixProcessID",
+- g_variant_new ("(s)", sender),
+- G_DBUS_CALL_FLAGS_NONE,
+- 2000,
+- NULL,
+- &error);
+-
+- if (value == NULL) {
+- g_warning ("GetConnectionUnixProcessID() failed: %s", error->message);
+- g_error_free (error);
+- goto out;
+- }
+- g_variant_get (value, "(u)", calling_pid);
+- g_variant_unref (value);
+-
+- res = TRUE;
+-
+- g_debug ("uid = %d", *calling_uid);
+- g_debug ("pid = %d", *calling_pid);
+-
+-out:
+- return res;
+-}
+
+ /*
+ * getfd.c
+diff --git a/src/ck-sysdeps.h b/src/ck-sysdeps.h
+index 66df581..bc32631 100644
+--- a/src/ck-sysdeps.h
++++ b/src/ck-sysdeps.h
+@@ -24,7 +24,6 @@
+ #include "config.h"
+
+ #include <glib.h>
+-#include <gio/gio.h>
+
+ G_BEGIN_DECLS
+
+@@ -55,11 +54,6 @@ gboolean ck_get_socket_peer_credentials (int socket_fd,
+ uid_t *uid,
+ GError **error);
+
+-gboolean get_caller_info (GDBusProxy *bus_proxy,
+- const char *sender,
+- uid_t *calling_uid,
+- pid_t *calling_pid);
+-
+ int ck_get_a_console_fd (void);
+
+ gboolean ck_fd_is_a_console (int fd);
+diff --git a/tools/Makefile.am b/tools/Makefile.am
+index 69dd1eb..81f4d1f 100644
+--- a/tools/Makefile.am
++++ b/tools/Makefile.am
+@@ -131,7 +131,6 @@ ck_collect_session_info_SOURCES = \
+ $(NULL)
+
+ ck_collect_session_info_LDADD = \
+- $(CONSOLE_KIT_LIBS) \
+ $(TOOLS_LIBS) \
+ $(top_builddir)/src/libck.la \
+ $(NULL)
+@@ -141,7 +140,6 @@ ck_get_x11_server_pid_SOURCES = \
+ $(NULL)
+
+ ck_get_x11_server_pid_LDADD = \
+- $(CONSOLE_KIT_LIBS) \
+ $(TOOLS_LIBS) \
+ $(XLIB_LIBS) \
+ $(top_builddir)/src/libck.la \
+@@ -152,7 +150,6 @@ ck_get_x11_display_device_SOURCES = \
+ $(NULL)
+
+ ck_get_x11_display_device_LDADD = \
+- $(CONSOLE_KIT_LIBS) \
+ $(TOOLS_LIBS) \
+ $(top_builddir)/src/libck.la \
+ $(NULL)
+--
+2.5.1
+
diff --git a/source/l/ConsoleKit2/patches/0002-Fix-some-libdir-scripts-stuff-missed-in-4d87a25ea0af.patch b/source/l/ConsoleKit2/patches/0002-Fix-some-libdir-scripts-stuff-missed-in-4d87a25ea0af.patch
new file mode 100644
index 000000000..2c46bbd8e
--- /dev/null
+++ b/source/l/ConsoleKit2/patches/0002-Fix-some-libdir-scripts-stuff-missed-in-4d87a25ea0af.patch
@@ -0,0 +1,42 @@
+From b045a4245199b12dfc04f03b22bc1e9b1f80aae9 Mon Sep 17 00:00:00 2001
+From: Robby Workman <rworkman@slackware.com>
+Date: Sun, 23 Aug 2015 16:53:52 -0500
+Subject: [PATCH 2/5] Fix some libdir/scripts stuff missed in 4d87a25ea0af
+
+---
+ src/ck-seat.c | 2 +-
+ tools/Makefile.am | 4 ++--
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/src/ck-seat.c b/src/ck-seat.c
+index ead6425..47e6933 100644
+--- a/src/ck-seat.c
++++ b/src/ck-seat.c
+@@ -1443,7 +1443,7 @@ ck_seat_run_programs (CkSeat *seat,
+ g_assert(n <= G_N_ELEMENTS(extra_env));
+
+ ck_run_programs (SYSCONFDIR "/ConsoleKit/run-seat.d", action, extra_env);
+- ck_run_programs (PREFIX "/lib/ConsoleKit/run-seat.d", action, extra_env);
++ ck_run_programs (LIBDIR "/ConsoleKit/run-seat.d", action, extra_env);
+
+ for (n = 0; extra_env[n] != NULL; n++) {
+ g_free (extra_env[n]);
+diff --git a/tools/Makefile.am b/tools/Makefile.am
+index 69dd1eb..d61b845 100644
+--- a/tools/Makefile.am
++++ b/tools/Makefile.am
+@@ -171,9 +171,9 @@ udev_acl_CFLAGS = \
+ $(NULL)
+
+ install-exec-hook:
+- mkdir -p $(DESTDIR)$(prefix)/lib/ConsoleKit/run-seat.d
++ mkdir -p $(DESTDIR)$(libdir)/ConsoleKit/run-seat.d
+ mkdir -p $(DESTDIR)$(UDEVDIR)
+- ln -sf $(libexecdir)/udev-acl $(DESTDIR)$(prefix)/lib/ConsoleKit/run-seat.d/udev-acl.ck
++ ln -sf $(libexecdir)/udev-acl $(DESTDIR)$(libdir)/ConsoleKit/run-seat.d/udev-acl.ck
+ ln -sf $(libexecdir)/udev-acl $(DESTDIR)$(UDEVDIR)/udev-acl
+ endif
+
+--
+2.5.1
+
diff --git a/source/l/ConsoleKit2/patches/0003-Filter-out-the-kdm-user.patch b/source/l/ConsoleKit2/patches/0003-Filter-out-the-kdm-user.patch
new file mode 100644
index 000000000..c0ec63d8d
--- /dev/null
+++ b/source/l/ConsoleKit2/patches/0003-Filter-out-the-kdm-user.patch
@@ -0,0 +1,29 @@
+From f848c1de94ef2f5ae7d53358d30e26400a69d3d4 Mon Sep 17 00:00:00 2001
+From: Ivailo Monev <xakepa10@gmail.com>
+Date: Mon, 24 Aug 2015 20:18:50 +0300
+Subject: [PATCH 5/5] Filter out the kdm user
+
+---
+ src/ck-manager.c | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/src/ck-manager.c b/src/ck-manager.c
+index 66da8b2..4a6e511 100644
+--- a/src/ck-manager.c
++++ b/src/ck-manager.c
+@@ -1111,9 +1111,10 @@ session_is_real_user (CkSession *session,
+
+ username = get_user_name (uid);
+
+- /* filter out GDM/SDDM user */
++ /* filter out GDM/SDDM/KDM user */
+ if (g_strcmp0 (username, "gdm") == 0 ||
+- g_strcmp0 (username, "sddm") == 0) {
++ g_strcmp0 (username, "sddm") == 0 ||
++ g_strcmp0 (username, "kdm") == 0) {
+ ret = FALSE;
+ goto out;
+ }
+--
+2.5.1
+
diff --git a/source/l/ConsoleKit2/patches/0004-Apply-overlooked-prefix-lib-libdir-substitution.patch b/source/l/ConsoleKit2/patches/0004-Apply-overlooked-prefix-lib-libdir-substitution.patch
new file mode 100644
index 000000000..ee3b1e23b
--- /dev/null
+++ b/source/l/ConsoleKit2/patches/0004-Apply-overlooked-prefix-lib-libdir-substitution.patch
@@ -0,0 +1,22 @@
+From 22958330535c9e26ed537d1568925f64e3bafe4d Mon Sep 17 00:00:00 2001
+From: Eric Hameleers <alien@slackware.com>
+Date: Thu, 10 Sep 2015 14:19:43 +0200
+Subject: [PATCH] Apply overlooked PREFIX/lib -> LIBDIR substitution
+
+---
+ src/ck-session.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/ck-session.c b/src/ck-session.c
+index ca0f8ca..1b58889 100644
+--- a/src/ck-session.c
++++ b/src/ck-session.c
+@@ -1273,7 +1273,7 @@ ck_session_run_programs (CkSession *session,
+ g_assert(n <= G_N_ELEMENTS(extra_env));
+
+ ck_run_programs (SYSCONFDIR "/ConsoleKit/run-session.d", action, extra_env);
+- ck_run_programs (PREFIX "/lib/ConsoleKit/run-session.d", action, extra_env);
++ ck_run_programs (LIBDIR "/ConsoleKit/run-session.d", action, extra_env);
+
+ for (n = 0; extra_env[n] != NULL; n++) {
+ g_free (extra_env[n]);
diff --git a/source/l/ConsoleKit2/rc.consolekit b/source/l/ConsoleKit2/rc.consolekit
new file mode 100644
index 000000000..a1937569c
--- /dev/null
+++ b/source/l/ConsoleKit2/rc.consolekit
@@ -0,0 +1,34 @@
+#!/bin/sh
+#
+# /etc/rc.d/rc.consolekit
+#
+# Start/stop consolekit-kit daemon.
+#
+# This daemon is used by polkit's console auth agent.
+
+# Start consolekit:
+ck_start() {
+ echo "Starting ConsoleKit daemon: /usr/sbin/console-kit-daemon"
+ /usr/sbin/console-kit-daemon
+}
+
+# Stop consolekit:
+ck_stop() {
+ if [ -r /var/run/ConsoleKit/pid ]; then
+ kill -HUP $(cat /var/run/ConsoleKit/pid)
+ rm -f /var/run/ConsoleKit/pid
+ else
+ killall -HUP -q console-kit-daemon
+ fi
+}
+
+case "$1" in
+'start')
+ ck_start
+ ;;
+'stop')
+ ck_stop
+ ;;
+*)
+ echo "Usage: $0 start|stop"
+esac
diff --git a/source/l/ConsoleKit2/slack-desc b/source/l/ConsoleKit2/slack-desc
new file mode 100644
index 000000000..508b73205
--- /dev/null
+++ b/source/l/ConsoleKit2/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler-----------------------------------------------------|
+ConsoleKit2: ConsoleKit2 (user, login, and seat tracking framework)
+ConsoleKit2:
+ConsoleKit2: ConsoleKit2 is a framework for defining and tracking users, login
+ConsoleKit2: sessions, and seats.
+ConsoleKit2:
+ConsoleKit2: Homepage: https://github.com/ConsoleKit2/ConsoleKit2
+ConsoleKit2:
+ConsoleKit2:
+ConsoleKit2:
+ConsoleKit2:
+ConsoleKit2: