[arch-commits] Commit in gnome-session (3 files)

Jan de Groot jgc at archlinux.org
Tue Aug 25 09:17:57 UTC 2009


    Date: Tuesday, August 25, 2009 @ 05:17:57
  Author: jgc
Revision: 50296

Update to 2.27.5 - Port to polkit1

Added:
  gnome-session/gnome-unstable/
  gnome-session/gnome-unstable/polkit1.patch
Modified:
  gnome-session/gnome-unstable/PKGBUILD

------------------------------+
 PKGBUILD                     |   18 -
 gnome-unstable/polkit1.patch |  695 +++++++++++++++++++++++++++++++++++++++++
 2 files changed, 708 insertions(+), 5 deletions(-)

Modified: gnome-unstable/PKGBUILD
===================================================================
--- trunk/PKGBUILD	2009-08-25 08:29:20 UTC (rev 50294)
+++ gnome-unstable/PKGBUILD	2009-08-25 09:17:57 UTC (rev 50296)
@@ -2,24 +2,32 @@
 # Maintainer: Jan de Groot <jgc at archlinux.org>
 
 pkgname=gnome-session
-pkgver=2.26.2
+pkgver=2.27.5
 pkgrel=1
 pkgdesc="The GNOME Session Handler"
 arch=(i686 x86_64)
 license=('GPL' 'LGPL')
-depends=('policykit-gnome>=0.9.2' 'gnome-settings-daemon>=2.26.1' 'at-spi>=1.26.0' 'startup-notification>=0.10' 'dbus>=1.2.14' 'libglade>=2.6.4' 'libxtst')
+depends=('devicekit-power>=010' 'gtk2>=2.17.9' 'gconf>=2.26.2-3' 'startup-notification>=0.10' 'hicolor-icon-theme' 'libxtst' 'polkit-gnome>=0.94')
 makedepends=('pkgconfig' 'intltool' 'xtrans')
 options=(!emptydirs)
 install=gnome-session.install
 url="http://www.gnome.org"
 groups=('gnome')
