summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pcr/upower-pm-utils/PKGBUILD64
-rw-r--r--pcr/upower-pm-utils/upower-pm-utils-0.9.23-always_use_pm-utils_backend.patch28
-rw-r--r--pcr/upower-pm-utils/upower-pm-utils-0.9.23-clamp_percentage_for_overfull_batt.patch72
-rw-r--r--pcr/upower-pm-utils/upower-pm-utils-0.9.23-create-dir-runtime.patch34
-rw-r--r--pcr/upower-pm-utils/upower-pm-utils-0.9.23-fix-segfault.patch24
5 files changed, 222 insertions, 0 deletions
diff --git a/pcr/upower-pm-utils/PKGBUILD b/pcr/upower-pm-utils/PKGBUILD
new file mode 100644
index 000000000..074ee3db6
--- /dev/null
+++ b/pcr/upower-pm-utils/PKGBUILD
@@ -0,0 +1,64 @@
+# Maintainer : freaj <freaj@riseup.net>
+# Maintainer (Manjaro): artoo <artoo@manjaro.org>
+# Contributor (Manjaro): Alexey D. <lq07829icatm@rambler.ru>
+# Contributor (Manjaro): Jan de Groot <jgc@archlinux.org>
+
+_pkgname=upower
+
+pkgname=upower-pm-utils
+pkgver=0.9.23
+pkgrel=5
+pkgdesc="Abstraction for enumerating power devices, listening to device events and querying history and statistics"
+arch=('i686' 'x86_64')
+url="http://upower.freedesktop.org"
+license=('GPL')
+groups=('eudev-base')
+depends=('libusb' 'polkit-consolekit' 'pm-utils' 'dbus-glib' 'libimobiledevice' 'eudev-systemdcompat')
+backup=('etc/UPower/UPower.conf')
+makedepends=('intltool' 'docbook-xsl' 'gobject-introspection' 'python2')
+provides=("upower=${pkgver}")
+conflicts=('upower' 'upower-nosystemd')
+replaces=('upower' 'upower-nosystemd')
+options=('!libtool')
+source=($url/releases/upower-${pkgver}.tar.xz
+ 'upower-pm-utils-0.9.23-clamp_percentage_for_overfull_batt.patch'
+ 'upower-pm-utils-0.9.23-create-dir-runtime.patch'
+ 'upower-pm-utils-0.9.23-fix-segfault.patch'
+ 'upower-pm-utils-0.9.23-always_use_pm-utils_backend.patch')
+
+prepare(){
+ cd "$_pkgname-$pkgver"
+
+ sed -e '/DISABLE_DEPRECATED/d' -i configure
+ sed -e 's|Cflags: |&-DUPOWER_ENABLE_DEPRECATED |' -i upower-glib.pc.in
+
+ patch -p1 -i $srcdir/upower-pm-utils-0.9.23-create-dir-runtime.patch
+ patch -p1 -i $srcdir/upower-pm-utils-0.9.23-fix-segfault.patch
+ patch -p1 -i $srcdir/upower-pm-utils-0.9.23-clamp_percentage_for_overfull_batt.patch
+
+ patch -p1 -i $srcdir/upower-pm-utils-0.9.23-always_use_pm-utils_backend.patch
+}
+
+build() {
+ cd "$_pkgname-$pkgver"
+
+ ./configure \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --libexecdir=/usr/lib/upower \
+ --disable-static \
+ --enable-deprecated
+ make
+}
+
+package() {
+ cd "$_pkgname-$pkgver"
+ make DESTDIR="$pkgdir" install
+}
+
+sha256sums=('433252b0a8e9ab4bed7e17ee3ee5b7cef6d527b1f5401ee32212d82a9682981b'
+ 'cb6e3a54f0ad2f9317f7954504e99485c1422c5ad96c644baa279510084a0858'
+ 'a3b845b2714e1fb3620af8f7153f800bb72316145c76aa6a90a2eedc3aebb527'
+ 'f6908be94d462e9753fe0cfbcd9f36aefc271066cc74e4cfcc57ef966a41a7f6'
+ 'ceb4d915205dcff2937bb82a3646323712eb548e6a9644e48516f647b180abbe')
diff --git a/pcr/upower-pm-utils/upower-pm-utils-0.9.23-always_use_pm-utils_backend.patch b/pcr/upower-pm-utils/upower-pm-utils-0.9.23-always_use_pm-utils_backend.patch
new file mode 100644
index 000000000..e8cdfa895
--- /dev/null
+++ b/pcr/upower-pm-utils/upower-pm-utils-0.9.23-always_use_pm-utils_backend.patch
@@ -0,0 +1,28 @@
+Description: Always use the pm-utils backend for now
+ Redirecting the suspend / hibernate request to logind requires systemd
+ to be running, as logind tries to start the suspend.target /
+ hibernate.target via the D-Bus interface provided by systemd.
+ The availability of logind does not necessarily imply that systemd is
+ available since we made logind D-Bus activatable under sysvinit.
+ Also, the systemd version currently in unstable (v44) is too old and
+ doesn't provide that functionality yet.
+ Ubuntu ships a very basic implementation of that D-Bus inferface in
+ systemd-shim which can be run under sysvinit. But we don't have that
+ package in Debian (yet).
+ For now, it's the safest option to just continue using the old
+ pm-utils backend always.
+Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=718493
+diff --git a/src/linux/up-backend.c b/src/linux/up-backend.c
+index b9f75f5..595a1b2 100644
+--- a/src/linux/up-backend.c
++++ b/src/linux/up-backend.c
+@@ -51,7 +51,7 @@
+
+ #ifdef ENABLE_DEPRECATED
+
+-#define LOGIND_AVAILABLE() (access("/run/systemd/seats/", F_OK) >= 0)
++#define LOGIND_AVAILABLE() (FALSE)
+
+ #define SD_HIBERNATE_COMMAND "gdbus call --system --dest org.freedesktop.login1 --object-path /org/freedesktop/login1 --method org.freedesktop.login1.Manager.Hibernate 'true'"
+ #define SD_SUSPEND_COMMAND "gdbus call --system --dest org.freedesktop.login1 --object-path /org/freedesktop/login1 --method org.freedesktop.login1.Manager.Suspend 'true'"
+
diff --git a/pcr/upower-pm-utils/upower-pm-utils-0.9.23-clamp_percentage_for_overfull_batt.patch b/pcr/upower-pm-utils/upower-pm-utils-0.9.23-clamp_percentage_for_overfull_batt.patch
new file mode 100644
index 000000000..758c06041
--- /dev/null
+++ b/pcr/upower-pm-utils/upower-pm-utils-0.9.23-clamp_percentage_for_overfull_batt.patch
@@ -0,0 +1,72 @@
+From b8fe9902f3c6c50ca6a23e24fcea99582beebc65 Mon Sep 17 00:00:00 2001
+From: Martin Pitt <martinpitt@gnome.org>
+Date: Tue, 22 Oct 2013 08:02:51 +0000
+Subject: linux: Clamp percentage for overfull batteries
+
+Some batteries report energy > energy_full and a percentage ("capacity"
+attribute) > 100%. Clamp these within 0 and 100% for both plausibility as well
+as to avoid setting an out-of-range property which would then become 0%.
+
+https://launchpad.net/bugs/1240673
+---
+diff --git a/src/linux/integration-test b/src/linux/integration-test
+index 8489bf3..4be1922 100755
+--- a/src/linux/integration-test
++++ b/src/linux/integration-test
+@@ -442,6 +442,39 @@ class Tests(unittest.TestCase):
+ self.assertEqual(self.get_dbus_property('OnLowBattery'), False)
+ self.stop_daemon()
+
++ def test_battery_overfull(self):
++ '''battery which reports a > 100% percentage for a full battery'''
++
++ self.testbed.add_device('power_supply', 'BAT0', None,
++ ['type', 'Battery',
++ 'present', '1',
++ 'status', 'Full',
++ 'current_now', '1000',
++ 'charge_now', '11000000',
++ 'charge_full', '10000000',
++ 'charge_full_design', '11000000',
++ 'capacity', '110',
++ 'voltage_now', '12000000'], [])
++
++ self.start_daemon()
++ devs = self.proxy.EnumerateDevices()
++ self.assertEqual(len(devs), 1)
++ bat0_up = devs[0]
++
++ # should clamp percentage
++ self.assertEqual(self.get_dbus_dev_property(bat0_up, 'Percentage'), 100.0)
++ self.assertEqual(self.get_dbus_dev_property(bat0_up, 'IsPresent'), True)
++ self.assertEqual(self.get_dbus_dev_property(bat0_up, 'State'),
++ UP_DEVICE_STATE_FULLY_CHARGED)
++ self.assertEqual(self.get_dbus_dev_property(bat0_up, 'Energy'), 132.0)
++ # should adjust EnergyFull to reality, not what the battery claims
++ self.assertEqual(self.get_dbus_dev_property(bat0_up, 'EnergyFull'), 132.0)
++ self.assertEqual(self.get_dbus_dev_property(bat0_up, 'EnergyFullDesign'), 132.0)
++ self.assertEqual(self.get_dbus_dev_property(bat0_up, 'Voltage'), 12.0)
++ self.assertEqual(self.get_dbus_dev_property(bat0_up, 'PowerSupply'), True)
++ self.assertEqual(self.get_dbus_dev_property(bat0_up, 'Type'), 2)
++ self.stop_daemon()
++
+ def test_battery_temperature(self):
+ '''battery which reports temperature'''
+
+diff --git a/src/linux/up-device-supply.c b/src/linux/up-device-supply.c
+index 8020277..b953d65 100644
+--- a/src/linux/up-device-supply.c
++++ b/src/linux/up-device-supply.c
+@@ -708,6 +708,10 @@ up_device_supply_refresh_battery (UpDeviceSupply *supply)
+ /* get a precise percentage */
+ if (sysfs_file_exists (native_path, "capacity")) {
+ percentage = sysfs_get_double (native_path, "capacity");
++ if (percentage < 0.0f)
++ percentage = 0.0f;
++ if (percentage > 100.0f)
++ percentage = 100.0f;
+ /* for devices which provide capacity, but not {energy,charge}_now */
+ if (energy < 0.1f && energy_full > 0.0f)
+ energy = energy_full * percentage / 100;
+--
+cgit v0.9.0.2-2-gbebe
diff --git a/pcr/upower-pm-utils/upower-pm-utils-0.9.23-create-dir-runtime.patch b/pcr/upower-pm-utils/upower-pm-utils-0.9.23-create-dir-runtime.patch
new file mode 100644
index 000000000..b73cbcb5d
--- /dev/null
+++ b/pcr/upower-pm-utils/upower-pm-utils-0.9.23-create-dir-runtime.patch
@@ -0,0 +1,34 @@
+From b9cff29978113aefe3ad18521f383f12ab099a34 Mon Sep 17 00:00:00 2001
+From: Cosimo Cecchi <cosimo@endlessm.com>
+Date: Tue, 25 Feb 2014 09:43:04 +0000
+Subject: Create the history directory at runtime
+
+In addition to build time - this increases compatibilty with OSTree,
+which starts out with an empty /var.
+
+Signed-off-by: Richard Hughes <richard@hughsie.com>
+---
+diff --git a/src/up-history.c b/src/up-history.c
+index f9d0fdf..795b093 100644
+--- a/src/up-history.c
++++ b/src/up-history.c
+@@ -414,6 +414,7 @@ up_history_set_directory (UpHistory *history, const gchar *dir)
+ {
+ g_free (history->priv->dir);
+ history->priv->dir = g_strdup (dir);
++ g_mkdir_with_parents (dir, 0755);
+ }
+
+ /**
+@@ -887,7 +888,8 @@ up_history_init (UpHistory *history)
+ history->priv->data_time_full = g_ptr_array_new_with_free_func ((GDestroyNotify) g_object_unref);
+ history->priv->data_time_empty = g_ptr_array_new_with_free_func ((GDestroyNotify) g_object_unref);
+ history->priv->max_data_age = UP_HISTORY_DEFAULT_MAX_DATA_AGE;
+- history->priv->dir = g_build_filename (HISTORY_DIR, NULL);
++
++ up_history_set_directory (history, HISTORY_DIR);
+ }
+
+ /**
+--
+cgit v0.9.0.2-2-gbebe
diff --git a/pcr/upower-pm-utils/upower-pm-utils-0.9.23-fix-segfault.patch b/pcr/upower-pm-utils/upower-pm-utils-0.9.23-fix-segfault.patch
new file mode 100644
index 000000000..6afb4f87f
--- /dev/null
+++ b/pcr/upower-pm-utils/upower-pm-utils-0.9.23-fix-segfault.patch
@@ -0,0 +1,24 @@
+From 0d64bbddaa0078ef148d609a3cfad854cf00d7de Mon Sep 17 00:00:00 2001
+From: Martin Pitt <martinpitt@gnome.org>
+Date: Fri, 08 Nov 2013 13:59:50 +0000
+Subject: lib: Fix segfault on getting property when daemon is not running
+
+This fixes "upower --version" when the daemon is not running, and thus the
+client proxy is NULL.
+---
+diff --git a/libupower-glib/up-client.c b/libupower-glib/up-client.c
+index 35d7b5d..17fb02d 100644
+--- a/libupower-glib/up-client.c
++++ b/libupower-glib/up-client.c
+@@ -322,6 +322,9 @@ up_client_get_property (GObject *object,
+ UpClient *client;
+ client = UP_CLIENT (object);
+
++ if (client->priv->proxy == NULL)
++ return;
++
+ switch (prop_id) {
+ case PROP_DAEMON_VERSION:
+ g_value_set_string (value, up_client_glue_get_daemon_version (client->priv->proxy));
+--
+cgit v0.9.0.2-2-gbebe