commit:     1d066368a77691fb5af632966d3d0c1e628c778c
Author:     Christoph Mende <angelos <AT> gentoo <DOT> org>
AuthorDate: Wed Jun 25 20:15:12 2014 +0000
Commit:     Christoph Mende <angelos <AT> gentoo <DOT> org>
CommitDate: Wed Jun 25 20:15:12 2014 +0000
URL:        
http://git.overlays.gentoo.org/gitweb/?p=proj/xfce.git;a=commit;h=1d066368

xfce4-session: Sync with gentoo-x86

Package-Manager: portage-2.2.10
Manifest-Sign-Key: 84F20B43

---
 .../xfce4-session-alock_support_to_xflock4.patch   |  15 +
 .../files/xfce4-session-upower-0.99.patch          | 392 +++++++++++++++++++++
 xfce-base/xfce4-session/xfce4-session-9999.ebuild  |  11 +-
 3 files changed, 416 insertions(+), 2 deletions(-)

diff --git 
a/xfce-base/xfce4-session/files/xfce4-session-alock_support_to_xflock4.patch 
b/xfce-base/xfce4-session/files/xfce4-session-alock_support_to_xflock4.patch
new file mode 100644
index 0000000..feb020a
--- /dev/null
+++ b/xfce-base/xfce4-session/files/xfce4-session-alock_support_to_xflock4.patch
@@ -0,0 +1,15 @@
+http://bugs.gentoo.org/501370
+http://bugzilla.xfce.org/show_bug.cgi?id=10679
+
+--- scripts/xflock4
++++ scripts/xflock4
+@@ -35,7 +35,8 @@
+ # else run another access locking utility, if installed
+ for lock_cmd in \
+   "xlock -mode blank" \
+-  "slock"
++  "slock" \
++  "alock -bg blank -auth pam"
+   do
+     set -- $lock_cmd
+     if command -v -- $1 >/dev/null 2>&1; then

