diff options
author | Samuli Suominen <ssuominen@gentoo.org> | 2014-07-08 13:58:39 +0000 |
---|---|---|
committer | Samuli Suominen <ssuominen@gentoo.org> | 2014-07-08 13:58:39 +0000 |
commit | 0e2edc02411664deccac86d74366b6426ee1bf8f (patch) | |
tree | 387f18bbb9eb95fc33acadbf7968eb0291e9b7e0 /xfce-base | |
parent | Version bump (diff) | |
download | gentoo-2-0e2edc02411664deccac86d74366b6426ee1bf8f.tar.gz gentoo-2-0e2edc02411664deccac86d74366b6426ee1bf8f.tar.bz2 gentoo-2-0e2edc02411664deccac86d74366b6426ee1bf8f.zip |
Use updated UPower 0.99.0 patch from http://bugzilla.xfce.org/show_bug.cgi?id=9952#c20
(Portage version: 2.2.10/cvs/Linux x86_64, signed Manifest commit with key 4868F14D)
Diffstat (limited to 'xfce-base')
-rw-r--r-- | xfce-base/xfce4-session/ChangeLog | 10 | ||||
-rw-r--r-- | xfce-base/xfce4-session/files/xfce4-session-4.11.0-upower-0.99.0.patch | 448 | ||||
-rw-r--r-- | xfce-base/xfce4-session/xfce4-session-4.11.0-r2.ebuild | 70 |
3 files changed, 527 insertions, 1 deletions
diff --git a/xfce-base/xfce4-session/ChangeLog b/xfce-base/xfce4-session/ChangeLog index 61aa84a1276f..9cca80013396 100644 --- a/xfce-base/xfce4-session/ChangeLog +++ b/xfce-base/xfce4-session/ChangeLog @@ -1,6 +1,14 @@ # ChangeLog for xfce-base/xfce4-session # Copyright 1999-2014 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/xfce-base/xfce4-session/ChangeLog,v 1.214 2014/06/29 18:58:12 maekke Exp $ +# $Header: /var/cvsroot/gentoo-x86/xfce-base/xfce4-session/ChangeLog,v 1.215 2014/07/08 13:58:39 ssuominen Exp $ + +*xfce4-session-4.11.0-r2 (08 Jul 2014) + + 08 Jul 2014; Samuli Suominen <ssuominen@gentoo.org> + +files/xfce4-session-4.11.0-upower-0.99.0.patch, + +xfce4-session-4.11.0-r2.ebuild: + Use updated UPower 0.99.0 patch from + http://bugzilla.xfce.org/show_bug.cgi?id=9952#c20 29 Jun 2014; Markus Meier <maekke@gentoo.org> xfce4-session-4.10.1-r2.ebuild: arm stable, bug #513930 diff --git a/xfce-base/xfce4-session/files/xfce4-session-4.11.0-upower-0.99.0.patch b/xfce-base/xfce4-session/files/xfce4-session-4.11.0-upower-0.99.0.patch new file mode 100644 index 000000000000..a5e59f47f11b --- /dev/null +++ b/xfce-base/xfce4-session/files/xfce4-session-4.11.0-upower-0.99.0.patch @@ -0,0 +1,448 @@ +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 38afe446cdc889266f1e553952397cc4a876ecf8 Mon Sep 17 00:00:00 2001 +From: Eric Koegel <eric.koegel@gmail.com> +Date: Mon, 7 Jul 2014 11:30:06 +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. Additionally Upower is an optional build dependency +and the minimum required is 0.9.7 to support FreeBSD 9 and 10. +--- + configure.ac.in | 30 ++++++++ + xfce4-session/Makefile.am | 4 +- + xfce4-session/xfsm-shutdown.c | 167 +++++++++++++++++++++++++++++++++++++++++- + xfce4-session/xfsm-upower.c | 8 +- + xfce4-session/xfsm-upower.h | 4 + + xfsm-shutdown-helper/main.c | 26 +++++++ + 6 files changed, 234 insertions(+), 5 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 910fd35..b9c9a90 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -96,6 +96,10 @@ 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]) + ++dnl Check for Upower ++XDT_CHECK_OPTIONAL_PACKAGE([UPOWER],[upower-glib], [0.9.7], ++ [upower],[Upower support]) ++ + dnl Check for polkit / systemd integration + XDT_CHECK_OPTIONAL_PACKAGE([SYSTEMD], [polkit-gobject-1], [0.100], + [systemd], [Systemd support (through polit)]) +@@ -157,6 +161,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 +236,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..24b548e 100644 +--- a/xfce4-session/xfsm-shutdown.c ++++ b/xfce4-session/xfsm-shutdown.c +@@ -57,6 +57,9 @@ + #include <dbus/dbus-glib-lowlevel.h> + #include <libxfce4util/libxfce4util.h> + #include <gtk/gtk.h> ++#ifdef HAVE_UPOWER ++#include <upower.h> ++#endif + + #include <libxfsm/xfsm-util.h> + +@@ -76,6 +79,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 +408,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 +699,19 @@ xfsm_shutdown_try_suspend (XfsmShutdown *shutdown, + { + g_return_val_if_fail (XFSM_IS_SHUTDOWN (shutdown), FALSE); + ++#ifdef HAVE_UPOWER ++#if !UP_CHECK_VERSION(0, 99, 0) + return xfsm_upower_try_suspend (shutdown->upower, error); ++#endif /* UP_CHECK_VERSION */ ++#endif /* HAVE_UPOWER */ ++ ++ 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; + } + + +@@ -703,7 +722,19 @@ xfsm_shutdown_try_hibernate (XfsmShutdown *shutdown, + { + g_return_val_if_fail (XFSM_IS_SHUTDOWN (shutdown), FALSE); + ++#ifdef HAVE_UPOWER ++#if !UP_CHECK_VERSION(0, 99, 0) + return xfsm_upower_try_hibernate (shutdown->upower, error); ++#endif /* UP_CHECK_VERSION */ ++#endif /* HAVE_UPOWER */ ++ ++ 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; + } + + +@@ -784,8 +815,15 @@ xfsm_shutdown_can_suspend (XfsmShutdown *shutdown, + return TRUE; + } + ++#ifdef HAVE_UPOWER ++#if !UP_CHECK_VERSION(0, 99, 0) + return xfsm_upower_can_suspend (shutdown->upower, can_suspend, + auth_suspend, error); ++#endif /* UP_CHECK_VERSION */ ++#endif /* HAVE_UPOWER */ ++ ++ *can_suspend = xfsm_shutdown_fallback_can_suspend (); ++ return TRUE; + } + + +@@ -804,8 +842,15 @@ xfsm_shutdown_can_hibernate (XfsmShutdown *shutdown, + return TRUE; + } + ++#ifdef HAVE_UPOWER ++#if !UP_CHECK_VERSION(0, 99, 0) + return xfsm_upower_can_hibernate (shutdown->upower, can_hibernate, + auth_hibernate, error); ++#endif /* UP_CHECK_VERSION */ ++#endif /* HAVE_UPOWER */ ++ ++ *can_hibernate = xfsm_shutdown_fallback_can_hibernate (); ++ return TRUE; + } + + +@@ -816,3 +861,121 @@ 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 gchar * ++get_string_sysctl (GError **err, const gchar *format, ...) ++{ ++ va_list args; ++ gchar *name; ++ size_t value_len; ++ gchar *str = NULL; ++ ++ g_return_val_if_fail(format != NULL, FALSE); ++ ++ va_start (args, format); ++ name = g_strdup_vprintf (format, args); ++ va_end (args); ++ ++ if (sysctlbyname (name, NULL, &value_len, NULL, 0) == 0) { ++ str = g_new (char, value_len + 1); ++ if (sysctlbyname (name, str, &value_len, NULL, 0) == 0) ++ str[value_len] = 0; ++ else { ++ g_free (str); ++ str = NULL; ++ } ++ } ++ ++ if (!str) ++ g_set_error (err, 0, 0, "%s", g_strerror(errno)); ++ ++ g_free(name); ++ return str; ++} ++ ++ ++ ++static gboolean ++freebsd_supports_sleep_state (const gchar *state) ++{ ++ gboolean ret = FALSE; ++ gchar *sleep_states; ++ ++ sleep_states = 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 /* BACKEND_TYPE_FREEBSD */ ++ ++ ++ ++#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 /* BACKEND_TYPE_LINUX */ ++ ++ ++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..2960943 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,14 +284,13 @@ xfsm_upower_try_method (XfsmUPower *upower, + + + +-static gboolean ++gboolean + xfsm_upower_lock_screen (XfsmUPower *upower, + const gchar *sleep_kind, + GError **error) + { + XfconfChannel *channel; + gboolean ret = TRUE; +- GError *err = NULL; + + g_return_val_if_fail (sleep_kind != NULL, FALSE); + +@@ -299,6 +299,9 @@ xfsm_upower_lock_screen (XfsmUPower *upower, + { + if (xfsm_upower_proxy_ensure (upower, error)) + { ++#if !UP_CHECK_VERSION(0, 99, 0) ++ GError *err = NULL; ++ + /* 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 +315,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) + { +-- +2.0.0 + diff --git a/xfce-base/xfce4-session/xfce4-session-4.11.0-r2.ebuild b/xfce-base/xfce4-session/xfce4-session-4.11.0-r2.ebuild new file mode 100644 index 000000000000..15f249cd441e --- /dev/null +++ b/xfce-base/xfce4-session/xfce4-session-4.11.0-r2.ebuild @@ -0,0 +1,70 @@ +# 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-r2.ebuild,v 1.1 2014/07/08 13:58:39 ssuominen Exp $ + +EAPI=5 +EAUTORECONF=1 +inherit xfconf + +DESCRIPTION="A session manager for the Xfce desktop environment" +HOMEPAGE="http://docs.xfce.org/xfce/xfce4-session/start" +SRC_URI="mirror://xfce/src/xfce/${PN}/${PV%.*}/${P}.tar.bz2" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sparc ~x86 ~x86-fbsd ~x86-freebsd ~x86-interix ~amd64-linux ~x86-linux ~x86-solaris" +IUSE="debug nls systemd udev +xscreensaver" + +COMMON_DEPEND=">=dev-libs/dbus-glib-0.100 + x11-apps/iceauth + x11-libs/libSM + >=x11-libs/libwnck-2.30:1 + x11-libs/libX11 + >=xfce-base/libxfce4util-4.11 + >=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 ) + !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 + sys-devel/gettext + virtual/pkgconfig" + +pkg_setup() { + PATCHES=( + "${FILESDIR}"/${PN}-4.10.1-alock_support_to_xflock4.patch + "${FILESDIR}"/${P}-upower-0.99.0.patch + ) + + XFCONF=( + --docdir="${EPREFIX}"/usr/share/doc/${PF} + $(use_enable udev upower) + $(use_enable systemd) + --with-xsession-prefix="${EPREFIX}"/usr + $(xfconf_use_debug) + ) + + DOCS=( AUTHORS BUGS ChangeLog NEWS README TODO ) +} + +src_install() { + xfconf_src_install + + local sessiondir=/etc/X11/Sessions + echo startxfce4 > "${T}"/Xfce4 + exeinto ${sessiondir} + doexe "${T}"/Xfce4 + dosym Xfce4 ${sessiondir}/Xfce +} |