-source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.26/${pkgname}-${pkgver}.tar.bz2)
-md5sums=('2cc3ff808592d95c3b364d608e99dea4')
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.27/${pkgname}-${pkgver}.tar.bz2
+        polkit1.patch)
+sha256sums=('9089a1959aae16eb7a9116d5d50e83b798495724e358e92ae2600c6a79575284'
+            '257da057c3579abcc7b22dc7079980f8004a5c6e6221c87694c40fc3b35d4747')
 
 build() {
   cd "${srcdir}/${pkgname}-${pkgver}"
+  patch -Np1 -i "${srcdir}/polkit1.patch" || return 1
+  libtoolize --force || return 1
+  aclocal || return 1
+  autoconf || return 1
+  automake || return 1
   ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \
-      --with-at-spi-registryd-directory=/usr/lib/at-spi || return 1
+      --with-at-spi-registryd-directory=/usr/lib/at-spi \
+      --enable-polkit --enable-splash || return 1
   make || return 1
   make DESTDIR="${pkgdir}" GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1 install || return 1
 

Added: gnome-unstable/polkit1.patch
===================================================================
--- gnome-unstable/polkit1.patch	                        (rev 0)
+++ gnome-unstable/polkit1.patch	2009-08-25 09:17:57 UTC (rev 50296)
@@ -0,0 +1,695 @@
+diff -up gnome-session-2.27.5/configure.in.polkit1 gnome-session-2.27.5/configure.in
+--- gnome-session-2.27.5/configure.in.polkit1	2009-07-28 21:51:22.000000000 -0400
++++ gnome-session-2.27.5/configure.in	2009-07-28 23:05:25.662498945 -0400
+@@ -33,7 +33,7 @@ AC_ARG_WITH(at-spi-registryd-directory,
+ AT_SPI_REGISTRYD_DIR=$with_at_spi_registryd_directory
+ AC_SUBST(AT_SPI_REGISTRYD_DIR)
+ 
+-GNOME_COMPILE_WARNINGS(maximum)
++
+ 
+ AC_ARG_ENABLE(deprecations,
+               [AC_HELP_STRING([--enable-deprecations],
+@@ -49,7 +49,6 @@ GLIB_REQUIRED=2.16.0
+ LIBGNOMEUI_REQUIRED=2.2.0
+ GTK_REQUIRED=2.12.0
+ DBUS_GLIB_REQUIRED=0.76
+-POLKIT_GNOME_REQUIRED=0.7
+ DEVKIT_POWER_REQUIRED=008
+ 
+ dnl ====================================================================
+@@ -89,22 +88,6 @@ PKG_CHECK_MODULES(GCONF, gconf-2.0)
+ 
+ PKG_CHECK_MODULES(EGG_SMCLIENT, gtk+-2.0)
+ 
+-have_polkit=no
+-AC_ARG_ENABLE([polkit],
+-  AC_HELP_STRING([--enable-polkit], [Enable PolicyKit support (default auto)]),
+-  enable_polkit=$enableval,
+-  enable_polkit=auto)
+-if test "x$enable_polkit" != "xno"; then
+-  PKG_CHECK_MODULES(POLKIT_GNOME, polkit-gnome >= $POLKIT_GNOME_REQUIRED, have_polkit=yes, have_polkit=no)
+-  if test "x$enable_polkit" = "xyes" -a "x$have_polkit" = "xno"; then
+-    AC_MSG_ERROR([PolicyKit support explicitly requested but dependencies not found])
+-  fi
+-fi
+-
+-if test "x$have_polkit" = "xyes"; then
+-  AC_DEFINE(HAVE_POLKIT_GNOME, [1], [whether PolKit GNOME was found])
+-fi
+-
+ dnl ====================================================================
+ dnl Option to set the default window manager
+ dnl ====================================================================
+diff -up gnome-session-2.27.5/gnome-session/gsm-consolekit.c.polkit1 gnome-session-2.27.5/gnome-session/gsm-consolekit.c
+--- gnome-session-2.27.5/gnome-session/gsm-consolekit.c.polkit1	2009-07-28 21:29:27.000000000 -0400
++++ gnome-session-2.27.5/gnome-session/gsm-consolekit.c	2009-07-28 22:58:49.369736767 -0400
+@@ -31,10 +31,6 @@
+ #include <dbus/dbus-glib.h>
+ #include <dbus/dbus-glib-lowlevel.h>
+ 
+-#ifdef HAVE_POLKIT_GNOME
+-#include <polkit-gnome/polkit-gnome.h>
+-#endif
+-
+ #include "gsm-marshal.h"
+ #include "gsm-consolekit.h"
+ 
+@@ -465,177 +461,6 @@ emit_stop_complete (GsmConsolekit *manag
+         }
+ }
+ 
+-#ifdef HAVE_POLKIT_GNOME
+-static void
+-system_restart_auth_cb (PolKitAction  *action,
+-                        gboolean       gained_privilege,
+-                        GError        *error,
+-                        GsmConsolekit *manager)
+-{
+-        GError  *local_error;
+-        gboolean res;
+-
+-        if (!gained_privilege) {
+-                if (error != NULL) {
+-                        emit_restart_complete (manager, error);
+-                }
+-
+-                return;
+-        }
+-
+-        local_error = NULL;
+-
+-        res = try_system_restart (manager->priv->dbus_connection, &local_error);
+-
+-        if (!res) {
+-                g_warning ("Unable to restart system: %s", local_error->message);
+-                emit_restart_complete (manager, local_error);
+-                g_error_free (local_error);
+-        } else {
+-                emit_restart_complete (manager, NULL);
+-        }
+-}
+-
+-static void
+-system_stop_auth_cb (PolKitAction  *action,
+-                     gboolean       gained_privilege,
+-                     GError        *error,
+-                     GsmConsolekit *manager)
+-{
+-        GError  *local_error;
+-        gboolean res;
+-
+-        if (!gained_privilege) {
+-                if (error != NULL) {
+-                        emit_stop_complete (manager, error);
+-                }
+-
+-                return;
+-        }
+-
+-        local_error = NULL;
+-
+-        res = try_system_stop (manager->priv->dbus_connection, &local_error);
+-
+-        if (!res) {
+-                g_warning ("Unable to stop system: %s", local_error->message);
+-                emit_stop_complete (manager, local_error);
+-                g_error_free (local_error);
+-        } else {
+-                emit_stop_complete (manager, NULL);
+-        }
+-}
+-
+-static PolKitAction *
+-get_action_from_error (GError *error)
+-{
+-        PolKitAction *action;
+-        char         *paction;
+-
+-        action = polkit_action_new ();
+-
+-        paction = NULL;
+-        if (g_str_has_prefix (error->message, "Not privileged for action: ")) {
+-                paction = g_strdup (error->message + strlen ("Not privileged for action: "));
+-                if (paction != NULL) {
+-                        char *p;
+-
+-                        /* after 0.2.10 the error also includes the PK results */
+-                        p = strchr (paction, ' ');
+-                        if (p != NULL) {
+-                                *p = '\0';
+-                        }
+-                }
+-        }
+-
+-        polkit_action_set_action_id (action, paction);
+-
+-        g_free (paction);
+-
+-        return action;
+-}
+-#endif /* HAVE_POLKIT_GNOME */
+-
+-static void
+-request_restart_priv (GsmConsolekit *manager,
+-                      GError        *error)
+-{
+-#ifdef HAVE_POLKIT_GNOME
+-        PolKitAction *action;
+-        pid_t         pid;
+-        gboolean      res = FALSE;
+-        guint         xid;
+-        GError       *local_error;
+-
+-        action = get_action_from_error (error);
+-
+-        xid = 0;
+-        pid = getpid ();
+-
+-        local_error = NULL;
+-        res = polkit_gnome_auth_obtain (action,
+-                                        xid,
+-                                        pid,
+-                                        (PolKitGnomeAuthCB) system_restart_auth_cb,
+-                                        manager,
+-                                        &local_error);
+-
+-        polkit_action_unref (action);
+-
+-        if (!res) {
+-                if (local_error != NULL) {
+-                        g_warning ("Unable to obtain auth to restart system: %s",
+-                                   local_error->message);
+-
+-                        emit_restart_complete (manager, local_error);
+-                        g_error_free (local_error);
+-                }
+-        }
+-#else
+-        g_assert_not_reached ();
+-#endif /* HAVE POLKIT */
+-}
+-
+-static void
+-request_stop_priv (GsmConsolekit *manager,
+-                   GError        *error)
+-{
+-#ifdef HAVE_POLKIT_GNOME
+-        PolKitAction *action;
+-        pid_t         pid;
+-        gboolean      res = FALSE;
+-        guint         xid;
+-        GError       *local_error;
+-
+-        action = get_action_from_error (error);
+-
+-        xid = 0;
+-        pid = getpid ();
+-
+-        local_error = NULL;
+-        res = polkit_gnome_auth_obtain (action,
+-                                        xid,
+-                                        pid,
+-                                        (PolKitGnomeAuthCB) system_stop_auth_cb,
+-                                        manager,
+-                                        &local_error);
+-
+-        polkit_action_unref (action);
+-
+-        if (!res) {
+-                if (local_error != NULL) {
+-                        g_warning ("Unable to obtain auth to stop system: %s",
+-                                   local_error->message);
+-
+-                        emit_stop_complete (manager, local_error);
+-                        g_error_free (local_error);
+-                }
+-        }
+-#else
+-        g_assert_not_reached ();
+-#endif /* HAVE POLKIT */
+-}
+-
+ void
+ gsm_consolekit_attempt_restart (GsmConsolekit *manager)
+ {
+@@ -652,16 +477,16 @@ gsm_consolekit_attempt_restart (GsmConso
+                 return;
+         }
+ 
+-        res = try_system_restart (manager->priv->dbus_connection, &error);
++        res = dbus_g_proxy_call_with_timeout (manager->priv->ck_proxy,
++                                              "Restart",
++                                              INT_MAX,
++                                              error,
++                                              G_TYPE_INVALID,
++                                              G_TYPE_INVALID);
+ 
+         if (!res) {
+-                if (dbus_g_error_has_name (error, "org.freedesktop.ConsoleKit.Manager.NotPrivileged")) {
+-                        request_restart_priv (manager, error);
+-                } else {
+-                        g_warning ("Unable to restart system: %s", error->message);
+-                        emit_restart_complete (manager, error);
+-                }
+-
++                g_warning ("Unable to restart system: %s", error->message);
++                emit_restart_complete (manager, error);
+                 g_error_free (error);
+         } else {
+                 emit_restart_complete (manager, NULL);
+@@ -684,16 +509,16 @@ gsm_consolekit_attempt_stop (GsmConsolek
+                 return;
+         }
+ 
+-        res = try_system_stop (manager->priv->dbus_connection, &error);
++        res = dbus_g_proxy_call_with_timeout (manager->priv->ck_proxy,
++                                              "Stop",
++                                              INT_MAX,
++                                              error,
++                                              G_TYPE_INVALID,
++                                              G_TYPE_INVALID);
+ 
+         if (!res) {
+-                if (dbus_g_error_has_name (error, "org.freedesktop.ConsoleKit.Manager.NotPrivileged")) {
+-                        request_stop_priv (manager, error);
+-                } else {
+-                        g_warning ("Unable to stop system: %s", error->message);
+-                        emit_stop_complete (manager, error);
+-                }
+-
++                g_warning ("Unable to stop system: %s", error->message);
++                emit_stop_complete (manager, error);
+                 g_error_free (error);
+         } else {
+                 emit_stop_complete (manager, NULL);
+@@ -969,347 +794,78 @@ gsm_consolekit_can_switch_user (GsmConso
+         return ret;
+ }
+ 
+-#ifdef HAVE_POLKIT_GNOME
+-static PolKitResult
+-gsm_consolekit_get_result_for_action (GsmConsolekit *manager,
+-                                      const char    *action_id)
+-{
+-        PolKitGnomeContext *gnome_context;
+-        PolKitAction *action;
+-        PolKitCaller *caller;
+-        DBusError dbus_error;
+-        PolKitError *error;
+-        PolKitResult result;
+-
+-        gnome_context = polkit_gnome_context_get (NULL);
+-
+-        if (gnome_context == NULL) {
+-                return POLKIT_RESULT_UNKNOWN;
+-        }
+-
+-        if (gnome_context->pk_tracker == NULL) {
+-                return POLKIT_RESULT_UNKNOWN;
+-        }
+-
+-        dbus_error_init (&dbus_error);
+-        caller = polkit_tracker_get_caller_from_pid (gnome_context->pk_tracker,
+-                                                     getpid (),
+-                                                     &dbus_error);
+-        dbus_error_free (&dbus_error);
+-
+-        if (caller == NULL) {
+-                return POLKIT_RESULT_UNKNOWN;
+-        }
++gboolean
++gsm_consolekit_get_restart_privileges (GsmConsolekit *manager)
++{
++	g_signal_emit (G_OBJECT (manager),
++		       signals [PRIVILEGES_COMPLETED],
++		       0, TRUE, TRUE, NULL);
+ 
+-        action = polkit_action_new ();
+-        if (!polkit_action_set_action_id (action, action_id)) {
+-                polkit_action_unref (action);
+-                polkit_caller_unref (caller);
+-                return POLKIT_RESULT_UNKNOWN;
+-        }
++	return TRUE;
++}
+ 
+-        error = NULL;
+-        result = polkit_context_is_caller_authorized (gnome_context->pk_context,
+-                                                      action, caller, FALSE,
+-                                                      &error);
+-        if (polkit_error_is_set (error)) {
+-                polkit_error_free (error);
+-        }
+-        polkit_action_unref (action);
+-        polkit_caller_unref (caller);
++gboolean
++gsm_consolekit_get_stop_privileges (GsmConsolekit *manager)
++{
++	g_signal_emit (G_OBJECT (manager),
++		       signals [PRIVILEGES_COMPLETED],
++		       0, TRUE, TRUE, NULL);
+ 
+-        return result;
++	return TRUE;
+ }
+ 
+-static gboolean
+-gsm_consolekit_can_do_action (GsmConsolekit *manager,
+-                              const char    *action_id)
++gboolean
++gsm_consolekit_can_restart (GsmConsolekit *manager)
+ {
+-        PolKitResult  result;
+-        gboolean      res;
+-        GError       *error;
++        gboolean res;
++	gboolean can_restart;
++        GError  *error;
+ 
+         error = NULL;
+-        res = gsm_consolekit_ensure_ck_connection (manager, &error);
+-        if (!res) {
++
++        if (!gsm_consolekit_ensure_ck_connection (manager, &error)) {
+                 g_warning ("Could not connect to ConsoleKit: %s",
+                            error->message);
+                 g_error_free (error);
+-                return FALSE;
++                return;
+         }
+ 
+-        result = gsm_consolekit_get_result_for_action (manager, action_id);
+-
+-        return result != POLKIT_RESULT_NO && result != POLKIT_RESULT_UNKNOWN;
+-}
+-
+-static gboolean
+-gsm_consolekit_is_session_for_other_user (GsmConsolekit *manager,
+-                                          const char    *object_path,
+-                                          unsigned int   current_uid)
+-{
+-        DBusGProxy    *proxy;
+-        gboolean       res;
+-        char          *type;
+-        unsigned int   uid;
+-
+-        proxy = dbus_g_proxy_new_for_name (manager->priv->dbus_connection,
+-                                           CK_NAME,
+-                                           object_path,
+-                                           CK_SESSION_INTERFACE);
+-
+-        res = dbus_g_proxy_call_with_timeout (proxy,
+-                                              "GetUnixUser",
+-                                              INT_MAX,
+-                                              NULL,
+-                                              /* parameters: */
+-                                              G_TYPE_INVALID,
+-                                              /* return values: */
+-                                              G_TYPE_UINT, &uid,
+-                                              G_TYPE_INVALID);
+-
+-        /* error is bad: we consider there's another user */
+-        if (!res)
+-                return TRUE;
+-
+-        if (uid == current_uid)
+-                return FALSE;
+-
+-        /* filter out login sessions */
+-        res = dbus_g_proxy_call_with_timeout (proxy,
+-                                              "GetSessionType",
++        res = dbus_g_proxy_call_with_timeout (manager->priv->ck_proxy,
++                                              "CanRestart",
+                                               INT_MAX,
+-                                              NULL,
+-                                              /* parameters: */
++                                              error,
+                                               G_TYPE_INVALID,
+-                                              /* return values: */
+-                                              G_TYPE_STRING, &type,
++                                              G_TYPE_BOOLEAN, &can_restart,
+                                               G_TYPE_INVALID);
+ 
+-        /* error is bad: we consider there's another user */
+-        if (!res)
+-                return TRUE;
+-
+-        if (g_strcmp0 (type, GSM_CONSOLEKIT_SESSION_TYPE_LOGIN_WINDOW) == 0) {
+-                g_free (type);
+-                return FALSE;
+-        }
+-
+-        g_free (type);
+-
+-        return TRUE;
++	return can_restart;
+ }
+ 
+-static gboolean
+-gsm_consolekit_is_single_user (GsmConsolekit *manager)
++gboolean
++gsm_consolekit_can_stop (GsmConsolekit *manager)
+ {
+-        DBusGProxy   *proxy;
+-        GError       *error;
+-        gboolean      res;
+-        gboolean      single;
+-        GPtrArray    *array;
+-        unsigned int  current_uid;
+-        int           i;
+-
+-        /* We use the same logic than the one used by ConsoleKit here -- it'd
+-         * be nice to have a ConsoleKit API to help us, but well...
+-         * If there's any error, we just assume it's multiple users. */
+-
+-        proxy = dbus_g_proxy_new_for_name (manager->priv->dbus_connection,
+-                                           CK_NAME,
+-                                           CK_MANAGER_PATH,
+-                                           CK_MANAGER_INTERFACE);
++        gboolean res;
++	gboolean can_stop;
++        GError  *error;
+ 
+         error = NULL;
+-        res = dbus_g_proxy_call_with_timeout (proxy,
+-                                              "GetSessions",
+-                                              INT_MAX,
+-                                              &error,
+-                                              /* parameters: */
+-                                              G_TYPE_INVALID,
+-                                              /* return values: */
+-                                              dbus_g_type_get_collection ("GPtrArray", DBUS_TYPE_G_OBJECT_PATH), &array,
+-                                              G_TYPE_INVALID);
+-
+-        if (!res) {
+-                g_warning ("Unable to list sessions: %s", error->message);
+-                g_error_free (error);
+-                return FALSE;
+-        }
+-
+-        single = TRUE;
+-        current_uid = getuid ();
+-
+-        for (i = 0; i < array->len; i++) {
+-                char *object_path;
+-
+-                object_path = g_ptr_array_index (array, i);
+-
+-                if (gsm_consolekit_is_session_for_other_user (manager,
+-                                                              object_path,
+-                                                              current_uid)) {
+-                        single = FALSE;
+-                        break;
+-                }
+-        }
+-
+-        g_ptr_array_foreach (array, (GFunc) g_free, NULL);
+-        g_ptr_array_free (array, TRUE);
+-
+-        return single;
+-}
+ 
+-static void
+-obtain_privileges_cb (PolKitAction  *action,
+-                      gboolean       gained_privilege,
+-                      GError        *error,
+-                      GsmConsolekit *manager)
+-{
+-        g_signal_emit (G_OBJECT (manager),
+-                       signals [PRIVILEGES_COMPLETED],
+-                       0, gained_privilege, FALSE, error);
+-}
+-
+-static gboolean
+-gsm_consolekit_obtain_privileges_for_action (GsmConsolekit *manager,
+-                                             const char    *action_id)
+-{
+-        PolKitAction *action;
+-        pid_t         pid;
+-        guint         xid;
+-        gboolean      res;
+-
+-        action = polkit_action_new ();
+-        polkit_action_set_action_id (action, action_id);
+-
+-        xid = 0;
+-        pid = getpid ();
+-
+-        res = polkit_gnome_auth_obtain (action,
+-                                        xid,
+-                                        pid,
+-                                        (PolKitGnomeAuthCB) obtain_privileges_cb,
+-                                        manager,
+-                                        NULL);
+-
+-        polkit_action_unref (action);
+-
+-        return res;
+-}
+-
+-static gboolean
+-gsm_consolekit_get_privileges_for_actions (GsmConsolekit *manager,
+-                                           const char    *single_action_id,
+-                                           const char    *multiple_action_id)
+-{
+-        PolKitResult  result;
+-        gboolean      res;
+-        GError       *error;
+-        const char   *action_id;
+-
+-        error = NULL;
+-        res = gsm_consolekit_ensure_ck_connection (manager, &error);
+-        if (!res) {
++        if (!gsm_consolekit_ensure_ck_connection (manager, &error)) {
+                 g_warning ("Could not connect to ConsoleKit: %s",
+                            error->message);
+                 g_error_free (error);
+-                return FALSE;
+-        }
+-
+-        if (gsm_consolekit_is_single_user (manager)) {
+-                action_id = single_action_id;
+-        } else {
+-                action_id = multiple_action_id;
+-        }
+-
+-        result = gsm_consolekit_get_result_for_action (manager, action_id);
+-
+-        switch (result) {
+-        case POLKIT_RESULT_UNKNOWN:
+-        case POLKIT_RESULT_NO:
+-                return FALSE;
+-        case POLKIT_RESULT_ONLY_VIA_ADMIN_AUTH:
+-        case POLKIT_RESULT_ONLY_VIA_ADMIN_AUTH_KEEP_SESSION:
+-        case POLKIT_RESULT_ONLY_VIA_ADMIN_AUTH_KEEP_ALWAYS:
+-        case POLKIT_RESULT_ONLY_VIA_SELF_AUTH:
+-        case POLKIT_RESULT_ONLY_VIA_SELF_AUTH_KEEP_SESSION:
+-        case POLKIT_RESULT_ONLY_VIA_SELF_AUTH_KEEP_ALWAYS:
+-                if (!gsm_consolekit_obtain_privileges_for_action (manager,
+-                                                                  action_id)) {
+-                        /* if the call doesn't work, then we were not even able
+-                         * to do the call requesting the privileges: the setup
+-                         * is likely broken */
+-                        return FALSE;
+-                }
+-                break;
+-        case POLKIT_RESULT_YES:
+-                g_signal_emit (G_OBJECT (manager),
+-                               signals [PRIVILEGES_COMPLETED],
+-                               0, TRUE, FALSE, NULL);
+-                break;
+-        case POLKIT_RESULT_ONLY_VIA_ADMIN_AUTH_ONE_SHOT:
+-        case POLKIT_RESULT_ONLY_VIA_SELF_AUTH_ONE_SHOT:
+-                g_signal_emit (G_OBJECT (manager),
+-                               signals [PRIVILEGES_COMPLETED],
+-                               0, TRUE, TRUE, NULL);
+-                break;
+-        default:
+-                g_assert_not_reached ();
+-                break;
++                return;
+         }
+ 
+-        return TRUE;
+-}
+-#endif
+-
+-gboolean
+-gsm_consolekit_get_restart_privileges (GsmConsolekit *manager)
+-{
+-#ifdef HAVE_POLKIT_GNOME
+-        return gsm_consolekit_get_privileges_for_actions (manager,
+-                                                          "org.freedesktop.consolekit.system.restart",
+-                                                          "org.freedesktop.consolekit.system.restart-multiple-users");
+-#else
+-        g_debug ("GsmConsolekit: built without PolicyKit-gnome support");
+-        return FALSE;
+-#endif
+-}
+-
+-gboolean
+-gsm_consolekit_get_stop_privileges (GsmConsolekit *manager)
+-{
+-#ifdef HAVE_POLKIT_GNOME
+-        return gsm_consolekit_get_privileges_for_actions (manager,
+-                                                          "org.freedesktop.consolekit.system.stop",
+-                                                          "org.freedesktop.consolekit.system.stop-multiple-users");
+-#else
+-        g_debug ("GsmConsolekit: built without PolicyKit-gnome support");
+-        return FALSE;
+-#endif
+-}
+-
+-gboolean
+-gsm_consolekit_can_restart (GsmConsolekit *manager)
+-{
+-#ifdef HAVE_POLKIT_GNOME
+-        return gsm_consolekit_can_do_action (manager, "org.freedesktop.consolekit.system.restart") ||
+-               gsm_consolekit_can_do_action (manager, "org.freedesktop.consolekit.system.restart-multiple-users");
+-#else
+-        g_debug ("GsmConsolekit: built without PolicyKit-gnome support - cannot restart system");
+-        return FALSE;
+-#endif
+-}
++        res = dbus_g_proxy_call_with_timeout (manager->priv->ck_proxy,
++                                              "CanStop",
++                                              INT_MAX,
++                                              error,
++                                              G_TYPE_INVALID,
++                                              G_TYPE_BOOLEAN, &can_stop,
++                                              G_TYPE_INVALID);
+ 
+-gboolean
+-gsm_consolekit_can_stop (GsmConsolekit *manager)
+-{
+-#ifdef HAVE_POLKIT_GNOME
+-        return gsm_consolekit_can_do_action (manager, "org.freedesktop.consolekit.system.stop") ||
+-               gsm_consolekit_can_do_action (manager, "org.freedesktop.consolekit.system.stop-multiple-users");
+-#else
+-        g_debug ("GsmConsolekit: built without PolicyKit-gnome support - cannot stop system");
+-        return FALSE;
+-#endif
++	return can_stop;
+ }
+ 
+ gchar *
+diff -up gnome-session-2.27.5/gnome-session/Makefile.am.polkit1 gnome-session-2.27.5/gnome-session/Makefile.am
+--- gnome-session-2.27.5/gnome-session/Makefile.am.polkit1	2009-07-28 21:51:22.000000000 -0400
++++ gnome-session-2.27.5/gnome-session/Makefile.am	2009-07-28 22:58:49.370735427 -0400
+@@ -16,7 +16,6 @@ INCLUDES =					\
+ 	$(ICE_CFLAGS)				\
+ 	$(GNOME_SESSION_CFLAGS)			\
+ 	$(GCONF_CFLAGS)				\
+-	$(POLKIT_GNOME_CFLAGS)			\
+ 	-I$(top_srcdir)/egg			\
+ 	-DLOCALE_DIR=\""$(datadir)/locale"\"	\
+ 	-DDATA_DIR=\""$(datadir)/gnome-session"\" \
+@@ -50,7 +49,6 @@ gnome_session_LDADD =				\
+ 	$(ICE_LIBS)				\
+ 	$(GNOME_SESSION_LIBS)			\
+ 	$(GCONF_LIBS)				\
+-	$(POLKIT_GNOME_LIBS)			\
+ 	$(XRENDER_LIBS)				\
+ 	$(XTEST_LIBS)				\
+ 	$(EXECINFO_LIBS)			\




More information about the arch-commits mailing list