diff --git a/xfce-base/xfce4-session/files/xfce4-session-upower-0.99.patch 
b/xfce-base/xfce4-session/files/xfce4-session-upower-0.99.patch
new file mode 100644
index 0000000..a246dcb
--- /dev/null
+++ b/xfce-base/xfce4-session/files/xfce4-session-upower-0.99.patch
@@ -0,0 +1,392 @@
+Patch from http://bugzilla.xfce.org/show_bug.cgi?id=9952 with modification
+to edit configure.ac (release tarball) instead of configure.ac.in (git)
+
+From ee2228c756e40a4289476f40a6d0045d17418bce Mon Sep 17 00:00:00 2001
+From: Eric Koegel <[email protected]>
+Date: Thu, 29 May 2014 19:17:26 +0300
+Subject: [PATCH] Add suspend/hibernate to shutdown-helper
+
+Upower 0.99 dropped support for suspend/hibernate as an obsolete
+feature in this commit:
+http://cgit.freedesktop.org/upower/commit/?id=1ee642e705a63f5ad56a6b55e4bf5c4a64c959b8
+Add that functionality into the shutdown-helper so these features
+will work again.
+---
+ configure.ac.in               |  27 +++++++++
+ xfce4-session/Makefile.am     |   4 +-
+ xfce4-session/xfsm-shutdown.c | 126 ++++++++++++++++++++++++++++++++++++++++--
+ xfce4-session/xfsm-upower.c   |   5 +-
+ xfce4-session/xfsm-upower.h   |   4 ++
+ xfsm-shutdown-helper/main.c   |  26 +++++++++
+ 6 files changed, 186 insertions(+), 6 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 910fd35..d4557a4 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -95,6 +95,7 @@ XDT_CHECK_PACKAGE([LIBWNCK], [libwnck-1.0], [2.30])
+ XDT_CHECK_PACKAGE([DBUS], [dbus-1], [1.1.0])
+ XDT_CHECK_PACKAGE([DBUS_GLIB], [dbus-glib-1], [0.84])
+ XDT_CHECK_PACKAGE([XFCONF], [libxfconf-0], [4.9.0])
++XDT_CHECK_PACKAGE([UPOWER],[upower-glib], [0.9.8])
+ 
+ dnl Check for polkit / systemd integration
+ XDT_CHECK_OPTIONAL_PACKAGE([SYSTEMD], [polkit-gobject-1], [0.100],
+@@ -157,6 +158,31 @@ if test "x$linux_ioprio_works" = "xyes"; then
+             [Defined if linux/ioprio.h not only exists, but works properly])
+ fi
+ 
++dnl Compile time default choice of backend
++AC_ARG_WITH([backend],
++          AS_HELP_STRING([--with-backend=<option>],
++                         [Default backend to use linux, freebsd, openbsd]))
++# default to a sane option
++AC_CANONICAL_HOST
++if test x$with_backend = x; then
++      AS_CASE([$host],
++              [*-linux*],   [with_backend=linux],
++              [*-*freebsd*], [with_backend=freebsd],
++              [*-openbsd*], [with_backend=openbsd])
++fi
++AC_DEFINE_UNQUOTED(BACKEND, "$with_backend", [backend])
++AC_SUBST(BACKEND, "$with_backend")
++
++if test x$with_backend = xlinux; then
++    AC_DEFINE(BACKEND_TYPE_LINUX, 1, [Linux suspend/hibernate backend])
++fi
++if test x$with_backend = xfreebsd; then
++    AC_DEFINE(BACKEND_TYPE_FREEBSD, 1, [FreeBSD suspend/hibernate backend])
++fi
++if test x$with_backend = xopenbsd; then
++    AC_DEFINE(BACKEND_TYPE_OPENBSD, 1, [OpenBSD suspend/hibernate backend])
++fi
++
+ dnl check for location Xfce glade files were installed to
+ XFCE_GLADE_CATALOG_PATH="`pkg-config --variable glade_catalogdir 
libxfce4ui-1`"
+ XFCE_GLADE_PIXMAP_PATH="`pkg-config --variable glade_pixmapdir libxfce4ui-1`"
+@@ -207,5 +233,6 @@ echo " * Gnome Keyring support:          yes"
+ else
+ echo " * Gnome Keyring support:          no"
+ fi
++echo " * Backend:                        ${with_backend}"
+ 
+ echo
+diff --git a/xfce4-session/Makefile.am b/xfce4-session/Makefile.am
+index 5472b33..6b5968e 100644
+--- a/xfce4-session/Makefile.am
++++ b/xfce4-session/Makefile.am
+@@ -83,7 +83,8 @@ xfce4_session_CFLAGS =                                       
                \
+       $(SYSTEMD_CFLAGS)                                               \
+       $(XFCONF_CFLAGS)                                                \
+       $(GMODULE_CFLAGS)                                               \
+-      $(PLATFORM_CFLAGS)
++      $(PLATFORM_CFLAGS)                                              \
++      $(UPOWER_CFLAGS)
+ 
+ xfce4_session_LDFLAGS =                                                       
\
+       -no-undefined                                                   \
+@@ -102,6 +103,7 @@ xfce4_session_LDADD =                                      
                \
+       $(LIBWNCK_LIBS)                                                 \
+       $(SYSTEMD_LIBS)                                                 \
+       $(XFCONF_LIBS)                                                  \
++      $(UPOWER_LIBS)                                                  \
+       -lm
+ 
+ xfce4_session_DEPENDENCIES =                                          \
+diff --git a/xfce4-session/xfsm-shutdown.c b/xfce4-session/xfsm-shutdown.c
+index 4c483a7..cba08b8 100644
+--- a/xfce4-session/xfsm-shutdown.c
++++ b/xfce4-session/xfsm-shutdown.c
+@@ -57,6 +57,7 @@
+ #include <dbus/dbus-glib-lowlevel.h>
+ #include <libxfce4util/libxfce4util.h>
+ #include <gtk/gtk.h>
++#include <upower.h>
+ 
+ #include <libxfsm/xfsm-util.h>
+ 
+@@ -76,6 +77,8 @@
+ 
+ static void xfsm_shutdown_finalize  (GObject      *object);
+ static void xfsm_shutdown_sudo_free (XfsmShutdown *shutdown);
++static gboolean xfsm_shutdown_fallback_can_hibernate (void);
++static gboolean xfsm_shutdown_fallback_can_suspend   (void);
+ 
+ 
+ 
+@@ -403,14 +406,16 @@ xfsm_shutdown_sudo_try_action (XfsmShutdown      
*shutdown,
+   g_return_val_if_fail (shutdown->helper_state == SUDO_AVAILABLE, FALSE);
+   g_return_val_if_fail (shutdown->helper_outfile != NULL, FALSE);
+   g_return_val_if_fail (shutdown->helper_infile != NULL, FALSE);
+-  g_return_val_if_fail (type == XFSM_SHUTDOWN_SHUTDOWN
+-                        || type == XFSM_SHUTDOWN_RESTART, FALSE);
+ 
+   /* the command we send to sudo */
+   if (type == XFSM_SHUTDOWN_SHUTDOWN)
+     action = "POWEROFF";
+   else if (type == XFSM_SHUTDOWN_RESTART)
+     action = "REBOOT";
++  else if (type == XFSM_SHUTDOWN_SUSPEND)
++    action = "SUSPEND";
++  else if (type == XFSM_SHUTDOWN_HIBERNATE)
++    action = "HIBERNATE";
+   else
+     return FALSE;
+ 
+@@ -692,7 +697,17 @@ xfsm_shutdown_try_suspend (XfsmShutdown  *shutdown,
+ {
+   g_return_val_if_fail (XFSM_IS_SHUTDOWN (shutdown), FALSE);
+ 
+-  return xfsm_upower_try_suspend (shutdown->upower, error);
++#if UP_CHECK_VERSION(0, 99, 0)
++  if (shutdown->helper_state == SUDO_AVAILABLE)
++    {
++      xfsm_upower_lock_screen (shutdown->upower, "Suspend", error);
++      return xfsm_shutdown_sudo_try_action (shutdown, XFSM_SHUTDOWN_SUSPEND, 
error);
++    }
++  else
++    return FALSE;
++#else
++    return xfsm_upower_try_suspend (shutdown->upower, error);
++#endif
+ }
+ 
+ 
+@@ -703,7 +718,17 @@ xfsm_shutdown_try_hibernate (XfsmShutdown  *shutdown,
+ {
+   g_return_val_if_fail (XFSM_IS_SHUTDOWN (shutdown), FALSE);
+ 
+-  return xfsm_upower_try_hibernate (shutdown->upower, error);
++#if UP_CHECK_VERSION(0, 99, 0)
++  if (shutdown->helper_state == SUDO_AVAILABLE)
++    {
++      xfsm_upower_lock_screen (shutdown->upower, "Hibernate", error);
++      return xfsm_shutdown_sudo_try_action (shutdown, 
XFSM_SHUTDOWN_HIBERNATE, error);
++    }
++  else
++    return FALSE;
++#else
++    return xfsm_upower_try_hibernate (shutdown->upower, error);
++#endif
+ }
+ 
+ 
+@@ -784,8 +809,13 @@ xfsm_shutdown_can_suspend (XfsmShutdown  *shutdown,
+       return TRUE;
+     }
+ 
++#if UP_CHECK_VERSION(0, 99, 0)
++  *can_suspend = xfsm_shutdown_fallback_can_suspend ();
++  return TRUE;
++#else
+   return xfsm_upower_can_suspend (shutdown->upower, can_suspend, 
+                                   auth_suspend, error);
++#endif
+ }
+ 
+ 
+@@ -804,8 +834,13 @@ xfsm_shutdown_can_hibernate (XfsmShutdown  *shutdown,
+       return TRUE;
+     }
+ 
++#if UP_CHECK_VERSION(0, 99, 0)
++  *can_hibernate = xfsm_shutdown_fallback_can_hibernate ();
++  return TRUE;
++#else
+   return xfsm_upower_can_hibernate (shutdown->upower, can_hibernate,
+                                     auth_hibernate, error);
++#endif
+ }
+ 
+ 
+@@ -816,3 +851,86 @@ xfsm_shutdown_can_save_session (XfsmShutdown *shutdown)
+   g_return_val_if_fail (XFSM_IS_SHUTDOWN (shutdown), FALSE);
+   return shutdown->kiosk_can_save_session;
+ }
++
++
++
++#ifdef BACKEND_TYPE_FREEBSD
++static gboolean
++freebsd_supports_sleep_state (const gchar *state)
++{
++  gboolean ret = FALSE;
++  gchar *sleep_states;
++
++  sleep_states = up_get_string_sysctl (NULL, "hw.acpi.supported_sleep_state");
++  if (sleep_states != NULL)
++    {
++      if (strstr (sleep_states, state) != NULL)
++          ret = TRUE;
++    }
++
++  g_free (sleep_states);
++
++  return ret;
++}
++#endif
++
++#ifdef BACKEND_TYPE_LINUX
++static gboolean
++linux_supports_sleep_state (const gchar *state)
++{
++  gboolean ret = FALSE;
++  gchar *command;
++  GError *error = NULL;
++  gint exit_status;
++
++  /* run script from pm-utils */
++  command = g_strdup_printf ("/usr/bin/pm-is-supported --%s", state);
++
++  ret = g_spawn_command_line_sync (command, NULL, NULL, &exit_status, &error);
++  if (!ret)
++    {
++      g_warning ("failed to run script: %s", error->message);
++      g_error_free (error);
++      goto out;
++    }
++  ret = (WIFEXITED(exit_status) && (WEXITSTATUS(exit_status) == 
EXIT_SUCCESS));
++
++out:
++  g_free (command);
++
++  return ret;
++}
++#endif
++
++
++static gboolean
++xfsm_shutdown_fallback_can_suspend (void)
++{
++#ifdef BACKEND_TYPE_FREEBSD
++  return freebsd_supports_sleep_state ("S3");
++#endif
++#ifdef BACKEND_TYPE_LINUX
++  return linux_supports_sleep_state ("suspend");
++#endif
++#ifdef BACKEND_TYPE_OPENBSD
++  return TRUE;
++#endif
++
++  return FALSE;
++}
++
++static gboolean
++xfsm_shutdown_fallback_can_hibernate (void)
++{
++#ifdef BACKEND_TYPE_FREEBSD
++  return freebsd_supports_sleep_state ("S4");
++#endif
++#ifdef BACKEND_TYPE_LINUX
++  return linux_supports_sleep_state ("hibernate");
++#endif
++#ifdef BACKEND_TYPE_OPENBSD
++  return FALSE;
++#endif
++
++  return FALSE;
++}
+diff --git a/xfce4-session/xfsm-upower.c b/xfce4-session/xfsm-upower.c
+index 57402ec..8112829 100644
+--- a/xfce4-session/xfsm-upower.c
++++ b/xfce4-session/xfsm-upower.c
+@@ -21,6 +21,7 @@
+ 
+ #include <dbus/dbus-glib.h>
+ #include <dbus/dbus-glib-lowlevel.h>
++#include <upower.h>
+ 
+ #include <libxfsm/xfsm-util.h>
+ #include <xfce4-session/xfsm-upower.h>
+@@ -283,7 +284,7 @@ xfsm_upower_try_method (XfsmUPower   *upower,
+ 
+ 
+ 
+-static gboolean
++gboolean
+ xfsm_upower_lock_screen (XfsmUPower   *upower,
+                          const gchar  *sleep_kind,
+                          GError      **error)
+@@ -299,6 +300,7 @@ xfsm_upower_lock_screen (XfsmUPower   *upower,
+     {
+       if (xfsm_upower_proxy_ensure (upower, error))
+         {
++#if !UP_CHECK_VERSION(0, 99, 0)
+           /* tell upower we're going to sleep, this saves some
+            * time while we sleep 1 second if xflock4 is spawned */
+           ret = dbus_g_proxy_call (upower->upower_proxy,
+@@ -312,6 +314,7 @@ xfsm_upower_lock_screen (XfsmUPower   *upower,
+               g_warning ("Couldn't sent that we were about to sleep: %s", 
err->message);
+               g_error_free (err);
+             }
++#endif
+         }
+       else
+         {
+diff --git a/xfce4-session/xfsm-upower.h b/xfce4-session/xfsm-upower.h
+index a492f7d..4e6a53b 100644
+--- a/xfce4-session/xfsm-upower.h
++++ b/xfce4-session/xfsm-upower.h
+@@ -51,4 +51,8 @@ gboolean        xfsm_upower_can_hibernate    (XfsmUPower     
 *upower,
+                                               gboolean        *auth_hibernate,
+                                               GError         **error);
+ 
++gboolean        xfsm_upower_lock_screen      (XfsmUPower      *upower,
++                                              const gchar     *sleep_kind,
++                                              GError         **error);
++
+ #endif /* !__XFSM_UPOWER_HELPER_H__ */
+diff --git a/xfsm-shutdown-helper/main.c b/xfsm-shutdown-helper/main.c
+index 667f288..60c621b 100644
+--- a/xfsm-shutdown-helper/main.c
++++ b/xfsm-shutdown-helper/main.c
+@@ -57,6 +57,12 @@
+ #ifdef REBOOT_CMD
+ #undef REBOOT_CMD
+ #endif
++#ifdef UP_BACKEND_SUSPEND_COMMAND
++#undef UP_BACKEND_SUSPEND_COMMAND
++#endif
++#ifdef UP_BACKEND_HIBERNATE_COMMAND
++#undef UP_BACKEND_HIBERNATE_COMMAND
++#endif
+ 
+ #if defined(__DragonFly__) || defined(__FreeBSD__) || defined(__NetBSD__) || 
defined(__OpenBSD__)
+ #define POWEROFF_CMD  "/sbin/shutdown -p now"
+@@ -68,6 +74,18 @@
+ #define POWEROFF_CMD  "/sbin/shutdown -h now"
+ #define REBOOT_CMD    "/sbin/shutdown -r now"
+ #endif
++#ifdef BACKEND_TYPE_FREEBSD
++#define UP_BACKEND_SUSPEND_COMMAND "/usr/sbin/zzz"
++#define UP_BACKEND_HIBERNATE_COMMAND "/usr/sbin/acpiconf -s 4"
++#endif
++#if BACKEND_TYPE_LINUX
++#define UP_BACKEND_SUSPEND_COMMAND "/usr/sbin/pm-suspend"
++#define UP_BACKEND_HIBERNATE_COMMAND "/usr/sbin/pm-hibernate"
++#endif
++#ifdef BACKEND_TYPE_OPENBSD
++#define UP_BACKEND_SUSPEND_COMMAND    "/usr/sbin/zzz"
++#define UP_BACKEND_HIBERNATE_COMMAND "/dev/null"
++#endif
+ 
+ 
+ static gboolean
+@@ -143,6 +161,14 @@ main (int argc, char **argv)
+     {
+       succeed = run (REBOOT_CMD);
+     }
++  else if (strncasecmp (action, "SUSPEND", 7) == 0)
++    {
++      succeed = run (UP_BACKEND_SUSPEND_COMMAND);
++    }
++  else if (strncasecmp (action, "HIBERNATE", 9) == 0)
++    {
++      succeed = run (UP_BACKEND_HIBERNATE_COMMAND);
++    }
+ 
+   if (succeed)
+     {
+-- 
+1.9.3
+

diff --git a/xfce-base/xfce4-session/xfce4-session-9999.ebuild 
b/xfce-base/xfce4-session/xfce4-session-9999.ebuild
index 756331e..c263fd6 100644
--- a/xfce-base/xfce4-session/xfce4-session-9999.ebuild
+++ b/xfce-base/xfce4-session/xfce4-session-9999.ebuild
@@ -1,6 +1,6 @@
 # Copyright 1999-2014 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
-# $Header: 
/var/cvsroot/gentoo-x86/xfce-base/xfce4-session/xfce4-session-4.11.0.ebuild,v 
1.2 2014/03/15 19:30:21 ssuominen Exp $
+# $Header: 
/var/cvsroot/gentoo-x86/xfce-base/xfce4-session/xfce4-session-4.11.0-r1.ebuild,v
 1.3 2014/06/02 16:39:34 ssuominen Exp $
 
 EAPI=5
 inherit xfconf
@@ -22,16 +22,18 @@ COMMON_DEPEND=">=dev-libs/dbus-glib-0.100
        >=xfce-base/libxfce4ui-4.11
        >=xfce-base/xfconf-4.10
        !xfce-base/xfce-utils
+       udev? ( || ( >=sys-power/upower-0.9.23 sys-power/upower-pm-utils ) )
        systemd? ( >=sys-auth/polkit-0.100 )"
 RDEPEND="${COMMON_DEPEND}
        x11-apps/xrdb
        nls? ( x11-misc/xdg-user-dirs )
-       udev? ( >=sys-power/upower-0.9.20 )
+       !systemd? ( udev? ( sys-power/pm-utils ) )
        xscreensaver? ( || (
                >=x11-misc/xscreensaver-5.26
                gnome-extra/gnome-screensaver
                >=x11-misc/xlockmore-5.43
                x11-misc/slock
+               x11-misc/alock[pam]
                ) )"
 DEPEND="${COMMON_DEPEND}
        dev-util/intltool
@@ -39,6 +41,11 @@ DEPEND="${COMMON_DEPEND}
        virtual/pkgconfig"
 
 pkg_setup() {
+       PATCHES=( "${FILESDIR}"/${PN}-alock_support_to_xflock4.patch )
+
+       # http://bugs.gentoo.org/512084
+       use udev && PATCHES+=( "${FILESDIR}"/${PN}-upower-0.99.patch )
+
        XFCONF=(
                --docdir="${EPREFIX}"/usr/share/doc/${PF}
                $(use_enable systemd)

Reply via email to