summaryrefslogtreecommitdiffstats
path: root/abs/extra/consolekit
diff options
context:
space:
mode:
Diffstat (limited to 'abs/extra/consolekit')
-rw-r--r--abs/extra/consolekit/PKGBUILD45
-rw-r--r--abs/extra/consolekit/add_since_option.patch220
-rw-r--r--abs/extra/consolekit/consolekit.logrotate5
-rw-r--r--abs/extra/consolekit/nodaemon.patch9
-rw-r--r--abs/extra/consolekit/pam-foreground-compat.ck16
-rw-r--r--abs/extra/consolekit/reorder-initialization.patch40
6 files changed, 335 insertions, 0 deletions
diff --git a/abs/extra/consolekit/PKGBUILD b/abs/extra/consolekit/PKGBUILD
new file mode 100644
index 0000000..10a1f7f
--- /dev/null
+++ b/abs/extra/consolekit/PKGBUILD
@@ -0,0 +1,45 @@
+# $Id: PKGBUILD 87085 2010-08-10 18:29:16Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: onestep_ua <onestep@ukr.net>
+
+pkgname=consolekit
+pkgver=0.4.1
+pkgrel=4
+pkgdesc="A framework for defining and tracking users, login sessions, and seats"
+arch=('i686' 'x86_64')
+url="http://www.freedesktop.org/wiki/Software/ConsoleKit"
+license=('GPL')
+depends=('polkit>=0.95' 'zlib' 'libx11>=1.2.2')
+makedepends=('pkgconfig' 'xmlto' 'docbook-xsl')
+options=(!libtool)
+source=(http://www.freedesktop.org/software/ConsoleKit/dist/ConsoleKit-${pkgver}.tar.bz2
+ pam-foreground-compat.ck
+ nodaemon.patch
+ reorder-initialization.patch
+ add_since_option.patch
+ consolekit.logrotate)
+md5sums=('48eda4483cc97841d5f88e8e003eb6d7'
+ 'a8a4de71d9b0549b8143e5f6c2a36fc7'
+ 'a5bfd56bc89411ff5bb18276a68cb212'
+ '99fa8cb1bf232050cc0c076378e216c5'
+ 'bd5e72397fe2d42a933a897d28d58155'
+ '6fefa451d9fe2fc6d6269629d3529793')
+
+build() {
+ cd "${srcdir}/ConsoleKit-${pkgver}"
+ patch -Np1 -i "${srcdir}/nodaemon.patch"
+ patch -Np1 -i "${srcdir}/reorder-initialization.patch"
+ patch -Np1 -i "${srcdir}/add_since_option.patch"
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --libexecdir=/usr/lib/ConsoleKit \
+ --enable-pam-module \
+ --enable-docbook-docs
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 "${srcdir}/pam-foreground-compat.ck" "${pkgdir}/usr/lib/ConsoleKit/run-session.d/"
+
+ # install the logrotate config
+ install -D -m644 ${srcdir}/consolekit.logrotate ${pkgdir}/etc/logrotate.d/consolekit
+}
diff --git a/abs/extra/consolekit/add_since_option.patch b/abs/extra/consolekit/add_since_option.patch
new file mode 100644
index 0000000..50c1421
--- /dev/null
+++ b/abs/extra/consolekit/add_since_option.patch
@@ -0,0 +1,220 @@
+From c9f2292339540d4b9d8940bcef16b7485480c8d9 Mon Sep 17 00:00:00 2001
+From: William Jon McCann <jmccann@redhat.com>
+Date: Fri, 11 Jun 2010 19:53:22 +0000
+Subject: Add a --since option to show entries in a time window
+
+Doesn't load any history files it doesn't need to which should
+help performance on systems with long histories.
+
+https://bugs.freedesktop.org/show_bug.cgi?id=25660
+---
+diff --git a/tools/ck-history.c b/tools/ck-history.c
+index 606106c..d02caaa 100644
+--- a/tools/ck-history.c
++++ b/tools/ck-history.c
+@@ -62,8 +62,8 @@ typedef enum {
+
+ static GList *all_events = NULL;
+
+-static gboolean
+-process_event_line (const char *line)
++static CkLogEvent *
++parse_event_line (const char *line)
+ {
+ GString *str;
+ CkLogEvent *event;
+@@ -72,47 +72,80 @@ process_event_line (const char *line)
+ event = ck_log_event_new_from_string (str);
+ g_string_free (str, TRUE);
+
+- if (event != NULL) {
+- all_events = g_list_prepend (all_events, event);
+- }
+-
+- return TRUE;
++ return event;
+ }
+
+ static gboolean
+-process_log_gzstream (gzFile *fstream)
++process_log_gzstream (gzFile *fstream,
++ GTimeVal *since)
+ {
+- char line[MAX_LINE_LEN];
++ char line[MAX_LINE_LEN];
++ gboolean hit_since;
++ GList *events;
+
++ events = NULL;
++ hit_since = FALSE;
+ while (gzgets (fstream, line, sizeof (line)) != Z_NULL) {
++ CkLogEvent *event;
++
+ if (strlen (line) == sizeof (line) - 1) {
+ g_warning ("Log line truncated");
+ }
+
+- process_event_line (line);
++ event = parse_event_line (line);
++ if (event == NULL) {
++ continue;
++ }
++
++ if (since == NULL || event->timestamp.tv_sec >= since->tv_sec) {
++ events = g_list_prepend (events, event);
++ } else {
++ hit_since = TRUE;
++ }
+ }
+
+- return TRUE;
++ all_events = g_list_concat (all_events, events);
++
++ return !hit_since;
+ }
+
+ static gboolean
+-process_log_stream (FILE *fstream)
++process_log_stream (FILE *fstream,
++ GTimeVal *since)
+ {
+- char line[MAX_LINE_LEN];
++ char line[MAX_LINE_LEN];
++ gboolean hit_since;
++ GList *events;
+
++ events = NULL;
++ hit_since = FALSE;
+ while (fgets (line, sizeof (line), fstream) != NULL) {
++ CkLogEvent *event;
++
+ if (strlen (line) == sizeof (line) - 1) {
+ g_warning ("Log line truncated");
+ }
+
+- process_event_line (line);
++ event = parse_event_line (line);
++ if (event == NULL) {
++ continue;
++ }
++
++ if (since == NULL || event->timestamp.tv_sec >= since->tv_sec) {
++ events = g_list_prepend (events, event);
++ } else {
++ hit_since = TRUE;
++ }
+ }
+
+- return TRUE;
++ all_events = g_list_concat (all_events, events);
++
++ return !hit_since;
+ }
+
+ static gboolean
+-process_log_file (const char *filename)
++process_log_file (const char *filename,
++ GTimeVal *since)
+ {
+ gboolean ret;
+
+@@ -131,7 +164,7 @@ process_log_file (const char *filename)
+ errmsg);
+ return FALSE;
+ }
+- ret = process_log_gzstream (f);
++ ret = process_log_gzstream (f, since);
+ gzclose (f);
+ } else {
+ FILE *f;
+@@ -143,7 +176,7 @@ process_log_file (const char *filename)
+ g_strerror (errno));
+ return FALSE;
+ }
+- ret = process_log_stream (f);
++ ret = process_log_stream (f, since);
+ fclose (f);
+ }
+
+@@ -180,11 +213,14 @@ get_log_file_list (void)
+ files = g_list_prepend (files, filename);
+ };
+
++ /* Return the list in reverse time order, newest first */
++ files = g_list_reverse (files);
++
+ return files;
+ }
+
+ static gboolean
+-process_logs (void)
++process_logs (GTimeVal *since)
+ {
+ gboolean ret;
+ GList *files;
+@@ -199,8 +235,7 @@ process_logs (void)
+ char *filename;
+
+ filename = l->data;
+-
+- res = process_log_file (filename);
++ res = process_log_file (filename, since);
+ if (! res) {
+ goto out;
+ }
+@@ -843,6 +878,8 @@ main (int argc,
+ GError *error = NULL;
+ int report_type;
+ int uid;
++ GTimeVal timestamp;
++ gboolean use_since;
+ static gboolean do_version = FALSE;
+ static gboolean report_last_compat = FALSE;
+ static gboolean report_last = FALSE;
+@@ -851,6 +888,7 @@ main (int argc,
+ static char *username = NULL;
+ static char *seat = NULL;
+ static char *session_type = NULL;
++ static char *since = NULL;
+ static GOptionEntry entries [] = {
+ { "version", 'V', 0, G_OPTION_ARG_NONE, &do_version, N_("Version of this application"), NULL },
+ { "frequent", 0, 0, G_OPTION_ARG_NONE, &report_frequent, N_("Show listing of frequent users"), NULL },
+@@ -860,6 +898,7 @@ main (int argc,
+ { "seat", 's', 0, G_OPTION_ARG_STRING, &seat, N_("Show entries for the specified seat"), N_("SEAT") },
+ { "session-type", 't', 0, G_OPTION_ARG_STRING, &session_type, N_("Show entries for the specified session type"), N_("TYPE") },
+ { "user", 'u', 0, G_OPTION_ARG_STRING, &username, N_("Show entries for the specified user"), N_("NAME") },
++ { "since", 0, 0, G_OPTION_ARG_STRING, &since, N_("Show entries since the specified time (ISO 8601 format)"), N_("DATETIME") },
+ { NULL }
+ };
+
+@@ -880,6 +919,15 @@ main (int argc,
+ exit (1);
+ }
+
++ use_since = FALSE;
++ if (since != NULL) {
++ use_since = g_time_val_from_iso8601 (since, &timestamp);
++ if (! use_since) {
++ g_warning ("Invalid ISO 8601 time value");
++ exit (1);
++ }
++ }
++
+ if (report_last_compat) {
+ report_type = REPORT_TYPE_LAST_COMPAT;
+ } else if (report_last) {
+@@ -902,7 +950,11 @@ main (int argc,
+ uid = -1;
+ }
+
+- process_logs ();
++ if (use_since) {
++ process_logs (&timestamp);
++ } else {
++ process_logs (NULL);
++ }
+ generate_report (report_type, uid, seat, session_type);
+ free_events ();
+
+--
+cgit v0.8.3-6-g21f6
diff --git a/abs/extra/consolekit/consolekit.logrotate b/abs/extra/consolekit/consolekit.logrotate
new file mode 100644
index 0000000..7c5346e
--- /dev/null
+++ b/abs/extra/consolekit/consolekit.logrotate
@@ -0,0 +1,5 @@
+/var/log/ConsoleKit/history {
+ missingok
+ notifempty
+ delaycompress
+}
diff --git a/abs/extra/consolekit/nodaemon.patch b/abs/extra/consolekit/nodaemon.patch
new file mode 100644
index 0000000..c4c08e9
--- /dev/null
+++ b/abs/extra/consolekit/nodaemon.patch
@@ -0,0 +1,9 @@
+diff -up ConsoleKit-0.4.1/data/org.freedesktop.ConsoleKit.service.in.nodaemon ConsoleKit-0.4.1/data/org.freedesktop.ConsoleKit.service.in
+--- ConsoleKit-0.4.1/data/org.freedesktop.ConsoleKit.service.in.nodaemon 2009-12-15 10:56:39.839818556 -0500
++++ ConsoleKit-0.4.1/data/org.freedesktop.ConsoleKit.service.in 2009-12-15 10:56:50.177792048 -0500
+@@ -1,4 +1,4 @@
+ [D-BUS Service]
+ Name=org.freedesktop.ConsoleKit
+-Exec=@sbindir@/console-kit-daemon
++Exec=@sbindir@/console-kit-daemon --no-daemon
+ User=root
diff --git a/abs/extra/consolekit/pam-foreground-compat.ck b/abs/extra/consolekit/pam-foreground-compat.ck
new file mode 100644
index 0000000..7f6b122
--- /dev/null
+++ b/abs/extra/consolekit/pam-foreground-compat.ck
@@ -0,0 +1,16 @@
+#!/bin/sh
+TAGDIR=/var/run/console
+
+[ -n "$CK_SESSION_USER_UID" ] || exit 1
+
+TAGFILE="$TAGDIR/`getent passwd $CK_SESSION_USER_UID | cut -f 1 -d:`"
+
+if [ "$1" = "session_added" ]; then
+ mkdir -p "$TAGDIR"
+ echo "$CK_SESSION_ID" >> "$TAGFILE"
+fi
+
+if [ "$1" = "session_removed" ] && [ -e "$TAGFILE" ]; then
+ sed -i "\%^$CK_SESSION_ID\$%d" "$TAGFILE"
+ [ -s "$TAGFILE" ] || rm -f "$TAGFILE"
+fi
diff --git a/abs/extra/consolekit/reorder-initialization.patch b/abs/extra/consolekit/reorder-initialization.patch
new file mode 100644
index 0000000..f65abd5
--- /dev/null
+++ b/abs/extra/consolekit/reorder-initialization.patch
@@ -0,0 +1,40 @@
+diff -up ConsoleKit-0.4.1/src/main.c.reorder-initialization ConsoleKit-0.4.1/src/main.c
+--- ConsoleKit-0.4.1/src/main.c.reorder-initialization 2009-12-18 14:51:38.821212946 -0500
++++ ConsoleKit-0.4.1/src/main.c 2009-12-18 14:52:19.246211176 -0500
+@@ -294,11 +294,19 @@ main (int argc,
+
+ setup_debug_log (debug);
+
++ g_debug ("initializing console-kit-daemon %s", VERSION);
++
+ connection = get_system_bus ();
+ if (connection == NULL) {
+ goto out;
+ }
+
++ manager = ck_manager_new ();
++
++ if (manager == NULL) {
++ goto out;
++ }
++
+ bus_proxy = get_bus_proxy (connection);
+ if (bus_proxy == NULL) {
+ g_warning ("Could not construct bus_proxy object; bailing out");
+@@ -310,16 +318,8 @@ main (int argc,
+ goto out;
+ }
+
+- g_debug ("initializing console-kit-daemon %s", VERSION);
+-
+ create_pid_file ();
+
+- manager = ck_manager_new ();
+-
+- if (manager == NULL) {
+- goto out;
+- }
+-
+ loop = g_main_loop_new (NULL, FALSE);
+
+ g_signal_connect (bus_proxy,