sys-power/upower: Fix critical battery action being ignored (#618038 by Alex Guzman...
authorPacho Ramos <pacho@gentoo.org>
Sun, 18 Jun 2017 09:28:45 +0000 (11:28 +0200)
committerPacho Ramos <pacho@gentoo.org>
Sun, 18 Jun 2017 09:30:37 +0000 (11:30 +0200)
Package-Manager: Portage-2.3.6, Repoman-2.3.2

sys-power/upower/files/upower-0.99.4-copy-paste.patch [new file with mode: 0644]
sys-power/upower/files/upower-0.99.4-timer-stats.patch [new file with mode: 0644]
sys-power/upower/upower-0.99.4-r1.ebuild [new file with mode: 0644]

diff --git a/sys-power/upower/files/upower-0.99.4-copy-paste.patch b/sys-power/upower/files/upower-0.99.4-copy-paste.patch
new file mode 100644 (file)
index 0000000..6afe9b7
--- /dev/null
@@ -0,0 +1,28 @@
+From 28cee8e2845b094488c337c4ecfa84ada0b6be60 Mon Sep 17 00:00:00 2001
+From: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Tue, 23 Feb 2016 09:51:07 +0100
+Subject: daemon: fix get_critical_action()
+
+Fix copy&paste error from e7e9156f that called the wrong _complete_ function
+for up_daemon_get_critical_action().
+
+https://bugs.freedesktop.org/show_bug.cgi?id=94262
+
+diff --git a/src/up-daemon.c b/src/up-daemon.c
+index be14cbe..e95f904 100644
+--- a/src/up-daemon.c
++++ b/src/up-daemon.c
+@@ -435,8 +435,8 @@ up_daemon_get_critical_action (UpExportedDaemon *skeleton,
+                              GDBusMethodInvocation *invocation,
+                              UpDaemon *daemon)
+ {
+-      up_exported_daemon_complete_get_display_device (skeleton, invocation,
+-                                                      up_backend_get_critical_action (daemon->priv->backend));
++      up_exported_daemon_complete_get_critical_action (skeleton, invocation,
++                                                       up_backend_get_critical_action (daemon->priv->backend));
+       return TRUE;
+ }
+ 
+-- 
+cgit v0.10.2
+
diff --git a/sys-power/upower/files/upower-0.99.4-timer-stats.patch b/sys-power/upower/files/upower-0.99.4-timer-stats.patch
new file mode 100644 (file)
index 0000000..2ac4420
--- /dev/null
@@ -0,0 +1,42 @@
+From 798588a480eaae50368bed75fc78f8314523b2a3 Mon Sep 17 00:00:00 2001
+From: Richard Hughes <richard@hughsie.com>
+Date: Sun, 23 Apr 2017 20:22:02 +0100
+Subject: Do not spin in a loop when /proc/timer_stats cannot be written
+
+Only set up the polling once the write has succeeded.
+
+Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=100626
+
+diff --git a/src/up-wakeups.c b/src/up-wakeups.c
+index 1bc3c7b..99433dd 100644
+--- a/src/up-wakeups.c
++++ b/src/up-wakeups.c
+@@ -626,6 +626,13 @@ up_wakeups_timerstats_enable (UpWakeups *wakeups)
+ 
+       g_debug ("enabling timer stats");
+ 
++      /* enable timer stats */
++      file = fopen (UP_WAKEUPS_SOURCE_USERSPACE, "w");
++      if (file == NULL)
++              return FALSE;
++      fprintf (file, "1\n");
++      fclose (file);
++
+       /* setup polls */
+       wakeups->priv->poll_kernel_id =
+               g_timeout_add_seconds (UP_WAKEUPS_POLL_INTERVAL_KERNEL,
+@@ -637,11 +644,6 @@ up_wakeups_timerstats_enable (UpWakeups *wakeups)
+                                      (GSourceFunc) up_wakeups_poll_userspace_cb, wakeups);
+       g_source_set_name_by_id (wakeups->priv->poll_userspace_id, "[upower] up_wakeups_poll_userspace_cb");
+ 
+-      file = fopen (UP_WAKEUPS_SOURCE_USERSPACE, "w");
+-      if (file == NULL)
+-              return FALSE;
+-      fprintf (file, "1\n");
+-      fclose (file);
+       wakeups->priv->polling_enabled = TRUE;
+       return TRUE;
+ }
+-- 
+cgit v0.10.2
+
diff --git a/sys-power/upower/upower-0.99.4-r1.ebuild b/sys-power/upower/upower-0.99.4-r1.ebuild
new file mode 100644 (file)
index 0000000..3d9123d
--- /dev/null
@@ -0,0 +1,95 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+inherit ltprune systemd
+
+DESCRIPTION="D-Bus abstraction for enumerating power devices, querying history and statistics"
+HOMEPAGE="https://upower.freedesktop.org/"
+SRC_URI="https://${PN}.freedesktop.org/releases/${P}.tar.xz"
+
+LICENSE="GPL-2"
+SLOT="0/3" # based on SONAME of libupower-glib.so
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~ia64 ~mips ~ppc ~ppc64 ~sparc ~x86 ~x86-fbsd"
+
+# gtk-doc files are not available as prebuilt in the tarball
+IUSE="doc +introspection ios kernel_FreeBSD kernel_linux selinux"
+
+COMMON_DEPS="
+       >=dev-libs/dbus-glib-0.100
+       >=dev-libs/glib-2.34:2
+       sys-apps/dbus:=
+       introspection? ( dev-libs/gobject-introspection:= )
+       kernel_linux? (
+               virtual/libusb:1
+               virtual/libgudev:=
+               virtual/udev
+               ios? (
+                       >=app-pda/libimobiledevice-1:=
+                       >=app-pda/libplist-1:=
+                       )
+               )
+"
+RDEPEND="
+       ${COMMON_DEPS}
+       selinux? ( sec-policy/selinux-devicekit )
+"
+DEPEND="${COMMON_DEPS}
+       doc? ( dev-util/gtk-doc )
+       dev-libs/libxslt
+       app-text/docbook-xsl-stylesheets
+       dev-util/intltool
+       >=sys-devel/gettext-0.17
+       virtual/pkgconfig
+"
+
+QA_MULTILIB_PATHS="usr/lib/${PN}/.*"
+
+DOCS="AUTHORS HACKING NEWS README"
+
+PATCHES=(
+       # Fix calling the wrong _complete_ function for up_daemon_get_critical_action()
+       # (from 'master')
+       "${FILESDIR}"/${P}-copy-paste.patch
+
+       # Do not spin in a loop when /proc/timer_stats cannot be written
+       # (from 'master')
+       "${FILESDIR}"/${P}-timer-stats.patch
+)
+
+src_prepare() {
+       default
+       sed -i -e '/DISABLE_DEPRECATED/d' configure || die
+}
+
+src_configure() {
+       local backend myconf
+
+       if use kernel_linux; then
+               backend=linux
+       elif use kernel_FreeBSD; then
+               backend=freebsd
+       else
+               backend=dummy
+       fi
+
+       econf \
+               $(use_enable doc gtk-doc) \
+               --libexecdir="${EPREFIX}"/usr/lib/${PN} \
+               --localstatedir="${EPREFIX}"/var \
+               $(use_enable introspection) \
+               --disable-static \
+               ${myconf} \
+               --enable-man-pages \
+               --disable-tests \
+               --with-backend=${backend} \
+               $(use_with ios idevice) \
+               --with-systemdutildir="$(systemd_get_utildir)" \
+               --with-systemdsystemunitdir="$(systemd_get_systemunitdir)"
+}
+
+src_install() {
+       default
+       keepdir /var/lib/upower #383091
+       prune_libtool_files
+}