From 3234e68720804ff83be07729cdce0ddbecbb2b70 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sat, 23 Jul 2022 11:28:19 +0000 Subject: [PATCH 01/30] Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild Signed-off-by: Fedora Release Engineering From fb62487adc60b7d770838f8edd342c70c1d3908f Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sat, 21 Jan 2023 05:53:33 +0000 Subject: [PATCH 02/30] Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild Signed-off-by: Fedora Release Engineering From 4e2e15c749db3432cdd292d7c403d5e9e6dc69fb Mon Sep 17 00:00:00 2001 From: Yaakov Selkowitz Date: Sun, 19 Feb 2023 07:23:24 -0500 Subject: [PATCH 03/30] Separate libs package This is needed for flatpak builds of upower-dependent clients, which will communicate with the system upower service over D-Bus, to avoid pulling in systemd. --- upower.spec | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/upower.spec b/upower.spec index 6e72b0c..15bee75 100644 --- a/upower.spec +++ b/upower.spec @@ -22,24 +22,33 @@ BuildRequires: gobject-introspection-devel BuildRequires: gtk-doc BuildRequires: systemd +Requires: %{name}-libs%{?_isa} = %{version}-%{release} Requires: udev -Requires: gobject-introspection %description UPower (formerly DeviceKit-power) provides a daemon, API and command line tools for managing power devices attached to the system. +%package libs +Summary: Client libraries for UPower +Requires: gobject-introspection +Recommends: %{name}%{?_isa} = %{version}-%{release} +Conflicts: %{name} < 0.99.20-4 + +%description libs +Client libraries for UPower. + %package devel Summary: Headers and libraries for UPower -Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: %{name}-libs%{?_isa} = %{version}-%{release} %description devel Headers and libraries for UPower. %package devel-docs Summary: Developer documentation for for libupower-glib -Requires: %{name} = %{version}-%{release} +Requires: %{name}-libs = %{version}-%{release} BuildArch: noarch %description devel-docs @@ -77,7 +86,6 @@ Developer documentation for for libupower-glib. %{!?_licensedir:%global license %%doc} %license COPYING %doc NEWS AUTHORS HACKING README -%{_libdir}/libupower-glib.so.* %{_datadir}/dbus-1/system.d/*.conf %{_udevrulesdir}/*.rules %{_udevhwdbdir}/*.hwdb @@ -86,13 +94,17 @@ Developer documentation for for libupower-glib. %config %{_sysconfdir}/UPower/UPower.conf %{_bindir}/* %{_libexecdir}/* -%{_libdir}/girepository-1.0/*.typelib %{_mandir}/man1/* %{_mandir}/man7/* %{_mandir}/man8/* %{_datadir}/dbus-1/system-services/*.service %{_unitdir}/*.service +%files libs +%license COPYING +%{_libdir}/libupower-glib.so.3{,.*} +%{_libdir}/girepository-1.0/*.typelib + %files devel %{_datadir}/dbus-1/interfaces/*.xml %{_libdir}/libupower-glib.so From 64880686f75af64f563aaf260eb14e4d8fa40a53 Mon Sep 17 00:00:00 2001 From: Richard Hughes Date: Wed, 22 Feb 2023 09:38:07 +0000 Subject: [PATCH 04/30] migrated to SPDX license --- upower.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/upower.spec b/upower.spec index 15bee75..5b0b2bc 100644 --- a/upower.spec +++ b/upower.spec @@ -2,7 +2,7 @@ Summary: Power Management Service Name: upower Version: 0.99.20 Release: %autorelease -License: GPLv2+ +License: GPL-2.0-or-later URL: http://upower.freedesktop.org/ Source0: https://gitlab.freedesktop.org/upower/%{name}/-/archive/v%{version}/%{name}-v%{version}.tar.bz2 From dc5bf473a007ffe706a551ad7088ed92508adb9c Mon Sep 17 00:00:00 2001 From: Bastien Nocera Date: Tue, 4 Jul 2023 16:33:32 +0200 Subject: [PATCH 05/30] Update to 1.90.1 --- .gitignore | 1 + sources | 2 +- upower.spec | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 5e6ada9..5fcb9a8 100644 --- a/.gitignore +++ b/.gitignore @@ -38,3 +38,4 @@ upower-0.9.5.tar.bz2 /upower-v0.99.14.tar.bz2 /upower-v0.99.19.tar.bz2 /upower-v0.99.20.tar.bz2 +/upower-v1.90.1.tar.bz2 diff --git a/sources b/sources index 8cf5295..76e7e98 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (upower-v0.99.20.tar.bz2) = 50e5b03f1319da3869b0caba4fbe78c8eabf1df6f783f1463b06394bee58bae42ad411780faa503965c5fdb983d723c0b5ae0731fae4220997a17875f4850b1e +SHA512 (upower-v1.90.1.tar.bz2) = bc4698c032d894164e8fb9b38a5052116c14c9dd9104d27e493abb865b59343ccee2f335addabbc1e89ca698cc8126792137d3ed6e7cdd74d4787c0a53afb429 diff --git a/upower.spec b/upower.spec index 5b0b2bc..19506a7 100644 --- a/upower.spec +++ b/upower.spec @@ -1,6 +1,6 @@ Summary: Power Management Service Name: upower -Version: 0.99.20 +Version: 1.90.1 Release: %autorelease License: GPL-2.0-or-later URL: http://upower.freedesktop.org/ From 9a30f3c81b2e80edd4aa92221425cc24334cb554 Mon Sep 17 00:00:00 2001 From: Bastien Nocera Date: Thu, 6 Jul 2023 11:08:11 +0200 Subject: [PATCH 06/30] Update to 1.90.2 --- .gitignore | 1 + sources | 2 +- upower.spec | 3 ++- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 5fcb9a8..a1763c2 100644 --- a/.gitignore +++ b/.gitignore @@ -39,3 +39,4 @@ upower-0.9.5.tar.bz2 /upower-v0.99.19.tar.bz2 /upower-v0.99.20.tar.bz2 /upower-v1.90.1.tar.bz2 +/upower-v1.90.2.tar.bz2 diff --git a/sources b/sources index 76e7e98..88378b4 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (upower-v1.90.1.tar.bz2) = bc4698c032d894164e8fb9b38a5052116c14c9dd9104d27e493abb865b59343ccee2f335addabbc1e89ca698cc8126792137d3ed6e7cdd74d4787c0a53afb429 +SHA512 (upower-v1.90.2.tar.bz2) = 9cdaea76d604e79bb385c2d7d8df26ab74d8fbbd5ddd271d7dc3323ae4f98ce9504ce807638e008869fdec0e1fcaf8d4be53e486714913616b8df73d8e4ac396 diff --git a/upower.spec b/upower.spec index 19506a7..2a5a39e 100644 --- a/upower.spec +++ b/upower.spec @@ -1,6 +1,6 @@ Summary: Power Management Service Name: upower -Version: 1.90.1 +Version: 1.90.2 Release: %autorelease License: GPL-2.0-or-later URL: http://upower.freedesktop.org/ @@ -99,6 +99,7 @@ Developer documentation for for libupower-glib. %{_mandir}/man8/* %{_datadir}/dbus-1/system-services/*.service %{_unitdir}/*.service +%{_datadir}/installed-tests/upower/upower-integration.test %files libs %license COPYING From e42dc557e67781a3c3b88a0cd6fc3007565fa281 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sat, 22 Jul 2023 17:11:38 +0000 Subject: [PATCH 07/30] Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild Signed-off-by: Fedora Release Engineering From ef8cbd3e58d9dcb2bfd098899dc134b81f3b9dab Mon Sep 17 00:00:00 2001 From: Michel Alexandre Salim Date: Fri, 28 Jul 2023 17:32:17 -0500 Subject: [PATCH 08/30] Rebuilt for libimobiledevice and libplist soname bump Signed-off-by: Michel Alexandre Salim From 31479f0c50b2c89b3115541f68ffd2b5154af171 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sat, 27 Jan 2024 07:11:23 +0000 Subject: [PATCH 09/30] Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild From e0e40e7b029ac05b4d4e5174123f9af9b14d08ad Mon Sep 17 00:00:00 2001 From: Leigh Scott Date: Wed, 10 Apr 2024 16:13:17 +0100 Subject: [PATCH 10/30] Update to 1.90.4 --- .gitignore | 1 + sources | 2 +- upower.spec | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index a1763c2..40e4c7a 100644 --- a/.gitignore +++ b/.gitignore @@ -40,3 +40,4 @@ upower-0.9.5.tar.bz2 /upower-v0.99.20.tar.bz2 /upower-v1.90.1.tar.bz2 /upower-v1.90.2.tar.bz2 +/upower-v1.90.4.tar.bz2 diff --git a/sources b/sources index 88378b4..b575fdb 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (upower-v1.90.2.tar.bz2) = 9cdaea76d604e79bb385c2d7d8df26ab74d8fbbd5ddd271d7dc3323ae4f98ce9504ce807638e008869fdec0e1fcaf8d4be53e486714913616b8df73d8e4ac396 +SHA512 (upower-v1.90.4.tar.bz2) = 2db8f2fea4086939c7ec236674ddd03ff043eeb1c7e46deb40b45aed5d31b6eb0e84fa44f189336b0a171f3e2f92f2f50e2f355b9366e0d686e570d0107e88da diff --git a/upower.spec b/upower.spec index 2a5a39e..4dccc5a 100644 --- a/upower.spec +++ b/upower.spec @@ -1,6 +1,6 @@ Summary: Power Management Service Name: upower -Version: 1.90.2 +Version: 1.90.4 Release: %autorelease License: GPL-2.0-or-later URL: http://upower.freedesktop.org/ From a5f363789c19c372b9705718ed44c842d894559c Mon Sep 17 00:00:00 2001 From: Kate Hsuan Date: Tue, 11 Jun 2024 16:38:10 +0800 Subject: [PATCH 11/30] Fix test dependency pygobject-devel is renamed to python3-gobject-base. --- tests/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/tests.yml b/tests/tests.yml index cdee703..20dd538 100644 --- a/tests/tests.yml +++ b/tests/tests.yml @@ -12,7 +12,7 @@ - classic required_packages: - upower - - pygobject3-devel + - python3-gobject-base - python3-dbus - python3-dbusmock - python3-packaging From f4fe8b920144e6fa5c2a52f0910fd873c2ec9f75 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sat, 20 Jul 2024 08:20:35 +0000 Subject: [PATCH 12/30] Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild From 4ef5b48c65a3a7a6c5b10394f6680016043ffcbe Mon Sep 17 00:00:00 2001 From: Kate Hsuan Date: Sat, 14 Sep 2024 16:00:49 +0800 Subject: [PATCH 13/30] Updated to upstream release 1.90.5 - Support battery charging limit --- .gitignore | 1 + 0001-ci-Add-polkit-dependency.patch | 24 ++ 0002-Revert-Remove-polkit-tests.patch | 88 +++++++ ...nux-integration-test-Add-polkit-test.patch | 229 ++++++++++++++++++ ...up-polkit-Add-G_ADD_PRIVATE-UpPolkit.patch | 30 +++ ...-global-variable-and-remove-g_object.patch | 41 ++++ ...lace-with-G_DEFINE_TYPE_WITH_PRIVATE.patch | 28 +++ sources | 2 +- upower.spec | 16 +- 9 files changed, 457 insertions(+), 2 deletions(-) create mode 100644 0001-ci-Add-polkit-dependency.patch create mode 100644 0002-Revert-Remove-polkit-tests.patch create mode 100644 0003-linux-integration-test-Add-polkit-test.patch create mode 100644 0004-up-polkit-Add-G_ADD_PRIVATE-UpPolkit.patch create mode 100644 0008-up-polkit-remove-global-variable-and-remove-g_object.patch create mode 100644 0009-up-polkit-Replace-with-G_DEFINE_TYPE_WITH_PRIVATE.patch diff --git a/.gitignore b/.gitignore index 40e4c7a..632891e 100644 --- a/.gitignore +++ b/.gitignore @@ -41,3 +41,4 @@ upower-0.9.5.tar.bz2 /upower-v1.90.1.tar.bz2 /upower-v1.90.2.tar.bz2 /upower-v1.90.4.tar.bz2 +/upower-v1.90.5.tar.bz2 diff --git a/0001-ci-Add-polkit-dependency.patch b/0001-ci-Add-polkit-dependency.patch new file mode 100644 index 0000000..7f9ec8e --- /dev/null +++ b/0001-ci-Add-polkit-dependency.patch @@ -0,0 +1,24 @@ +From b26c8c79c9ff7fd0ba63e893171c6d5b164fda82 Mon Sep 17 00:00:00 2001 +From: Kate Hsuan +Date: Wed, 28 Aug 2024 13:29:41 +0800 +Subject: [PATCH 1/9] ci: Add polkit dependency + +--- + .gitlab-ci.yml | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml +index fbdbd53..1476c85 100644 +--- a/.gitlab-ci.yml ++++ b/.gitlab-ci.yml +@@ -25,6 +25,7 @@ variables: + libplist-devel + umockdev + dbus-x11 ++ polkit-devel + python3-gobject + python3-dbusmock + python3-pip +-- +2.46.0 + diff --git a/0002-Revert-Remove-polkit-tests.patch b/0002-Revert-Remove-polkit-tests.patch new file mode 100644 index 0000000..2f6dacf --- /dev/null +++ b/0002-Revert-Remove-polkit-tests.patch @@ -0,0 +1,88 @@ +From f55641cd4335997bffd2a662de84c69a45ce9394 Mon Sep 17 00:00:00 2001 +From: Kate Hsuan +Date: Thu, 22 Aug 2024 20:43:43 +0800 +Subject: [PATCH 2/9] Revert "Remove polkit tests" + +This reverts commit bddc559713ed3e8d790231139b21c8277931b5d0. + +Changes: +- Removed Makefile +- Removed test for UpWakeups +--- + README | 1 + + src/up-self-test.c | 26 ++++++++++++++++++++++++++ + 2 files changed, 27 insertions(+) + +diff --git a/README b/README +index dd2a18c..d7f325e 100644 +--- a/README ++++ b/README +@@ -8,6 +8,7 @@ Requirements: + gio-2.0 >= 2.16.1 + gudev-1.0 >= 235 (Linux) + libimobiledevice-1.0 >= 0.9.7 (optional) ++ polkit-gobject-1 >= 124 + + UPower is an abstraction for enumerating power devices, + listening to device events and querying history and statistics. +diff --git a/src/up-self-test.c b/src/up-self-test.c +index f60618f..a60f5f2 100644 +--- a/src/up-self-test.c ++++ b/src/up-self-test.c +@@ -33,6 +33,7 @@ + #include "up-device-list.h" + #include "up-history.h" + #include "up-native.h" ++#include "up-polkit.h" + + gchar *history_dir = NULL; + +@@ -64,6 +65,12 @@ up_test_daemon_func (void) + { + UpDaemon *daemon; + ++ /* needs polkit, which only listens to the system bus */ ++ if (!g_file_test (DBUS_SYSTEM_SOCKET, G_FILE_TEST_EXISTS)) { ++ puts("No system D-BUS running, skipping test"); ++ return; ++ } ++ + daemon = up_daemon_new (); + g_assert (daemon != NULL); + +@@ -274,6 +281,24 @@ up_test_history_func (void) + rmdir (history_dir); + } + ++static void ++up_test_polkit_func (void) ++{ ++ UpPolkit *polkit; ++ ++ /* polkit only listens to the system bus */ ++ if (!g_file_test (DBUS_SYSTEM_SOCKET, G_FILE_TEST_EXISTS)) { ++ puts("No system D-BUS running, skipping test"); ++ return; ++ } ++ ++ polkit = up_polkit_new (); ++ g_assert (polkit != NULL); ++ ++ /* unref */ ++ g_object_unref (polkit); ++} ++ + int + main (int argc, char **argv) + { +@@ -290,6 +315,7 @@ main (int argc, char **argv) + g_test_add_func ("/power/device_list", up_test_device_list_func); + g_test_add_func ("/power/history", up_test_history_func); + g_test_add_func ("/power/native", up_test_native_func); ++ g_test_add_func ("/power/polkit", up_test_polkit_func); + g_test_add_func ("/power/daemon", up_test_daemon_func); + + return g_test_run (); +-- +2.46.0 + diff --git a/0003-linux-integration-test-Add-polkit-test.patch b/0003-linux-integration-test-Add-polkit-test.patch new file mode 100644 index 0000000..f10baf2 --- /dev/null +++ b/0003-linux-integration-test-Add-polkit-test.patch @@ -0,0 +1,229 @@ +From b71996a526a73a18ae5e66ad6ce52c297a458df9 Mon Sep 17 00:00:00 2001 +From: Kate Hsuan +Date: Wed, 28 Aug 2024 12:57:40 +0800 +Subject: [PATCH 3/9] linux: integration-test: Add polkit test + +Test action is allowed and not allowed when calling EnableChargeThreshold +dbus API. +--- + src/linux/integration-test.py | 162 +++++++++++++++++++++++++++++++++- + 1 file changed, 159 insertions(+), 3 deletions(-) + +diff --git a/src/linux/integration-test.py b/src/linux/integration-test.py +index 61dfa56..df754c7 100755 +--- a/src/linux/integration-test.py ++++ b/src/linux/integration-test.py +@@ -157,6 +157,7 @@ class Tests(dbusmock.DBusTestCase): + self.daemon = None + self.bluez = None + self.start_logind({'CanHybridSleep' : 'yes'}) ++ self.start_polkitd({}) + + @classmethod + def stop_process(cls, proc, timeout=1): +@@ -324,6 +325,11 @@ class Tests(dbusmock.DBusTestCase): + parameters or {}) + self.addCleanup(self.stop_process, self.bluez) + ++ def start_polkitd(self, parameters=None): ++ self.polkit, self.polkit_obj = self.spawn_server_template('polkitd', ++ parameters or {}) ++ self.addCleanup(self.stop_process, self.polkit) ++ + def assertEventually(self, condition, message=None, timeout=50, value=True): + '''Assert that condition function eventually returns True. + +@@ -1014,6 +1020,10 @@ class Tests(dbusmock.DBusTestCase): + def test_battery_charge_limit_multiple_batteries(self): + '''Battery with charge limits with multiple batteries''' + ++ if not self.polkit: ++ self.start_polkitd({}) ++ self.polkit_obj.SetAllowed(['org.freedesktop.UPower.enable-charging-limit']) ++ + self.testbed.add_device('power_supply', 'BAT0', None, + ['type', 'Battery', + 'present', '1', +@@ -1062,9 +1072,75 @@ class Tests(dbusmock.DBusTestCase): + with open(f'/sys/class/power_supply/{battery_name}/charge_control_end_threshold') as fp: + self.assertEqual(fp.read(), '80') + ++ def test_battery_charge_limit_multiple_batteries_polkit_not_allowed(self): ++ '''Battery with charge limits with multiple batteries, but polkit isn't allowed''' ++ ++ if not self.polkit: ++ self.start_polkitd({}) ++ ++ self.testbed.add_device('power_supply', 'BAT0', None, ++ ['type', 'Battery', ++ 'present', '1', ++ 'status', 'unknown', ++ 'energy_full', '60000000', ++ 'energy_full_design', '80000000', ++ 'energy_now', '48000000', ++ 'voltage_now', '12000000', ++ 'charge_control_start_threshold', '0', ++ 'charge_control_end_threshold', '100', ++ ], []) ++ self.testbed.set_property("/sys/class/power_supply/BAT0", 'CHARGE_LIMIT', '70,80') ++ ++ self.testbed.add_device('power_supply', 'BAT1', None, ++ ['type', 'Battery', ++ 'present', '1', ++ 'status', 'unknown', ++ 'energy_full', '60000000', ++ 'energy_full_design', '80000000', ++ 'energy_now', '48000000', ++ 'voltage_now', '12000000', ++ 'charge_control_start_threshold', '0', ++ 'charge_control_end_threshold', '100', ++ ], []) ++ self.testbed.set_property("/sys/class/power_supply/BAT1", 'CHARGE_LIMIT', '70,80') ++ ++ self.start_daemon() ++ devs = self.proxy.EnumerateDevices() ++ self.assertEqual(len(devs), 2) ++ bat0_up = devs[0] ++ bat1_up = devs[0] ++ ++ for bat in [bat0_up, bat1_up]: ++ self.assertEqual(self.get_dbus_dev_property(bat, 'ChargeThresholdSupported'), True) ++ self.assertEqual(self.get_dbus_dev_property(bat, 'ChargeThresholdEnabled'), False) ++ self.assertEqual(self.get_dbus_dev_property(bat, 'ChargeStartThreshold'), 70) ++ self.assertEqual(self.get_dbus_dev_property(bat, 'ChargeEndThreshold'), 80) ++ ++ with self.assertRaises(Exception) as cm: ++ self.enable_charge_limits(bat0_up, True) ++ ex = cm.exception ++ self.assertIn("Operation is not allowed", str(ex)) ++ ++ with self.assertRaises(Exception) as cm: ++ self.enable_charge_limits(bat1_up, True) ++ ex = cm.exception ++ self.assertIn("Operation is not allowed", str(ex)) ++ ++ for bat in [bat0_up, bat1_up]: ++ self.assertEqual(self.get_dbus_dev_property(bat, 'ChargeThresholdEnabled'), False) ++ battery_name = bat.split('_')[-1] ++ with open(f'/sys/class/power_supply/{battery_name}/charge_control_start_threshold') as fp: ++ self.assertEqual(fp.read(), '0') ++ with open(f'/sys/class/power_supply/{battery_name}/charge_control_end_threshold') as fp: ++ self.assertEqual(fp.read(), '100') ++ + def test_battery_charge_limit_supported(self): + '''Battery with charge_control_start/end_threshold supported''' + ++ if not self.polkit: ++ self.start_polkitd({}) ++ self.polkit_obj.SetAllowed(['org.freedesktop.UPower.enable-charging-limit']) ++ + self.testbed.add_device('power_supply', 'BAT0', None, + ['type', 'Battery', + 'present', '1', +@@ -1135,9 +1211,89 @@ class Tests(dbusmock.DBusTestCase): + with open('/sys/class/power_supply/BAT0/charge_control_end_threshold') as fp: + self.assertEqual(fp.read(), '100') + ++ def test_battery_charge_limit_supported_polkit_not_allowed(self): ++ '''Battery with charge_control_start/end_threshold supported''' ++ ++ if not self.polkit: ++ self.start_polkitd({}) ++ ++ self.testbed.add_device('power_supply', 'BAT0', None, ++ ['type', 'Battery', ++ 'present', '1', ++ 'model_name', 'test', ++ 'serial_number', '12', ++ 'status', 'unknown', ++ 'energy_full', '60000000', ++ 'energy_full_design', '80000000', ++ 'energy_now', '48000000', ++ 'voltage_now', '12000000', ++ 'charge_control_start_threshold', '0', ++ 'charge_control_end_threshold', '100', ++ ], []) ++ self.testbed.set_property("/sys/class/power_supply/BAT0", 'CHARGE_LIMIT', '70,80') ++ ++ def start_daemon(charge_threshold_value=None): ++ upower_history_dir_override = tempfile.mkdtemp(prefix='upower-history-') ++ if charge_threshold_value is not None: ++ with open(os.path.join(upower_history_dir_override, f"charging-threshold-status") , 'w') as fp: ++ fp.write(charge_threshold_value) ++ ++ self.start_daemon(history_dir_override=upower_history_dir_override) ++ devs = self.proxy.EnumerateDevices() ++ self.assertEqual(len(devs), 1) ++ return devs[0] ++ ++ bat0_up = start_daemon() ++ self.assertEqual(self.get_dbus_dev_property(bat0_up, 'ChargeThresholdSupported'), True) ++ self.assertEqual(self.get_dbus_dev_property(bat0_up, 'ChargeThresholdEnabled'), False) ++ self.assertEqual(self.get_dbus_dev_property(bat0_up, 'ChargeStartThreshold'), 70) ++ self.assertEqual(self.get_dbus_dev_property(bat0_up, 'ChargeEndThreshold'), 80) ++ ++ with self.assertRaises(Exception) as cm: ++ self.enable_charge_limits(bat0_up, True) ++ ex = cm.exception ++ self.assertIn("Operation is not allowed", str(ex)) ++ ++ self.assertEqual(self.get_dbus_dev_property(bat0_up, 'ChargeThresholdEnabled'), False) ++ # charge limits enabled? ++ with open('/sys/class/power_supply/BAT0/charge_control_start_threshold') as fp: ++ self.assertEqual(fp.read(), '0') ++ with open('/sys/class/power_supply/BAT0/charge_control_end_threshold') as fp: ++ self.assertEqual(fp.read(), '100') ++ ++ with self.assertRaises(Exception) as cm: ++ self.enable_charge_limits(bat0_up, False) ++ ex = cm.exception ++ self.assertIn("Operation is not allowed", str(ex)) ++ ++ self.assertEqual(self.get_dbus_dev_property(bat0_up, 'ChargeThresholdEnabled'), False) ++ with open('/sys/class/power_supply/BAT0/charge_control_start_threshold') as fp: ++ self.assertEqual(fp.read(), '0') ++ with open('/sys/class/power_supply/BAT0/charge_control_end_threshold') as fp: ++ self.assertEqual(fp.read(), '100') ++ ++ self.stop_daemon() ++ ++ # On startup with threshold set ++ self.testbed.set_property("/sys/class/power_supply/BAT0", 'CHARGE_LIMIT', '90,100') ++ bat0_up = start_daemon(charge_threshold_value='1') ++ self.assertEqual(self.get_dbus_dev_property(bat0_up, 'ChargeThresholdSupported'), True) ++ self.assertEqual(self.get_dbus_dev_property(bat0_up, 'ChargeThresholdEnabled'), True) ++ self.assertEqual(self.get_dbus_dev_property(bat0_up, 'ChargeStartThreshold'), 90) ++ self.assertEqual(self.get_dbus_dev_property(bat0_up, 'ChargeEndThreshold'), 100) ++ ++ with open('/sys/class/power_supply/BAT0/charge_control_start_threshold') as fp: ++ self.assertEqual(fp.read(), '90') ++ with open('/sys/class/power_supply/BAT0/charge_control_end_threshold') as fp: ++ self.assertEqual(fp.read(), '100') ++ + def test_battery_charge_threshold_unsupported(self): + '''Battery with only end_threshold supported''' + ++ if not self.polkit: ++ self.start_polkitd({}) ++ self.polkit_obj.SetAllowed(['org.freedesktop.UPower.enable-charging-limit']) ++ + self.testbed.add_device('power_supply', 'BAT0', None, + ['type', 'Battery', + 'present', '1', +@@ -1159,10 +1315,10 @@ class Tests(dbusmock.DBusTestCase): + self.assertEqual(self.get_dbus_dev_property(bat0_up, 'ChargeThresholdSupported'), False) + self.assertEqual(self.get_dbus_dev_property(bat0_up, 'ChargeThresholdEnabled'), False) + +- try: ++ with self.assertRaises(Exception) as cm: + self.enable_charge_limits(bat0_up, True) +- except Exception as err: +- self.assertIn("setting battery charge thresholds", str(err)) ++ ex = cm.exception ++ self.assertIn("setting battery charge thresholds", str(ex)) + + self.stop_daemon() + +-- +2.46.0 + diff --git a/0004-up-polkit-Add-G_ADD_PRIVATE-UpPolkit.patch b/0004-up-polkit-Add-G_ADD_PRIVATE-UpPolkit.patch new file mode 100644 index 0000000..921664e --- /dev/null +++ b/0004-up-polkit-Add-G_ADD_PRIVATE-UpPolkit.patch @@ -0,0 +1,30 @@ +From b4697dbc626ced1a456bcb4aba8dca2fe1efa901 Mon Sep 17 00:00:00 2001 +From: "Jan Alexander Steffens (heftig)" +Date: Sat, 31 Aug 2024 11:05:54 +0200 +Subject: [PATCH 4/9] up-polkit: Add `G_ADD_PRIVATE (UpPolkit)` + +Without this, accesses to `UpPolkitPrivate` are actually out of bounds +and writing to it will cause heap corruption. + +Fixes: https://gitlab.freedesktop.org/upower/upower/-/issues/281 +--- + src/up-polkit.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/src/up-polkit.c b/src/up-polkit.c +index 0ede5a7..e0ba246 100644 +--- a/src/up-polkit.c ++++ b/src/up-polkit.c +@@ -43,7 +43,8 @@ struct UpPolkitPrivate + #endif + }; + +-G_DEFINE_TYPE (UpPolkit, up_polkit, G_TYPE_OBJECT) ++G_DEFINE_TYPE_WITH_CODE (UpPolkit, up_polkit, G_TYPE_OBJECT, ++ G_ADD_PRIVATE (UpPolkit)) + static gpointer up_polkit_object = NULL; + + #ifdef HAVE_POLKIT +-- +2.46.0 + diff --git a/0008-up-polkit-remove-global-variable-and-remove-g_object.patch b/0008-up-polkit-remove-global-variable-and-remove-g_object.patch new file mode 100644 index 0000000..cbdf550 --- /dev/null +++ b/0008-up-polkit-remove-global-variable-and-remove-g_object.patch @@ -0,0 +1,41 @@ +From 7db90b28d842744f135114b3e90e6bded4ac6fbb Mon Sep 17 00:00:00 2001 +From: Kate Hsuan +Date: Mon, 2 Sep 2024 14:03:56 +0800 +Subject: [PATCH 8/9] up-polkit: remove global variable and remove + g_object_add_weak_pointer() + +Since UpPolkit is only created in the daemon, so the global variable and +g_object_add_weak_pointer() can be removed. +--- + src/up-polkit.c | 9 +-------- + 1 file changed, 1 insertion(+), 8 deletions(-) + +diff --git a/src/up-polkit.c b/src/up-polkit.c +index e0ba246..fadfc30 100644 +--- a/src/up-polkit.c ++++ b/src/up-polkit.c +@@ -45,7 +45,6 @@ struct UpPolkitPrivate + + G_DEFINE_TYPE_WITH_CODE (UpPolkit, up_polkit, G_TYPE_OBJECT, + G_ADD_PRIVATE (UpPolkit)) +-static gpointer up_polkit_object = NULL; + + #ifdef HAVE_POLKIT + /** +@@ -190,12 +189,6 @@ up_polkit_init (UpPolkit *polkit) + UpPolkit * + up_polkit_new (void) + { +- if (up_polkit_object != NULL) { +- g_object_ref (up_polkit_object); +- } else { +- up_polkit_object = g_object_new (UP_TYPE_POLKIT, NULL); +- g_object_add_weak_pointer (up_polkit_object, &up_polkit_object); +- } +- return UP_POLKIT (up_polkit_object); ++ return UP_POLKIT (g_object_new (UP_TYPE_POLKIT, NULL)); + } + +-- +2.46.0 + diff --git a/0009-up-polkit-Replace-with-G_DEFINE_TYPE_WITH_PRIVATE.patch b/0009-up-polkit-Replace-with-G_DEFINE_TYPE_WITH_PRIVATE.patch new file mode 100644 index 0000000..9a2d5d4 --- /dev/null +++ b/0009-up-polkit-Replace-with-G_DEFINE_TYPE_WITH_PRIVATE.patch @@ -0,0 +1,28 @@ +From 131ab3a9d51ca14914a693e18f7f2961efba911e Mon Sep 17 00:00:00 2001 +From: Kate Hsuan +Date: Mon, 9 Sep 2024 14:03:57 +0800 +Subject: [PATCH 9/9] up-polkit: Replace with G_DEFINE_TYPE_WITH_PRIVATE + +Since no interface was inplemented in UpPolkit class so G_DEFINE_TYPE_WITH_PRIVATE +macro is batter. +--- + src/up-polkit.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/src/up-polkit.c b/src/up-polkit.c +index fadfc30..1ead7e7 100644 +--- a/src/up-polkit.c ++++ b/src/up-polkit.c +@@ -43,8 +43,7 @@ struct UpPolkitPrivate + #endif + }; + +-G_DEFINE_TYPE_WITH_CODE (UpPolkit, up_polkit, G_TYPE_OBJECT, +- G_ADD_PRIVATE (UpPolkit)) ++G_DEFINE_TYPE_WITH_PRIVATE (UpPolkit, up_polkit, G_TYPE_OBJECT) + + #ifdef HAVE_POLKIT + /** +-- +2.46.0 + diff --git a/sources b/sources index b575fdb..3baed65 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (upower-v1.90.4.tar.bz2) = 2db8f2fea4086939c7ec236674ddd03ff043eeb1c7e46deb40b45aed5d31b6eb0e84fa44f189336b0a171f3e2f92f2f50e2f355b9366e0d686e570d0107e88da +SHA512 (upower-v1.90.5.tar.bz2) = 53fe3c3d58a2d7d2ec322620aae3c328dae6402cbd97b24648f12ef862579d4110bb09f746457b6eafa1f24ba2311249216cf84e4a307eeaee152d110787fd56 diff --git a/upower.spec b/upower.spec index 4dccc5a..5c3c611 100644 --- a/upower.spec +++ b/upower.spec @@ -1,6 +1,6 @@ Summary: Power Management Service Name: upower -Version: 1.90.4 +Version: 1.90.5 Release: %autorelease License: GPL-2.0-or-later URL: http://upower.freedesktop.org/ @@ -20,11 +20,24 @@ BuildRequires: libimobiledevice-devel BuildRequires: glib2-devel >= 2.6.0 BuildRequires: gobject-introspection-devel BuildRequires: gtk-doc +BuildRequires: polkit-devel BuildRequires: systemd Requires: %{name}-libs%{?_isa} = %{version}-%{release} Requires: udev +# https://gitlab.freedesktop.org/upower/upower/-/commit/b26c8c79c9ff7fd0ba63e893171c6d5b164fda82.patch +Patch1001: 0001-ci-Add-polkit-dependency.patch +# https://gitlab.freedesktop.org/upower/upower/-/commit/f55641cd4335997bffd2a662de84c69a45ce9394.patch +Patch1002: 0002-Revert-Remove-polkit-tests.patch +# https://gitlab.freedesktop.org/upower/upower/-/commit/b71996a526a73a18ae5e66ad6ce52c297a458df9.patch +Patch1003: 0003-linux-integration-test-Add-polkit-test.patch +# https://gitlab.freedesktop.org/upower/upower/-/commit/b4697dbc626ced1a456bcb4aba8dca2fe1efa901.patch +Patch10004: 0004-up-polkit-Add-G_ADD_PRIVATE-UpPolkit.patch +# https://gitlab.freedesktop.org/upower/upower/-/commit/7db90b28d842744f135114b3e90e6bded4ac6fbb.patch +Patch10005: 0008-up-polkit-remove-global-variable-and-remove-g_object.patch +# https://gitlab.freedesktop.org/upower/upower/-/commit/131ab3a9d51ca14914a693e18f7f2961efba911e.patch +Patch10006: 0009-up-polkit-Replace-with-G_DEFINE_TYPE_WITH_PRIVATE.patch %description UPower (formerly DeviceKit-power) provides a daemon, API and command @@ -100,6 +113,7 @@ Developer documentation for for libupower-glib. %{_datadir}/dbus-1/system-services/*.service %{_unitdir}/*.service %{_datadir}/installed-tests/upower/upower-integration.test +%{_datadir}/polkit-1/actions/org.freedesktop.upower.policy %files libs %license COPYING From a056d9bafcc4609c0f08cf4cba84b0695102aabd Mon Sep 17 00:00:00 2001 From: Kate Hsuan Date: Sat, 14 Sep 2024 16:42:46 +0800 Subject: [PATCH 14/30] Add polkit dependency and fix intergration test filename --- tests/run-it.sh | 2 +- tests/tests.yml | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/run-it.sh b/tests/run-it.sh index 5db3a05..d480ee1 100755 --- a/tests/run-it.sh +++ b/tests/run-it.sh @@ -2,7 +2,7 @@ set -u # main script -IT="${1:-source/src/linux/integration-test}" +IT="${1:-source/src/linux/integration-test.py}" # check if we need to install additional packages # which is the case if we are on RHEL 8 diff --git a/tests/tests.yml b/tests/tests.yml index 20dd538..f7723ef 100644 --- a/tests/tests.yml +++ b/tests/tests.yml @@ -12,6 +12,7 @@ - classic required_packages: - upower + - polkit-libs - python3-gobject-base - python3-dbus - python3-dbusmock @@ -23,4 +24,4 @@ run: upower -d - integration: dir: . - run: ./run-it.sh source/src/linux/integration-test + run: ./run-it.sh source/src/linux/integration-test.py From 692fec60cba3c0af51df6215d20b93b0c23c253b Mon Sep 17 00:00:00 2001 From: Kate Hsuan Date: Tue, 24 Sep 2024 14:10:37 +0800 Subject: [PATCH 15/30] Update to upstream release 1.90.6 --- .gitignore | 1 + 0001-ci-Add-polkit-dependency.patch | 24 -- 0002-Revert-Remove-polkit-tests.patch | 88 ------- ...nux-integration-test-Add-polkit-test.patch | 229 ------------------ ...up-polkit-Add-G_ADD_PRIVATE-UpPolkit.patch | 30 --- ...-global-variable-and-remove-g_object.patch | 41 ---- ...lace-with-G_DEFINE_TYPE_WITH_PRIVATE.patch | 28 --- sources | 2 +- upower.spec | 15 +- 9 files changed, 3 insertions(+), 455 deletions(-) delete mode 100644 0001-ci-Add-polkit-dependency.patch delete mode 100644 0002-Revert-Remove-polkit-tests.patch delete mode 100644 0003-linux-integration-test-Add-polkit-test.patch delete mode 100644 0004-up-polkit-Add-G_ADD_PRIVATE-UpPolkit.patch delete mode 100644 0008-up-polkit-remove-global-variable-and-remove-g_object.patch delete mode 100644 0009-up-polkit-Replace-with-G_DEFINE_TYPE_WITH_PRIVATE.patch diff --git a/.gitignore b/.gitignore index 632891e..03e1335 100644 --- a/.gitignore +++ b/.gitignore @@ -42,3 +42,4 @@ upower-0.9.5.tar.bz2 /upower-v1.90.2.tar.bz2 /upower-v1.90.4.tar.bz2 /upower-v1.90.5.tar.bz2 +/upower-v1.90.6.tar.bz2 diff --git a/0001-ci-Add-polkit-dependency.patch b/0001-ci-Add-polkit-dependency.patch deleted file mode 100644 index 7f9ec8e..0000000 --- a/0001-ci-Add-polkit-dependency.patch +++ /dev/null @@ -1,24 +0,0 @@ -From b26c8c79c9ff7fd0ba63e893171c6d5b164fda82 Mon Sep 17 00:00:00 2001 -From: Kate Hsuan -Date: Wed, 28 Aug 2024 13:29:41 +0800 -Subject: [PATCH 1/9] ci: Add polkit dependency - ---- - .gitlab-ci.yml | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml -index fbdbd53..1476c85 100644 ---- a/.gitlab-ci.yml -+++ b/.gitlab-ci.yml -@@ -25,6 +25,7 @@ variables: - libplist-devel - umockdev - dbus-x11 -+ polkit-devel - python3-gobject - python3-dbusmock - python3-pip --- -2.46.0 - diff --git a/0002-Revert-Remove-polkit-tests.patch b/0002-Revert-Remove-polkit-tests.patch deleted file mode 100644 index 2f6dacf..0000000 --- a/0002-Revert-Remove-polkit-tests.patch +++ /dev/null @@ -1,88 +0,0 @@ -From f55641cd4335997bffd2a662de84c69a45ce9394 Mon Sep 17 00:00:00 2001 -From: Kate Hsuan -Date: Thu, 22 Aug 2024 20:43:43 +0800 -Subject: [PATCH 2/9] Revert "Remove polkit tests" - -This reverts commit bddc559713ed3e8d790231139b21c8277931b5d0. - -Changes: -- Removed Makefile -- Removed test for UpWakeups ---- - README | 1 + - src/up-self-test.c | 26 ++++++++++++++++++++++++++ - 2 files changed, 27 insertions(+) - -diff --git a/README b/README -index dd2a18c..d7f325e 100644 ---- a/README -+++ b/README -@@ -8,6 +8,7 @@ Requirements: - gio-2.0 >= 2.16.1 - gudev-1.0 >= 235 (Linux) - libimobiledevice-1.0 >= 0.9.7 (optional) -+ polkit-gobject-1 >= 124 - - UPower is an abstraction for enumerating power devices, - listening to device events and querying history and statistics. -diff --git a/src/up-self-test.c b/src/up-self-test.c -index f60618f..a60f5f2 100644 ---- a/src/up-self-test.c -+++ b/src/up-self-test.c -@@ -33,6 +33,7 @@ - #include "up-device-list.h" - #include "up-history.h" - #include "up-native.h" -+#include "up-polkit.h" - - gchar *history_dir = NULL; - -@@ -64,6 +65,12 @@ up_test_daemon_func (void) - { - UpDaemon *daemon; - -+ /* needs polkit, which only listens to the system bus */ -+ if (!g_file_test (DBUS_SYSTEM_SOCKET, G_FILE_TEST_EXISTS)) { -+ puts("No system D-BUS running, skipping test"); -+ return; -+ } -+ - daemon = up_daemon_new (); - g_assert (daemon != NULL); - -@@ -274,6 +281,24 @@ up_test_history_func (void) - rmdir (history_dir); - } - -+static void -+up_test_polkit_func (void) -+{ -+ UpPolkit *polkit; -+ -+ /* polkit only listens to the system bus */ -+ if (!g_file_test (DBUS_SYSTEM_SOCKET, G_FILE_TEST_EXISTS)) { -+ puts("No system D-BUS running, skipping test"); -+ return; -+ } -+ -+ polkit = up_polkit_new (); -+ g_assert (polkit != NULL); -+ -+ /* unref */ -+ g_object_unref (polkit); -+} -+ - int - main (int argc, char **argv) - { -@@ -290,6 +315,7 @@ main (int argc, char **argv) - g_test_add_func ("/power/device_list", up_test_device_list_func); - g_test_add_func ("/power/history", up_test_history_func); - g_test_add_func ("/power/native", up_test_native_func); -+ g_test_add_func ("/power/polkit", up_test_polkit_func); - g_test_add_func ("/power/daemon", up_test_daemon_func); - - return g_test_run (); --- -2.46.0 - diff --git a/0003-linux-integration-test-Add-polkit-test.patch b/0003-linux-integration-test-Add-polkit-test.patch deleted file mode 100644 index f10baf2..0000000 --- a/0003-linux-integration-test-Add-polkit-test.patch +++ /dev/null @@ -1,229 +0,0 @@ -From b71996a526a73a18ae5e66ad6ce52c297a458df9 Mon Sep 17 00:00:00 2001 -From: Kate Hsuan -Date: Wed, 28 Aug 2024 12:57:40 +0800 -Subject: [PATCH 3/9] linux: integration-test: Add polkit test - -Test action is allowed and not allowed when calling EnableChargeThreshold -dbus API. ---- - src/linux/integration-test.py | 162 +++++++++++++++++++++++++++++++++- - 1 file changed, 159 insertions(+), 3 deletions(-) - -diff --git a/src/linux/integration-test.py b/src/linux/integration-test.py -index 61dfa56..df754c7 100755 ---- a/src/linux/integration-test.py -+++ b/src/linux/integration-test.py -@@ -157,6 +157,7 @@ class Tests(dbusmock.DBusTestCase): - self.daemon = None - self.bluez = None - self.start_logind({'CanHybridSleep' : 'yes'}) -+ self.start_polkitd({}) - - @classmethod - def stop_process(cls, proc, timeout=1): -@@ -324,6 +325,11 @@ class Tests(dbusmock.DBusTestCase): - parameters or {}) - self.addCleanup(self.stop_process, self.bluez) - -+ def start_polkitd(self, parameters=None): -+ self.polkit, self.polkit_obj = self.spawn_server_template('polkitd', -+ parameters or {}) -+ self.addCleanup(self.stop_process, self.polkit) -+ - def assertEventually(self, condition, message=None, timeout=50, value=True): - '''Assert that condition function eventually returns True. - -@@ -1014,6 +1020,10 @@ class Tests(dbusmock.DBusTestCase): - def test_battery_charge_limit_multiple_batteries(self): - '''Battery with charge limits with multiple batteries''' - -+ if not self.polkit: -+ self.start_polkitd({}) -+ self.polkit_obj.SetAllowed(['org.freedesktop.UPower.enable-charging-limit']) -+ - self.testbed.add_device('power_supply', 'BAT0', None, - ['type', 'Battery', - 'present', '1', -@@ -1062,9 +1072,75 @@ class Tests(dbusmock.DBusTestCase): - with open(f'/sys/class/power_supply/{battery_name}/charge_control_end_threshold') as fp: - self.assertEqual(fp.read(), '80') - -+ def test_battery_charge_limit_multiple_batteries_polkit_not_allowed(self): -+ '''Battery with charge limits with multiple batteries, but polkit isn't allowed''' -+ -+ if not self.polkit: -+ self.start_polkitd({}) -+ -+ self.testbed.add_device('power_supply', 'BAT0', None, -+ ['type', 'Battery', -+ 'present', '1', -+ 'status', 'unknown', -+ 'energy_full', '60000000', -+ 'energy_full_design', '80000000', -+ 'energy_now', '48000000', -+ 'voltage_now', '12000000', -+ 'charge_control_start_threshold', '0', -+ 'charge_control_end_threshold', '100', -+ ], []) -+ self.testbed.set_property("/sys/class/power_supply/BAT0", 'CHARGE_LIMIT', '70,80') -+ -+ self.testbed.add_device('power_supply', 'BAT1', None, -+ ['type', 'Battery', -+ 'present', '1', -+ 'status', 'unknown', -+ 'energy_full', '60000000', -+ 'energy_full_design', '80000000', -+ 'energy_now', '48000000', -+ 'voltage_now', '12000000', -+ 'charge_control_start_threshold', '0', -+ 'charge_control_end_threshold', '100', -+ ], []) -+ self.testbed.set_property("/sys/class/power_supply/BAT1", 'CHARGE_LIMIT', '70,80') -+ -+ self.start_daemon() -+ devs = self.proxy.EnumerateDevices() -+ self.assertEqual(len(devs), 2) -+ bat0_up = devs[0] -+ bat1_up = devs[0] -+ -+ for bat in [bat0_up, bat1_up]: -+ self.assertEqual(self.get_dbus_dev_property(bat, 'ChargeThresholdSupported'), True) -+ self.assertEqual(self.get_dbus_dev_property(bat, 'ChargeThresholdEnabled'), False) -+ self.assertEqual(self.get_dbus_dev_property(bat, 'ChargeStartThreshold'), 70) -+ self.assertEqual(self.get_dbus_dev_property(bat, 'ChargeEndThreshold'), 80) -+ -+ with self.assertRaises(Exception) as cm: -+ self.enable_charge_limits(bat0_up, True) -+ ex = cm.exception -+ self.assertIn("Operation is not allowed", str(ex)) -+ -+ with self.assertRaises(Exception) as cm: -+ self.enable_charge_limits(bat1_up, True) -+ ex = cm.exception -+ self.assertIn("Operation is not allowed", str(ex)) -+ -+ for bat in [bat0_up, bat1_up]: -+ self.assertEqual(self.get_dbus_dev_property(bat, 'ChargeThresholdEnabled'), False) -+ battery_name = bat.split('_')[-1] -+ with open(f'/sys/class/power_supply/{battery_name}/charge_control_start_threshold') as fp: -+ self.assertEqual(fp.read(), '0') -+ with open(f'/sys/class/power_supply/{battery_name}/charge_control_end_threshold') as fp: -+ self.assertEqual(fp.read(), '100') -+ - def test_battery_charge_limit_supported(self): - '''Battery with charge_control_start/end_threshold supported''' - -+ if not self.polkit: -+ self.start_polkitd({}) -+ self.polkit_obj.SetAllowed(['org.freedesktop.UPower.enable-charging-limit']) -+ - self.testbed.add_device('power_supply', 'BAT0', None, - ['type', 'Battery', - 'present', '1', -@@ -1135,9 +1211,89 @@ class Tests(dbusmock.DBusTestCase): - with open('/sys/class/power_supply/BAT0/charge_control_end_threshold') as fp: - self.assertEqual(fp.read(), '100') - -+ def test_battery_charge_limit_supported_polkit_not_allowed(self): -+ '''Battery with charge_control_start/end_threshold supported''' -+ -+ if not self.polkit: -+ self.start_polkitd({}) -+ -+ self.testbed.add_device('power_supply', 'BAT0', None, -+ ['type', 'Battery', -+ 'present', '1', -+ 'model_name', 'test', -+ 'serial_number', '12', -+ 'status', 'unknown', -+ 'energy_full', '60000000', -+ 'energy_full_design', '80000000', -+ 'energy_now', '48000000', -+ 'voltage_now', '12000000', -+ 'charge_control_start_threshold', '0', -+ 'charge_control_end_threshold', '100', -+ ], []) -+ self.testbed.set_property("/sys/class/power_supply/BAT0", 'CHARGE_LIMIT', '70,80') -+ -+ def start_daemon(charge_threshold_value=None): -+ upower_history_dir_override = tempfile.mkdtemp(prefix='upower-history-') -+ if charge_threshold_value is not None: -+ with open(os.path.join(upower_history_dir_override, f"charging-threshold-status") , 'w') as fp: -+ fp.write(charge_threshold_value) -+ -+ self.start_daemon(history_dir_override=upower_history_dir_override) -+ devs = self.proxy.EnumerateDevices() -+ self.assertEqual(len(devs), 1) -+ return devs[0] -+ -+ bat0_up = start_daemon() -+ self.assertEqual(self.get_dbus_dev_property(bat0_up, 'ChargeThresholdSupported'), True) -+ self.assertEqual(self.get_dbus_dev_property(bat0_up, 'ChargeThresholdEnabled'), False) -+ self.assertEqual(self.get_dbus_dev_property(bat0_up, 'ChargeStartThreshold'), 70) -+ self.assertEqual(self.get_dbus_dev_property(bat0_up, 'ChargeEndThreshold'), 80) -+ -+ with self.assertRaises(Exception) as cm: -+ self.enable_charge_limits(bat0_up, True) -+ ex = cm.exception -+ self.assertIn("Operation is not allowed", str(ex)) -+ -+ self.assertEqual(self.get_dbus_dev_property(bat0_up, 'ChargeThresholdEnabled'), False) -+ # charge limits enabled? -+ with open('/sys/class/power_supply/BAT0/charge_control_start_threshold') as fp: -+ self.assertEqual(fp.read(), '0') -+ with open('/sys/class/power_supply/BAT0/charge_control_end_threshold') as fp: -+ self.assertEqual(fp.read(), '100') -+ -+ with self.assertRaises(Exception) as cm: -+ self.enable_charge_limits(bat0_up, False) -+ ex = cm.exception -+ self.assertIn("Operation is not allowed", str(ex)) -+ -+ self.assertEqual(self.get_dbus_dev_property(bat0_up, 'ChargeThresholdEnabled'), False) -+ with open('/sys/class/power_supply/BAT0/charge_control_start_threshold') as fp: -+ self.assertEqual(fp.read(), '0') -+ with open('/sys/class/power_supply/BAT0/charge_control_end_threshold') as fp: -+ self.assertEqual(fp.read(), '100') -+ -+ self.stop_daemon() -+ -+ # On startup with threshold set -+ self.testbed.set_property("/sys/class/power_supply/BAT0", 'CHARGE_LIMIT', '90,100') -+ bat0_up = start_daemon(charge_threshold_value='1') -+ self.assertEqual(self.get_dbus_dev_property(bat0_up, 'ChargeThresholdSupported'), True) -+ self.assertEqual(self.get_dbus_dev_property(bat0_up, 'ChargeThresholdEnabled'), True) -+ self.assertEqual(self.get_dbus_dev_property(bat0_up, 'ChargeStartThreshold'), 90) -+ self.assertEqual(self.get_dbus_dev_property(bat0_up, 'ChargeEndThreshold'), 100) -+ -+ with open('/sys/class/power_supply/BAT0/charge_control_start_threshold') as fp: -+ self.assertEqual(fp.read(), '90') -+ with open('/sys/class/power_supply/BAT0/charge_control_end_threshold') as fp: -+ self.assertEqual(fp.read(), '100') -+ - def test_battery_charge_threshold_unsupported(self): - '''Battery with only end_threshold supported''' - -+ if not self.polkit: -+ self.start_polkitd({}) -+ self.polkit_obj.SetAllowed(['org.freedesktop.UPower.enable-charging-limit']) -+ - self.testbed.add_device('power_supply', 'BAT0', None, - ['type', 'Battery', - 'present', '1', -@@ -1159,10 +1315,10 @@ class Tests(dbusmock.DBusTestCase): - self.assertEqual(self.get_dbus_dev_property(bat0_up, 'ChargeThresholdSupported'), False) - self.assertEqual(self.get_dbus_dev_property(bat0_up, 'ChargeThresholdEnabled'), False) - -- try: -+ with self.assertRaises(Exception) as cm: - self.enable_charge_limits(bat0_up, True) -- except Exception as err: -- self.assertIn("setting battery charge thresholds", str(err)) -+ ex = cm.exception -+ self.assertIn("setting battery charge thresholds", str(ex)) - - self.stop_daemon() - --- -2.46.0 - diff --git a/0004-up-polkit-Add-G_ADD_PRIVATE-UpPolkit.patch b/0004-up-polkit-Add-G_ADD_PRIVATE-UpPolkit.patch deleted file mode 100644 index 921664e..0000000 --- a/0004-up-polkit-Add-G_ADD_PRIVATE-UpPolkit.patch +++ /dev/null @@ -1,30 +0,0 @@ -From b4697dbc626ced1a456bcb4aba8dca2fe1efa901 Mon Sep 17 00:00:00 2001 -From: "Jan Alexander Steffens (heftig)" -Date: Sat, 31 Aug 2024 11:05:54 +0200 -Subject: [PATCH 4/9] up-polkit: Add `G_ADD_PRIVATE (UpPolkit)` - -Without this, accesses to `UpPolkitPrivate` are actually out of bounds -and writing to it will cause heap corruption. - -Fixes: https://gitlab.freedesktop.org/upower/upower/-/issues/281 ---- - src/up-polkit.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/src/up-polkit.c b/src/up-polkit.c -index 0ede5a7..e0ba246 100644 ---- a/src/up-polkit.c -+++ b/src/up-polkit.c -@@ -43,7 +43,8 @@ struct UpPolkitPrivate - #endif - }; - --G_DEFINE_TYPE (UpPolkit, up_polkit, G_TYPE_OBJECT) -+G_DEFINE_TYPE_WITH_CODE (UpPolkit, up_polkit, G_TYPE_OBJECT, -+ G_ADD_PRIVATE (UpPolkit)) - static gpointer up_polkit_object = NULL; - - #ifdef HAVE_POLKIT --- -2.46.0 - diff --git a/0008-up-polkit-remove-global-variable-and-remove-g_object.patch b/0008-up-polkit-remove-global-variable-and-remove-g_object.patch deleted file mode 100644 index cbdf550..0000000 --- a/0008-up-polkit-remove-global-variable-and-remove-g_object.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 7db90b28d842744f135114b3e90e6bded4ac6fbb Mon Sep 17 00:00:00 2001 -From: Kate Hsuan -Date: Mon, 2 Sep 2024 14:03:56 +0800 -Subject: [PATCH 8/9] up-polkit: remove global variable and remove - g_object_add_weak_pointer() - -Since UpPolkit is only created in the daemon, so the global variable and -g_object_add_weak_pointer() can be removed. ---- - src/up-polkit.c | 9 +-------- - 1 file changed, 1 insertion(+), 8 deletions(-) - -diff --git a/src/up-polkit.c b/src/up-polkit.c -index e0ba246..fadfc30 100644 ---- a/src/up-polkit.c -+++ b/src/up-polkit.c -@@ -45,7 +45,6 @@ struct UpPolkitPrivate - - G_DEFINE_TYPE_WITH_CODE (UpPolkit, up_polkit, G_TYPE_OBJECT, - G_ADD_PRIVATE (UpPolkit)) --static gpointer up_polkit_object = NULL; - - #ifdef HAVE_POLKIT - /** -@@ -190,12 +189,6 @@ up_polkit_init (UpPolkit *polkit) - UpPolkit * - up_polkit_new (void) - { -- if (up_polkit_object != NULL) { -- g_object_ref (up_polkit_object); -- } else { -- up_polkit_object = g_object_new (UP_TYPE_POLKIT, NULL); -- g_object_add_weak_pointer (up_polkit_object, &up_polkit_object); -- } -- return UP_POLKIT (up_polkit_object); -+ return UP_POLKIT (g_object_new (UP_TYPE_POLKIT, NULL)); - } - --- -2.46.0 - diff --git a/0009-up-polkit-Replace-with-G_DEFINE_TYPE_WITH_PRIVATE.patch b/0009-up-polkit-Replace-with-G_DEFINE_TYPE_WITH_PRIVATE.patch deleted file mode 100644 index 9a2d5d4..0000000 --- a/0009-up-polkit-Replace-with-G_DEFINE_TYPE_WITH_PRIVATE.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 131ab3a9d51ca14914a693e18f7f2961efba911e Mon Sep 17 00:00:00 2001 -From: Kate Hsuan -Date: Mon, 9 Sep 2024 14:03:57 +0800 -Subject: [PATCH 9/9] up-polkit: Replace with G_DEFINE_TYPE_WITH_PRIVATE - -Since no interface was inplemented in UpPolkit class so G_DEFINE_TYPE_WITH_PRIVATE -macro is batter. ---- - src/up-polkit.c | 3 +-- - 1 file changed, 1 insertion(+), 2 deletions(-) - -diff --git a/src/up-polkit.c b/src/up-polkit.c -index fadfc30..1ead7e7 100644 ---- a/src/up-polkit.c -+++ b/src/up-polkit.c -@@ -43,8 +43,7 @@ struct UpPolkitPrivate - #endif - }; - --G_DEFINE_TYPE_WITH_CODE (UpPolkit, up_polkit, G_TYPE_OBJECT, -- G_ADD_PRIVATE (UpPolkit)) -+G_DEFINE_TYPE_WITH_PRIVATE (UpPolkit, up_polkit, G_TYPE_OBJECT) - - #ifdef HAVE_POLKIT - /** --- -2.46.0 - diff --git a/sources b/sources index 3baed65..666497c 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (upower-v1.90.5.tar.bz2) = 53fe3c3d58a2d7d2ec322620aae3c328dae6402cbd97b24648f12ef862579d4110bb09f746457b6eafa1f24ba2311249216cf84e4a307eeaee152d110787fd56 +SHA512 (upower-v1.90.6.tar.bz2) = 8ac1c0685b73efece0ecfbee7a37cb7c47601d252210cf3ecc32d1e44cabdde4c8b59b9a93d8bf21e25b3ecbbb95fb952958b37a53f878128747231d4334e5a6 diff --git a/upower.spec b/upower.spec index 5c3c611..7f65795 100644 --- a/upower.spec +++ b/upower.spec @@ -1,6 +1,6 @@ Summary: Power Management Service Name: upower -Version: 1.90.5 +Version: 1.90.6 Release: %autorelease License: GPL-2.0-or-later URL: http://upower.freedesktop.org/ @@ -26,19 +26,6 @@ BuildRequires: systemd Requires: %{name}-libs%{?_isa} = %{version}-%{release} Requires: udev -# https://gitlab.freedesktop.org/upower/upower/-/commit/b26c8c79c9ff7fd0ba63e893171c6d5b164fda82.patch -Patch1001: 0001-ci-Add-polkit-dependency.patch -# https://gitlab.freedesktop.org/upower/upower/-/commit/f55641cd4335997bffd2a662de84c69a45ce9394.patch -Patch1002: 0002-Revert-Remove-polkit-tests.patch -# https://gitlab.freedesktop.org/upower/upower/-/commit/b71996a526a73a18ae5e66ad6ce52c297a458df9.patch -Patch1003: 0003-linux-integration-test-Add-polkit-test.patch -# https://gitlab.freedesktop.org/upower/upower/-/commit/b4697dbc626ced1a456bcb4aba8dca2fe1efa901.patch -Patch10004: 0004-up-polkit-Add-G_ADD_PRIVATE-UpPolkit.patch -# https://gitlab.freedesktop.org/upower/upower/-/commit/7db90b28d842744f135114b3e90e6bded4ac6fbb.patch -Patch10005: 0008-up-polkit-remove-global-variable-and-remove-g_object.patch -# https://gitlab.freedesktop.org/upower/upower/-/commit/131ab3a9d51ca14914a693e18f7f2961efba911e.patch -Patch10006: 0009-up-polkit-Replace-with-G_DEFINE_TYPE_WITH_PRIVATE.patch - %description UPower (formerly DeviceKit-power) provides a daemon, API and command line tools for managing power devices attached to the system. From 50380ac0ae4e5ac9c478706c533998e50a38ea0a Mon Sep 17 00:00:00 2001 From: Neal Gompa Date: Thu, 3 Oct 2024 17:36:04 -0400 Subject: [PATCH 16/30] Rebuild for libimobiledevice update From cd7a0b6a5bfe3a016853683ce041be554d03c760 Mon Sep 17 00:00:00 2001 From: Kate Hsuan Date: Fri, 4 Oct 2024 15:34:58 +0800 Subject: [PATCH 17/30] Fix device update issue The following fix patch was included. "linux: up-enumerator-udev: Find the correct parent id for input devices" Link: https://gitlab.freedesktop.org/upower/upower/-/commit/7d7bb84fde91bef9ee7eba924cbdfa74639cc4fe.patch --- ...n-test_sibling_priority_no_overwrite.patch | 26 +++++++++++ 0002-linux-up-enumerator-udev-Find-the.patch | 43 +++++++++++++++++++ upower.spec | 5 +++ 3 files changed, 74 insertions(+) create mode 100644 0001-Fix-race-condition-in-test_sibling_priority_no_overwrite.patch create mode 100644 0002-linux-up-enumerator-udev-Find-the.patch diff --git a/0001-Fix-race-condition-in-test_sibling_priority_no_overwrite.patch b/0001-Fix-race-condition-in-test_sibling_priority_no_overwrite.patch new file mode 100644 index 0000000..c39928b --- /dev/null +++ b/0001-Fix-race-condition-in-test_sibling_priority_no_overwrite.patch @@ -0,0 +1,26 @@ +From 9ee76826bd41a5d3a377dfd6f5835f42ec50be9a Mon Sep 17 00:00:00 2001 +From: Stuart Hayhurst +Date: Wed, 25 Sep 2024 16:56:11 +0100 +Subject: [PATCH] Fix race condition in test_sibling_priority_no_overwrite + +--- + src/linux/integration-test.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/linux/integration-test.py b/src/linux/integration-test.py +index 6b1514a9..f6c804a4 100755 +--- a/src/linux/integration-test.py ++++ b/src/linux/integration-test.py +@@ -3148,8 +3148,8 @@ class Tests(dbusmock.DBusTestCase): + def test_sibling_priority_no_overwrite(self): + 'Test siblings using the fallback device do not overwrite previous guesses' + +- self.start_daemon() + self.testbed.add_from_file(os.path.join(edir, 'tests/wacom-pen-digitiser.device')) ++ self.start_daemon() + + self.assertDevs({ + 'battery_wacom_battery_0': { +-- +GitLab + diff --git a/0002-linux-up-enumerator-udev-Find-the.patch b/0002-linux-up-enumerator-udev-Find-the.patch new file mode 100644 index 0000000..54c0681 --- /dev/null +++ b/0002-linux-up-enumerator-udev-Find-the.patch @@ -0,0 +1,43 @@ +From 7d7bb84fde91bef9ee7eba924cbdfa74639cc4fe Mon Sep 17 00:00:00 2001 +From: Kate Hsuan +Date: Tue, 18 Jun 2024 15:04:29 +0800 +Subject: [PATCH] linux: up-enumerator-udev: Find the correct parent id for + input devices + +The parent id for the devices under "/sys/devices/virtual/misc/uhid/*" +points to /sys/devices/virtual/misc/uhid. It will cause the device +information to be updated incorrectly. For example, the type for a mouse is +updated to "keyboard". This patch makes sure the correct parent id for +each input device. + +Resolves: #268 #286 +--- + src/linux/up-enumerator-udev.c | 11 ++++++++++- + 1 file changed, 10 insertions(+), 1 deletion(-) + +diff --git a/src/linux/up-enumerator-udev.c b/src/linux/up-enumerator-udev.c +index 36e3887b..553f6524 100644 +--- a/src/linux/up-enumerator-udev.c ++++ b/src/linux/up-enumerator-udev.c +@@ -66,8 +66,17 @@ device_parent_id (GUdevDevice *dev) + return NULL; + + /* Continue walk if the parent is a "hid" device */ +- if (g_strcmp0 (subsystem, "hid") == 0) ++ if (g_strcmp0 (subsystem, "hid") == 0) { ++ /* if the parent is under /sys/devices/virtual/misc/uhid, the device should be input devices ++ * and return the path immediately to make sure they belongs to the correct parent. ++ * for example: ++ * root@fedora:/sys/devices/virtual/misc/uhid# ls ++ * 0005:046D:B01A.0005 0005:05AC:0250.000B dev power subsystem uevent */ ++ if (g_strrstr (g_udev_device_get_sysfs_path (parent), "/sys/devices/virtual/misc/uhid")) ++ return g_strdup (g_udev_device_get_sysfs_path (parent)); ++ + return device_parent_id (parent); ++ } + + /* Also skip over USB interfaces, we care about full devices */ + if (g_strcmp0 (subsystem, "usb") == 0 && +-- +GitLab + diff --git a/upower.spec b/upower.spec index 7f65795..c538f47 100644 --- a/upower.spec +++ b/upower.spec @@ -26,6 +26,11 @@ BuildRequires: systemd Requires: %{name}-libs%{?_isa} = %{version}-%{release} Requires: udev +# https://gitlab.freedesktop.org/upower/upower/-/commit/9ee76826bd41a5d3a377dfd6f5835f42ec50be9a.patch +Patch1001: 0001-Fix-race-condition-in-test_sibling_priority_no_overwrite.patch +# https://gitlab.freedesktop.org/upower/upower/-/commit/7d7bb84fde91bef9ee7eba924cbdfa74639cc4fe.patch +Patch1002: 0002-linux-up-enumerator-udev-Find-the.patch + %description UPower (formerly DeviceKit-power) provides a daemon, API and command line tools for managing power devices attached to the system. From df248073c0f0c19299712e4f73f26a0fb41aed26 Mon Sep 17 00:00:00 2001 From: Kate Hsuan Date: Wed, 15 Jan 2025 11:24:23 +0800 Subject: [PATCH 18/30] Update to the upstream release 1.90.7 --- .gitignore | 1 + ...n-test_sibling_priority_no_overwrite.patch | 26 ----------- 0002-linux-up-enumerator-udev-Find-the.patch | 43 ------------------- sources | 2 +- upower.spec | 10 ++--- 5 files changed, 5 insertions(+), 77 deletions(-) delete mode 100644 0001-Fix-race-condition-in-test_sibling_priority_no_overwrite.patch delete mode 100644 0002-linux-up-enumerator-udev-Find-the.patch diff --git a/.gitignore b/.gitignore index 03e1335..cddd8fd 100644 --- a/.gitignore +++ b/.gitignore @@ -43,3 +43,4 @@ upower-0.9.5.tar.bz2 /upower-v1.90.4.tar.bz2 /upower-v1.90.5.tar.bz2 /upower-v1.90.6.tar.bz2 +/upower-v1.90.7.tar.bz2 diff --git a/0001-Fix-race-condition-in-test_sibling_priority_no_overwrite.patch b/0001-Fix-race-condition-in-test_sibling_priority_no_overwrite.patch deleted file mode 100644 index c39928b..0000000 --- a/0001-Fix-race-condition-in-test_sibling_priority_no_overwrite.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 9ee76826bd41a5d3a377dfd6f5835f42ec50be9a Mon Sep 17 00:00:00 2001 -From: Stuart Hayhurst -Date: Wed, 25 Sep 2024 16:56:11 +0100 -Subject: [PATCH] Fix race condition in test_sibling_priority_no_overwrite - ---- - src/linux/integration-test.py | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/linux/integration-test.py b/src/linux/integration-test.py -index 6b1514a9..f6c804a4 100755 ---- a/src/linux/integration-test.py -+++ b/src/linux/integration-test.py -@@ -3148,8 +3148,8 @@ class Tests(dbusmock.DBusTestCase): - def test_sibling_priority_no_overwrite(self): - 'Test siblings using the fallback device do not overwrite previous guesses' - -- self.start_daemon() - self.testbed.add_from_file(os.path.join(edir, 'tests/wacom-pen-digitiser.device')) -+ self.start_daemon() - - self.assertDevs({ - 'battery_wacom_battery_0': { --- -GitLab - diff --git a/0002-linux-up-enumerator-udev-Find-the.patch b/0002-linux-up-enumerator-udev-Find-the.patch deleted file mode 100644 index 54c0681..0000000 --- a/0002-linux-up-enumerator-udev-Find-the.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 7d7bb84fde91bef9ee7eba924cbdfa74639cc4fe Mon Sep 17 00:00:00 2001 -From: Kate Hsuan -Date: Tue, 18 Jun 2024 15:04:29 +0800 -Subject: [PATCH] linux: up-enumerator-udev: Find the correct parent id for - input devices - -The parent id for the devices under "/sys/devices/virtual/misc/uhid/*" -points to /sys/devices/virtual/misc/uhid. It will cause the device -information to be updated incorrectly. For example, the type for a mouse is -updated to "keyboard". This patch makes sure the correct parent id for -each input device. - -Resolves: #268 #286 ---- - src/linux/up-enumerator-udev.c | 11 ++++++++++- - 1 file changed, 10 insertions(+), 1 deletion(-) - -diff --git a/src/linux/up-enumerator-udev.c b/src/linux/up-enumerator-udev.c -index 36e3887b..553f6524 100644 ---- a/src/linux/up-enumerator-udev.c -+++ b/src/linux/up-enumerator-udev.c -@@ -66,8 +66,17 @@ device_parent_id (GUdevDevice *dev) - return NULL; - - /* Continue walk if the parent is a "hid" device */ -- if (g_strcmp0 (subsystem, "hid") == 0) -+ if (g_strcmp0 (subsystem, "hid") == 0) { -+ /* if the parent is under /sys/devices/virtual/misc/uhid, the device should be input devices -+ * and return the path immediately to make sure they belongs to the correct parent. -+ * for example: -+ * root@fedora:/sys/devices/virtual/misc/uhid# ls -+ * 0005:046D:B01A.0005 0005:05AC:0250.000B dev power subsystem uevent */ -+ if (g_strrstr (g_udev_device_get_sysfs_path (parent), "/sys/devices/virtual/misc/uhid")) -+ return g_strdup (g_udev_device_get_sysfs_path (parent)); -+ - return device_parent_id (parent); -+ } - - /* Also skip over USB interfaces, we care about full devices */ - if (g_strcmp0 (subsystem, "usb") == 0 && --- -GitLab - diff --git a/sources b/sources index 666497c..df2d334 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (upower-v1.90.6.tar.bz2) = 8ac1c0685b73efece0ecfbee7a37cb7c47601d252210cf3ecc32d1e44cabdde4c8b59b9a93d8bf21e25b3ecbbb95fb952958b37a53f878128747231d4334e5a6 +SHA512 (upower-v1.90.7.tar.bz2) = 2ef7412c26b2c3a9be533a53f579669b532e321196886725bd4333b54c0c7fbe307ce84776ed5cbfdf82a9822979fc0906f62ea7c5d42171ac6819b3e4c77b97 diff --git a/upower.spec b/upower.spec index c538f47..13f406b 100644 --- a/upower.spec +++ b/upower.spec @@ -1,6 +1,6 @@ Summary: Power Management Service Name: upower -Version: 1.90.6 +Version: 1.90.7 Release: %autorelease License: GPL-2.0-or-later URL: http://upower.freedesktop.org/ @@ -26,11 +26,6 @@ BuildRequires: systemd Requires: %{name}-libs%{?_isa} = %{version}-%{release} Requires: udev -# https://gitlab.freedesktop.org/upower/upower/-/commit/9ee76826bd41a5d3a377dfd6f5835f42ec50be9a.patch -Patch1001: 0001-Fix-race-condition-in-test_sibling_priority_no_overwrite.patch -# https://gitlab.freedesktop.org/upower/upower/-/commit/7d7bb84fde91bef9ee7eba924cbdfa74639cc4fe.patch -Patch1002: 0002-linux-up-enumerator-udev-Find-the.patch - %description UPower (formerly DeviceKit-power) provides a daemon, API and command line tools for managing power devices attached to the system. @@ -90,7 +85,7 @@ Developer documentation for for libupower-glib. %files -f upower.lang %{!?_licensedir:%global license %%doc} %license COPYING -%doc NEWS AUTHORS HACKING README +%doc NEWS AUTHORS HACKING.md README.md %{_datadir}/dbus-1/system.d/*.conf %{_udevrulesdir}/*.rules %{_udevhwdbdir}/*.hwdb @@ -106,6 +101,7 @@ Developer documentation for for libupower-glib. %{_unitdir}/*.service %{_datadir}/installed-tests/upower/upower-integration.test %{_datadir}/polkit-1/actions/org.freedesktop.upower.policy +%{_datadir}/zsh %files libs %license COPYING From 9a0a60360f9190be36ff30b6237ae68d49f61a2e Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sun, 19 Jan 2025 13:51:00 +0000 Subject: [PATCH 19/30] Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild From b501ba1ff3a3315706626a70f843e8192db1eddf Mon Sep 17 00:00:00 2001 From: Kate Hsuan Date: Mon, 31 Mar 2025 15:53:24 +0800 Subject: [PATCH 20/30] Update to the upstream version 1.90.8 --- .gitignore | 1 + sources | 2 +- upower.spec | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index cddd8fd..399904b 100644 --- a/.gitignore +++ b/.gitignore @@ -44,3 +44,4 @@ upower-0.9.5.tar.bz2 /upower-v1.90.5.tar.bz2 /upower-v1.90.6.tar.bz2 /upower-v1.90.7.tar.bz2 +/upower-v1.90.8.tar.bz2 diff --git a/sources b/sources index df2d334..f7c8fa7 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (upower-v1.90.7.tar.bz2) = 2ef7412c26b2c3a9be533a53f579669b532e321196886725bd4333b54c0c7fbe307ce84776ed5cbfdf82a9822979fc0906f62ea7c5d42171ac6819b3e4c77b97 +SHA512 (upower-v1.90.8.tar.bz2) = 529e0963df6b01576d72abc259148a0303609881ee4aa88e5b9a1cdef11c10b7ab802a5c1c85430ca335f5a54a1114453b0a80eec83fdbf444ed0d34353ceff1 diff --git a/upower.spec b/upower.spec index 13f406b..e641a9e 100644 --- a/upower.spec +++ b/upower.spec @@ -1,6 +1,6 @@ Summary: Power Management Service Name: upower -Version: 1.90.7 +Version: 1.90.8 Release: %autorelease License: GPL-2.0-or-later URL: http://upower.freedesktop.org/ From 791fa9ff4742ccdc6492038038d50384909ca3c6 Mon Sep 17 00:00:00 2001 From: Kate Hsuan Date: Fri, 11 Apr 2025 12:07:39 +0800 Subject: [PATCH 21/30] Update to the upstream version 1.90.9 --- .gitignore | 1 + sources | 2 +- upower.spec | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 399904b..c65b443 100644 --- a/.gitignore +++ b/.gitignore @@ -45,3 +45,4 @@ upower-0.9.5.tar.bz2 /upower-v1.90.6.tar.bz2 /upower-v1.90.7.tar.bz2 /upower-v1.90.8.tar.bz2 +/upower-v1.90.9.tar.bz2 diff --git a/sources b/sources index f7c8fa7..d2899f5 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (upower-v1.90.8.tar.bz2) = 529e0963df6b01576d72abc259148a0303609881ee4aa88e5b9a1cdef11c10b7ab802a5c1c85430ca335f5a54a1114453b0a80eec83fdbf444ed0d34353ceff1 +SHA512 (upower-v1.90.9.tar.bz2) = 7308e03125a5a888242253f9260f68283f5b53677c08dbc4d7e4d48cc6f600f50f8ab161d100f152138208d5119acddc90f0f19742aa8cca58e3a0ec54975110 diff --git a/upower.spec b/upower.spec index e641a9e..e4d6e7c 100644 --- a/upower.spec +++ b/upower.spec @@ -1,6 +1,6 @@ Summary: Power Management Service Name: upower -Version: 1.90.8 +Version: 1.90.9 Release: %autorelease License: GPL-2.0-or-later URL: http://upower.freedesktop.org/ From 27fd9bd9e8102ad15cb2871d7052ce8a7eb1f617 Mon Sep 17 00:00:00 2001 From: Kate Hsuan Date: Wed, 21 May 2025 15:19:22 +0800 Subject: [PATCH 22/30] Move the test files to the upower-tests package --- upower.spec | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/upower.spec b/upower.spec index e4d6e7c..44e665d 100644 --- a/upower.spec +++ b/upower.spec @@ -54,6 +54,13 @@ BuildArch: noarch %description devel-docs Developer documentation for for libupower-glib. +%package tests +Summary: Test files for Upower +Requires: %{name}%{?_isa} = %{version}-%{release} + +%description tests +Test files for Upower + %prep %autosetup -n %{name}-v%{version} -p1 -S git @@ -69,6 +76,9 @@ Developer documentation for for libupower-glib. %install %meson_install +mkdir -p $RPM_BUILD_ROOT%{_libexecdir}/installed-tests +mv $RPM_BUILD_ROOT%{_libexecdir}/upower $RPM_BUILD_ROOT%{_libexecdir}/installed-tests + %find_lang upower %ldconfig_scriptlets @@ -93,15 +103,14 @@ Developer documentation for for libupower-glib. %dir %{_sysconfdir}/UPower %config %{_sysconfdir}/UPower/UPower.conf %{_bindir}/* -%{_libexecdir}/* +%{_libexecdir}/upowerd %{_mandir}/man1/* %{_mandir}/man7/* %{_mandir}/man8/* %{_datadir}/dbus-1/system-services/*.service %{_unitdir}/*.service -%{_datadir}/installed-tests/upower/upower-integration.test %{_datadir}/polkit-1/actions/org.freedesktop.upower.policy -%{_datadir}/zsh +%{_datadir}/zsh/* %files libs %license COPYING @@ -122,5 +131,9 @@ Developer documentation for for libupower-glib. %dir %{_datadir}/gtk-doc/html/UPower %{_datadir}/gtk-doc/html/UPower/* +%files tests +%{_libexecdir}/installed-tests/upower +%{_datadir}/installed-tests/upower/upower-integration.test + %changelog %autochangelog From 59781ca9580ae855a436e62cbd48c83fada1efea Mon Sep 17 00:00:00 2001 From: Kate Hsuan Date: Wed, 21 May 2025 15:45:48 +0800 Subject: [PATCH 23/30] Revert "Move the test files to the upower-tests package" This reverts commit 27fd9bd9e8102ad15cb2871d7052ce8a7eb1f617. --- upower.spec | 19 +++---------------- 1 file changed, 3 insertions(+), 16 deletions(-) diff --git a/upower.spec b/upower.spec index 44e665d..e4d6e7c 100644 --- a/upower.spec +++ b/upower.spec @@ -54,13 +54,6 @@ BuildArch: noarch %description devel-docs Developer documentation for for libupower-glib. -%package tests -Summary: Test files for Upower -Requires: %{name}%{?_isa} = %{version}-%{release} - -%description tests -Test files for Upower - %prep %autosetup -n %{name}-v%{version} -p1 -S git @@ -76,9 +69,6 @@ Test files for Upower %install %meson_install -mkdir -p $RPM_BUILD_ROOT%{_libexecdir}/installed-tests -mv $RPM_BUILD_ROOT%{_libexecdir}/upower $RPM_BUILD_ROOT%{_libexecdir}/installed-tests - %find_lang upower %ldconfig_scriptlets @@ -103,14 +93,15 @@ mv $RPM_BUILD_ROOT%{_libexecdir}/upower $RPM_BUILD_ROOT%{_libexecdir}/installed- %dir %{_sysconfdir}/UPower %config %{_sysconfdir}/UPower/UPower.conf %{_bindir}/* -%{_libexecdir}/upowerd +%{_libexecdir}/* %{_mandir}/man1/* %{_mandir}/man7/* %{_mandir}/man8/* %{_datadir}/dbus-1/system-services/*.service %{_unitdir}/*.service +%{_datadir}/installed-tests/upower/upower-integration.test %{_datadir}/polkit-1/actions/org.freedesktop.upower.policy -%{_datadir}/zsh/* +%{_datadir}/zsh %files libs %license COPYING @@ -131,9 +122,5 @@ mv $RPM_BUILD_ROOT%{_libexecdir}/upower $RPM_BUILD_ROOT%{_libexecdir}/installed- %dir %{_datadir}/gtk-doc/html/UPower %{_datadir}/gtk-doc/html/UPower/* -%files tests -%{_libexecdir}/installed-tests/upower -%{_datadir}/installed-tests/upower/upower-integration.test - %changelog %autochangelog From 40391129a572ea691a82deb564cfb957f481e2a6 Mon Sep 17 00:00:00 2001 From: Kate Hsuan Date: Wed, 21 May 2025 15:19:22 +0800 Subject: [PATCH 24/30] Move the test files to the upower-tests package Move test file to the tests packages. Resolves: #2351829 --- upower.spec | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/upower.spec b/upower.spec index e4d6e7c..44e665d 100644 --- a/upower.spec +++ b/upower.spec @@ -54,6 +54,13 @@ BuildArch: noarch %description devel-docs Developer documentation for for libupower-glib. +%package tests +Summary: Test files for Upower +Requires: %{name}%{?_isa} = %{version}-%{release} + +%description tests +Test files for Upower + %prep %autosetup -n %{name}-v%{version} -p1 -S git @@ -69,6 +76,9 @@ Developer documentation for for libupower-glib. %install %meson_install +mkdir -p $RPM_BUILD_ROOT%{_libexecdir}/installed-tests +mv $RPM_BUILD_ROOT%{_libexecdir}/upower $RPM_BUILD_ROOT%{_libexecdir}/installed-tests + %find_lang upower %ldconfig_scriptlets @@ -93,15 +103,14 @@ Developer documentation for for libupower-glib. %dir %{_sysconfdir}/UPower %config %{_sysconfdir}/UPower/UPower.conf %{_bindir}/* -%{_libexecdir}/* +%{_libexecdir}/upowerd %{_mandir}/man1/* %{_mandir}/man7/* %{_mandir}/man8/* %{_datadir}/dbus-1/system-services/*.service %{_unitdir}/*.service -%{_datadir}/installed-tests/upower/upower-integration.test %{_datadir}/polkit-1/actions/org.freedesktop.upower.policy -%{_datadir}/zsh +%{_datadir}/zsh/* %files libs %license COPYING @@ -122,5 +131,9 @@ Developer documentation for for libupower-glib. %dir %{_datadir}/gtk-doc/html/UPower %{_datadir}/gtk-doc/html/UPower/* +%files tests +%{_libexecdir}/installed-tests/upower +%{_datadir}/installed-tests/upower/upower-integration.test + %changelog %autochangelog From 8b4f2fc33014c6de0e4c552ca27c10f0bb3a98fc Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 25 Jul 2025 19:49:53 +0000 Subject: [PATCH 25/30] Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild From f8b971fcb652e2cd716563b6dfec0ed69dfe5959 Mon Sep 17 00:00:00 2001 From: Kate Hsuan Date: Tue, 5 Aug 2025 15:12:59 +0800 Subject: [PATCH 26/30] Migrate to tmt test Resolves: #2383092 --- .fmf/version | 1 + plans/integration.fmf | 19 +++++++++++++++++++ tests/integration/main.fmf | 2 ++ tests/{ => integration}/run-it.sh | 2 +- tests/tests.yml | 27 --------------------------- 5 files changed, 23 insertions(+), 28 deletions(-) create mode 100644 .fmf/version create mode 100644 plans/integration.fmf create mode 100644 tests/integration/main.fmf rename tests/{ => integration}/run-it.sh (87%) delete mode 100644 tests/tests.yml diff --git a/.fmf/version b/.fmf/version new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/.fmf/version @@ -0,0 +1 @@ +1 diff --git a/plans/integration.fmf b/plans/integration.fmf new file mode 100644 index 0000000..aa2d392 --- /dev/null +++ b/plans/integration.fmf @@ -0,0 +1,19 @@ +summary: Test for Upower +discover: + how: fmf +prepare: + - name: packages + how: install + package: + - upower + - upower-tests + - umockdev-devel + - dbus-x11 + - polkit-devel + - python3-dbus + - python3-dbusmock + - python3-gobject-base + - python3-pip + - python3-packaging +execute: + how: tmt diff --git a/tests/integration/main.fmf b/tests/integration/main.fmf new file mode 100644 index 0000000..683aaf3 --- /dev/null +++ b/tests/integration/main.fmf @@ -0,0 +1,2 @@ +summary: Upower integration test +test: bash ./run-it.sh diff --git a/tests/run-it.sh b/tests/integration/run-it.sh similarity index 87% rename from tests/run-it.sh rename to tests/integration/run-it.sh index d480ee1..8b086bf 100755 --- a/tests/run-it.sh +++ b/tests/integration/run-it.sh @@ -2,7 +2,7 @@ set -u # main script -IT="${1:-source/src/linux/integration-test.py}" +IT="${1:-/usr/libexec/installed-tests/upower/integration-test.py}" # check if we need to install additional packages # which is the case if we are on RHEL 8 diff --git a/tests/tests.yml b/tests/tests.yml deleted file mode 100644 index f7723ef..0000000 --- a/tests/tests.yml +++ /dev/null @@ -1,27 +0,0 @@ ---- -- hosts: localhost - roles: - - role: standard-test-source - tags: - - always - required_packages: - - git-core - - role: standard-test-basic - tags: - - atomic - - classic - required_packages: - - upower - - polkit-libs - - python3-gobject-base - - python3-dbus - - python3-dbusmock - - python3-packaging - - umockdev-devel - tests: - - smoke: - dir: smoke - run: upower -d - - integration: - dir: . - run: ./run-it.sh source/src/linux/integration-test.py From 4c15a189e86a08ff9c944ec036f9c908843f2324 Mon Sep 17 00:00:00 2001 From: Kate Hsuan Date: Thu, 28 Aug 2025 15:41:56 +0800 Subject: [PATCH 27/30] Upower owns /usr/share/installed-tests/upower Upower owns its test directory. Resolves: rhbz#2281974 --- upower.spec | 2 ++ 1 file changed, 2 insertions(+) diff --git a/upower.spec b/upower.spec index 44e665d..04d2bda 100644 --- a/upower.spec +++ b/upower.spec @@ -133,6 +133,8 @@ mv $RPM_BUILD_ROOT%{_libexecdir}/upower $RPM_BUILD_ROOT%{_libexecdir}/installed- %files tests %{_libexecdir}/installed-tests/upower +%dir %{_datadir}/installed-tests/ +%dir %{_datadir}/installed-tests/upower/ %{_datadir}/installed-tests/upower/upower-integration.test %changelog From a7310904eb121501e3d1d13cb2fa9578be82c19b Mon Sep 17 00:00:00 2001 From: Kate Hsuan Date: Fri, 29 Aug 2025 14:58:04 +0800 Subject: [PATCH 28/30] Fix URL (rhbz#2387606) Fix URL. --- upower.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/upower.spec b/upower.spec index 04d2bda..d5adaa1 100644 --- a/upower.spec +++ b/upower.spec @@ -3,7 +3,7 @@ Name: upower Version: 1.90.9 Release: %autorelease License: GPL-2.0-or-later -URL: http://upower.freedesktop.org/ +URL: https://upower.freedesktop.org/ Source0: https://gitlab.freedesktop.org/upower/%{name}/-/archive/v%{version}/%{name}-v%{version}.tar.bz2 BuildRequires: meson From 4fc4010f6d3fa67d6c374f8032d94c80bc4c96d5 Mon Sep 17 00:00:00 2001 From: Kate Hsuan Date: Fri, 29 Aug 2025 15:51:16 +0800 Subject: [PATCH 29/30] Update to the upstream version 1.90.10 (rhbz#2391004) Update to version 1.90.10. --- .gitignore | 1 + sources | 2 +- upower.spec | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index c65b443..eee096e 100644 --- a/.gitignore +++ b/.gitignore @@ -46,3 +46,4 @@ upower-0.9.5.tar.bz2 /upower-v1.90.7.tar.bz2 /upower-v1.90.8.tar.bz2 /upower-v1.90.9.tar.bz2 +/upower-v1.90.10.tar.bz2 diff --git a/sources b/sources index d2899f5..725b805 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (upower-v1.90.9.tar.bz2) = 7308e03125a5a888242253f9260f68283f5b53677c08dbc4d7e4d48cc6f600f50f8ab161d100f152138208d5119acddc90f0f19742aa8cca58e3a0ec54975110 +SHA512 (upower-v1.90.10.tar.bz2) = f7bfb4c4301b6155a17c6b1baf12947503037bb8f8827ab7993ade39ef1aaece64bc08318c73600f62cd5b2ff7d372cc58652045efa803fff5951abd466a3d63 diff --git a/upower.spec b/upower.spec index d5adaa1..d3ee17d 100644 --- a/upower.spec +++ b/upower.spec @@ -1,6 +1,6 @@ Summary: Power Management Service Name: upower -Version: 1.90.9 +Version: 1.90.10 Release: %autorelease License: GPL-2.0-or-later URL: https://upower.freedesktop.org/ From b15ffc9b97d8cc79c7aa833dd38e2dd1987e867a Mon Sep 17 00:00:00 2001 From: Kate Hsuan Date: Wed, 26 Nov 2025 16:51:27 +0800 Subject: [PATCH 30/30] Update to the upstream version 1.91.0 Update to 1.91.0 Resolves: #2416975 --- .gitignore | 1 + sources | 2 +- upower.spec | 5 +++-- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index eee096e..fca0e92 100644 --- a/.gitignore +++ b/.gitignore @@ -47,3 +47,4 @@ upower-0.9.5.tar.bz2 /upower-v1.90.8.tar.bz2 /upower-v1.90.9.tar.bz2 /upower-v1.90.10.tar.bz2 +/upower-v1.91.0.tar.bz2 diff --git a/sources b/sources index 725b805..c586f4b 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (upower-v1.90.10.tar.bz2) = f7bfb4c4301b6155a17c6b1baf12947503037bb8f8827ab7993ade39ef1aaece64bc08318c73600f62cd5b2ff7d372cc58652045efa803fff5951abd466a3d63 +SHA512 (upower-v1.91.0.tar.bz2) = 32801d3ee4c5086221a9f12062b0f2e6765b239f68a562c24ef7808999bb34e299e6acd31acf5c414cf41613709c97b20ad64d252e1d8ddf23183576b156cf93 diff --git a/upower.spec b/upower.spec index d3ee17d..87a9f4c 100644 --- a/upower.spec +++ b/upower.spec @@ -1,6 +1,6 @@ Summary: Power Management Service Name: upower -Version: 1.90.10 +Version: 1.91.0 Release: %autorelease License: GPL-2.0-or-later URL: https://upower.freedesktop.org/ @@ -102,7 +102,8 @@ mv $RPM_BUILD_ROOT%{_libexecdir}/upower $RPM_BUILD_ROOT%{_libexecdir}/installed- %ghost %dir %{_localstatedir}/lib/upower %dir %{_sysconfdir}/UPower %config %{_sysconfdir}/UPower/UPower.conf -%{_bindir}/* +%{_sysconfdir}/UPower/UPower.conf.d/README.md +%{_bindir}/upower %{_libexecdir}/upowerd %{_mandir}/man1/* %{_mandir}/man7/*