Date: Monday, October 10, 2011 @ 06:29:11
  Author: jgc
Revision: 140229

upgpkg: xorg-xdm 1.1.11-1

Update to 1.1.11, add consolekit support (FS#22671)

Added:
  xorg-xdm/trunk/xdm-consolekit.patch
Modified:
  xorg-xdm/trunk/PKGBUILD

----------------------+
 PKGBUILD             |   20 +++-
 xdm-consolekit.patch |  225 +++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 240 insertions(+), 5 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD    2011-10-10 10:27:13 UTC (rev 140228)
+++ PKGBUILD    2011-10-10 10:29:11 UTC (rev 140229)
@@ -2,29 +2,39 @@
 # Maintainer: Alexander Baldeck <[email protected]>
 # Contributor: Jan de Groot <[email protected]>
 pkgname=xorg-xdm
-pkgver=1.1.10
-pkgrel=2
+pkgver=1.1.11
+pkgrel=1
 pkgdesc="X Display Manager"
 arch=(i686 x86_64)
 url="http://xorg.freedesktop.org/";
 license=('custom')
-depends=('pam' 'libxaw' 'libxinerama' 'xorg-xrdb' 'xorg-sessreg' 'libxft')
-makedepends=('pkgconfig')
+depends=('pam' 'libxaw' 'libxinerama' 'xorg-xrdb' 'xorg-sessreg' 'libxft' 
'consolekit')
+makedepends=('pkgconfig' 'xorg-util-macros')
 backup=(etc/X11/xdm/Xaccess etc/X11/xdm/Xresources etc/X11/xdm/Xservers 
etc/X11/xdm/xdm-config etc/pam.d/xdm etc/X11/xdm/Xsetup_0 etc/X11/xdm/Xsession)
 options=('!libtool')
 source=(${url}/releases/individual/app/xdm-${pkgver}.tar.bz2
         Xsession-loginshell.patch
         Xsession-xsm.patch
+        xdm-consolekit.patch
         xdm.pam)
-md5sums=('329383040cdbda5b5c8ce6c7e1120c97'
+md5sums=('64a1af1f7eb69feae12e75d4cc3aaf19'
          '234ae568e7b22cbc09433bb396ff3d80'
          '2c30078c50bc653d72eb5114506eb313'
+         '46b11173b58e2241577d5ffd48ab8f8d'
          '419d6289ba6f851135f5c70c0e3cbec4')
+sha256sums=('d4da426ddea0124279a3f2e00a26db61944690628ee818a64df9d27352081c47'
+            'fd3e7c20837b42a8ab111369fd6dc9612f9edb91c1f6904cca1d6a1fa3cfa0ff'
+            '77a1ce9bdf363591b72798db08b4df3589bd4e64737fd32cf9028f9245450edb'
+            '47190f311c97c0d85b1fcab47ee5a8575013db1200a5e30a57a7ea4ef3e0c23a'
+            '36cf924a893ef851855ebcdc5468523a9d182c3620698e01dffc35d05d74764b')
 
 build() {
   cd "${srcdir}/xdm-${pkgver}"
   patch -Np0 -i "${srcdir}/Xsession-loginshell.patch"
   patch -Np1 -i "${srcdir}/Xsession-xsm.patch"
+  patch -Np1 -i "${srcdir}/xdm-consolekit.patch"
+
+  autoreconf -fi
   ./configure --prefix=/usr \
       --disable-xdm-auth \
       --disable-static \

Added: xdm-consolekit.patch
===================================================================
--- xdm-consolekit.patch                                (rev 0)
+++ xdm-consolekit.patch        2011-10-10 10:29:11 UTC (rev 140229)
@@ -0,0 +1,225 @@
+--- a/configure.ac
++++ b/configure.ac
+@@ -362,6 +362,20 @@
+ 
+ AM_CONDITIONAL(DYNAMIC_GREETER, test x$DYNAMIC_GREETER = xyes)
+ 
++# ConsoleKit support
++AC_ARG_WITH(consolekit, AC_HELP_STRING([--with-consolekit], [Use ConsoleKit]),
++      [USE_CONSOLEKIT=$withval], [USE_CONSOLEKIT=yes])
++if test x"$USE_CONSOLEKIT" != xno; then
++      PKG_CHECK_MODULES(CK_CONNECTOR, ck-connector,
++              [USE_CONSOLEKIT=yes], [USE_CONSOLEKIT=no])
++      if test x"$USE_CONSOLEKIT" = xyes; then
++              AC_DEFINE([USE_CONSOLEKIT], 1, [Define to 1 to use ConsoleKit])
++              XDM_CFLAGS="$XDM_CFLAGS $CK_CONNECTOR_CFLAGS -DUSE_CONSOLEKIT"
++              XDM_LIBS="$XDM_LIBS $CK_CONNECTOR_LIBS"
++      fi
++fi
++dnl AM_CONDITIONAL(USE_CONSOLEKIT, test$USE_CONSOLEKIT = xyes)
++
+ #
+ #  XDM
+ #
+--- a/xdm/session.c
++++ b/xdm/session.c
+@@ -66,6 +66,11 @@
+ #endif
+ #endif /* USE_PAM */
+ 
++#ifdef USE_CONSOLEKIT
++#include <ck-connector.h>
++#include <dbus/dbus.h>
++#endif
++
+ #ifdef __SCO__
+ #include <prot.h>
+ #endif
+@@ -472,6 +477,97 @@
+     }
+ }
+ 
++#ifdef USE_CONSOLEKIT
++
++static CkConnector *connector;
++
++static int openCKSession(struct verify_info *verify, struct display *d)
++{
++    int ret;
++    DBusError error;
++    char  *remote_host_name = "";
++    dbus_bool_t is_local;
++    char *display_name = "";
++    char *display_device = "";
++    char devtmp[16];
++
++    if (!use_consolekit)
++      return 1;
++
++    is_local = d->displayType.location == Local;
++    if (d->peerlen > 0 && d->peer)
++      remote_host_name = d->peer;
++    if (d->name)
++      display_name = d->name;
++    /* how can we get the corresponding tty at best...? */
++    if (d->windowPath) {
++      display_device = strchr(d->windowPath, ':');
++      if (display_device && display_device[1])
++          display_device++;
++      else
++          display_device = d->windowPath;
++      snprintf(devtmp, sizeof(devtmp), "/dev/tty%s", display_device);
++      display_device = devtmp;
++    }
++
++    connector = ck_connector_new();
++    if (!connector) {
++      LogOutOfMem("ck_connector");
++      return 0;
++    }
++
++    dbus_error_init(&error);
++    ret = ck_connector_open_session_with_parameters(
++              connector, &error,
++              "unix-user", &verify->uid,
++              "x11-display", &display_name,
++              "x11-display-device", &display_device,
++              "remote-host-name", &remote_host_name,
++              "is-local", &is_local,
++              NULL);
++    if (!ret) {
++      if (dbus_error_is_set(&error)) {
++          LogError("Dbus error: %s\n", error.message);
++          dbus_error_free(&error);
++      } else {
++          LogError("ConsoleKit error\n");
++      }
++      LogError("console-kit-daemon not running?\n");
++      ck_connector_unref(connector);
++      connector = NULL;
++      return 0;
++    }
++
++    verify->userEnviron = setEnv(verify->userEnviron,
++              "XDG_SESSION_COOKIE", ck_connector_get_cookie(connector));
++    return 1;
++}
++
++static void closeCKSession(void)
++{
++    DBusError error;
++
++    if (!connector)
++      return;
++
++    dbus_error_init(&error);
++    if (!ck_connector_close_session(connector, &error)) {
++      if (dbus_error_is_set(&error)) {
++          LogError("Dbus error: %s\n", error.message);
++          dbus_error_free(&error);
++      } else {
++          LogError("ConsoleKit close error\n");
++      }
++      LogError("console-kit-daemon not running?\n");
++    }
++    ck_connector_unref(connector);
++    connector = NULL;
++}
++#else
++#define openCKSession(v,d)    1
++#define closeCKSession()
++#endif
++
+ void
+ SessionExit (struct display *d, int status, int removeAuth)
+ {
+@@ -486,6 +580,8 @@
+     }
+ #endif
+ 
++    closeCKSession();
++
+     /* make sure the server gets reset after the session is over */
+     if (d->serverPid >= 2 && d->resetSignal)
+       kill (d->serverPid, d->resetSignal);
+@@ -568,6 +664,10 @@
+ #ifdef USE_PAM
+     if (pamh) pam_open_session(pamh, 0);
+ #endif
++
++    if (!openCKSession(verify, d))
++      return 0;
++
+     switch (pid = fork ()) {
+     case 0:
+       CleanUpChild ();
+--- a/include/dm.h
++++ b/include/dm.h
+@@ -325,6 +325,9 @@
+ extern char   *prngdSocket;
+ extern int    prngdPort;
+ # endif
++#ifdef USE_CONSOLEKIT
++extern int    use_consolekit;
++#endif
+ 
+ extern char   *greeterLib;
+ extern char   *willing;
+--- a/xdm/resource.c
++++ b/xdm/resource.c
+@@ -68,6 +68,9 @@
+ char  *prngdSocket;
+ int   prngdPort;
+ #endif
++#ifdef USE_CONSOLEKIT
++int   use_consolekit;
++#endif
+ 
+ char  *greeterLib;
+ char  *willing;
+@@ -258,6 +261,10 @@
+                               "false"} ,
+ { "willing",  "Willing",      DM_STRING,      &willing,
+                               ""} ,
++#ifdef USE_CONSOLEKIT
++{ "consoleKit",       "ConsoleKit",   DM_BOOL,        (char **) 
&use_consolekit,
++                              "true"} ,
++#endif
+ };
+ 
+ # define NUM_DM_RESOURCES     (sizeof DmResources / sizeof DmResources[0])
+@@ -440,7 +447,11 @@
+ {"-debug",    "*debugLevel",          XrmoptionSepArg,        (caddr_t) NULL 
},
+ {"-xrm",      NULL,                   XrmoptionResArg,        (caddr_t) NULL 
},
+ {"-daemon",   ".daemonMode",          XrmoptionNoArg,         "true"         
},
+-{"-nodaemon", ".daemonMode",          XrmoptionNoArg,         "false"        }
++{"-nodaemon", ".daemonMode",          XrmoptionNoArg,         "false"        
},
++#ifdef USE_CONSOLEKIT
++{"-consolekit",       ".consoleKit",          XrmoptionNoArg,         "true"  
},
++{"-noconsolekit", ".consoleKit",      XrmoptionNoArg,         "false" }
++#endif
+ };
+ 
+ static int    originalArgc;
+--- a/man/xdm.man
++++ b/man/xdm.man
+@@ -51,6 +51,8 @@
+ ] [
+ .B \-session
+ .I session_program
++] [
++.B \-noconsolekit
+ ]
+ .SH DESCRIPTION
+ .I Xdm
+@@ -218,6 +220,10 @@
+ .IP "\fB\-xrm\fP \fIresource_specification\fP"
+ Allows an arbitrary resource to be specified, as in most
+ X Toolkit applications.
++.IP "\fB\-noconsolekit\fP"
++Specifies ``false'' as the value for the \fBDisplayManager.consoleKit\fP
++resource.
++This suppresses the session management using ConsoleKit.
+ .SH RESOURCES
+ At many stages the actions of
+ .I xdm

Reply via email to