From f08a2d93b2ed3c43fb7fd07eb0d8d29bb2ebbbbe Mon Sep 17 00:00:00 2001 From: eabdullin Date: Wed, 15 May 2024 07:05:32 +0000 Subject: [PATCH] Import from AlmaLinux stable repository --- .PackageKit.metadata | 2 +- .gitignore | 2 +- ...gekitd-Use-export_dynamic-explicitly.patch | 28 ++++ SOURCES/package-remove-password-prompt.patch | 32 ++++ SOURCES/shutdown-on-idle.patch | 156 ++++++++++++++++++ SPECS/PackageKit.spec | 30 +++- 6 files changed, 245 insertions(+), 5 deletions(-) create mode 100644 SOURCES/0001-packagekitd-Use-export_dynamic-explicitly.patch create mode 100644 SOURCES/package-remove-password-prompt.patch create mode 100644 SOURCES/shutdown-on-idle.patch diff --git a/.PackageKit.metadata b/.PackageKit.metadata index b5baef1..976d15a 100644 --- a/.PackageKit.metadata +++ b/.PackageKit.metadata @@ -1 +1 @@ -4516c8954e4daf46a3e7e1003e8105d549884d2f SOURCES/PackageKit-1.2.4.tar.xz +f4f7c82221f11084f6fb030de9b648d57fcab40a SOURCES/PackageKit-1.2.6.tar.xz diff --git a/.gitignore b/.gitignore index fe28b89..dc3cc2e 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/PackageKit-1.2.4.tar.xz +SOURCES/PackageKit-1.2.6.tar.xz diff --git a/SOURCES/0001-packagekitd-Use-export_dynamic-explicitly.patch b/SOURCES/0001-packagekitd-Use-export_dynamic-explicitly.patch new file mode 100644 index 0000000..4a16757 --- /dev/null +++ b/SOURCES/0001-packagekitd-Use-export_dynamic-explicitly.patch @@ -0,0 +1,28 @@ +From 70594bbe7b3c61b7f9fe58cb77ddaeb630e7276f Mon Sep 17 00:00:00 2001 +From: Dominique Leuenberger +Date: Mon, 17 Jul 2023 15:24:14 +0200 +Subject: [PATCH] packagekitd: Use export_dynamic explicitly + +We used to get that implicitly through GModule .pc file defining -Wl,--export-dynamic so that modules could reference symbols in the main executable. + +With newer GLib including glib@11bdd6fc the gmodule .pc file will no longer define this compiler flag in a way that works for us, resulting in errors like: +packagekitd[2394]: Failed to load the backend: opening module zypp failed : /usr/lib64/packagekit-backend/libpk_backend_zypp.so: undefined symbol: pk_backend_job_require_restart +--- + src/meson.build | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/meson.build b/src/meson.build +index cae73380e..a47169c2b 100644 +--- a/src/meson.build ++++ b/src/meson.build +@@ -76,6 +76,7 @@ packagekitd_exec = executable( + ], + install: true, + install_dir: get_option('libexecdir'), ++ export_dynamic: true, + c_args: [ + '-DPK_BUILD_DAEMON=1', + '-DG_LOG_DOMAIN="PackageKit"', +-- +2.41.0 + diff --git a/SOURCES/package-remove-password-prompt.patch b/SOURCES/package-remove-password-prompt.patch new file mode 100644 index 0000000..3cda368 --- /dev/null +++ b/SOURCES/package-remove-password-prompt.patch @@ -0,0 +1,32 @@ +From 8914e11968a934faa651311fd98a98a3a19218ae Mon Sep 17 00:00:00 2001 +From: Michael Catanzaro +Date: Wed, 3 Jun 2020 10:45:12 -0500 +Subject: [PATCH] Allow admin users to remove packages without password prompt + +A local, active admin user can install packages without a password +prompt, but has to enter the admin password to remove packages. This +doesn't make much sense. It should be parallel. + +Note that this change has no effect on what users are able to do, +because it only applies to admin users. The password only protects +against unlocked workstation attackers, where an attacker gains physical +access to an unlocked desktop. It's pretty weird to prevent such an +attacker from removing software, but allow installing new stuff. + +https://pagure.io/fedora-workstation/issue/233 +--- + policy/org.freedesktop.packagekit.rules | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/policy/org.freedesktop.packagekit.rules b/policy/org.freedesktop.packagekit.rules +index 6a1c8a701..95d21925f 100644 +--- a/policy/org.freedesktop.packagekit.rules ++++ b/policy/org.freedesktop.packagekit.rules +@@ -1,5 +1,6 @@ + polkit.addRule(function(action, subject) { +- if (action.id == "org.freedesktop.packagekit.package-install" && ++ if ((action.id == "org.freedesktop.packagekit.package-install" || ++ action.id == "org.freedesktop.packagekit.package-remove") && + subject.active == true && subject.local == true && + subject.isInGroup("wheel")) { + return polkit.Result.YES; diff --git a/SOURCES/shutdown-on-idle.patch b/SOURCES/shutdown-on-idle.patch new file mode 100644 index 0000000..ec18922 --- /dev/null +++ b/SOURCES/shutdown-on-idle.patch @@ -0,0 +1,156 @@ +From f42096ff2427a758eda9de2e3046714167a38c95 Mon Sep 17 00:00:00 2001 +From: Russell Haley +Date: Mon, 12 Sep 2022 12:36:10 -0500 +Subject: [PATCH] Revert "Revert "Shutdown the daemon on idle by default"" + +This reverts commit dca1f5b2508a4632d0b9fefab771a5a9caf83a5c. + +Which reverted commit 0c84d71509e851db20445c747529bd7d3724f081, +which reverted commit c6eb3555ec5b41e988c111d276764d55fb83bda3. + +Fixes #460. + +The memory usage of packagekitd has been observed growing well beyond +half a GiB. See: + +https://bugzilla.redhat.com/show_bug.cgi?id=1354074 +https://bugzilla.redhat.com/show_bug.cgi?id=1854875 +https://bugzilla.redhat.com/show_bug.cgi?id=1896964 + +As I understand it, this timeout causes some slightly surprising +behavior when users mix command line dnf upgades with GUI PackageKit +upgrades, and do not manually run an update check before rebooting for +update. But that is an edge case, and the price of not having it is too +high. +--- + src/pk-main.c | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/src/pk-main.c b/src/pk-main.c +index d372a7456..1de9a1390 100644 +--- a/src/pk-main.c ++++ b/src/pk-main.c +@@ -183,6 +183,11 @@ main (int argc, char *argv[]) + + /* after how long do we timeout? */ + exit_idle_time = g_key_file_get_integer (conf, "Daemon", "ShutdownTimeout", NULL); ++ /* THIS COMMENT IS A TSUNAMI STONE ++ * Before removing the default timeout, please study the git history and ++ * be sure that you are not regressing Redhat bugzilla #1354074 (again). */ ++ if (exit_idle_time == 0) ++ exit_idle_time = 300; + g_debug ("daemon shutdown set to %i seconds", exit_idle_time); + + /* override the backend name */ + +From ba378b8510133bbad081aebd15cfe2ae74fe1e8a Mon Sep 17 00:00:00 2001 +From: Gordon Messmer +Date: Sun, 15 Jan 2023 15:17:45 -0800 +Subject: [PATCH] valgrind warns that a conditional depends on an uninitialized + value. + +--- + src/pk-main.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/pk-main.c b/src/pk-main.c +index d372a7456..43727d206 100644 +--- a/src/pk-main.c ++++ b/src/pk-main.c +@@ -241,6 +241,8 @@ main (int argc, char *argv[]) + helper.loop = loop; + helper.timer_id = g_timeout_add_seconds (5, (GSourceFunc) pk_main_timeout_check_cb, &helper); + g_source_set_name_by_id (helper.timer_id, "[PkMain] main poll"); ++ } else { ++ helper.timer_id = 0; + } + + /* immediatly exit */ + +From 8c22a0e2f3caf7df8728eec0dbf04d9c3c69f32e Mon Sep 17 00:00:00 2001 +From: Gordon Messmer +Date: Tue, 17 Jan 2023 08:45:16 -0800 +Subject: [PATCH] Notify PackageKit when dnf installs or removes packages. + +--- + backends/dnf/meson.build | 13 +++++++++ + backends/dnf/notify_packagekit.py | 45 +++++++++++++++++++++++++++++++ + contrib/PackageKit.spec.in | 2 ++ + 3 files changed, 60 insertions(+) + create mode 100644 backends/dnf/notify_packagekit.py + +diff --git a/backends/dnf/meson.build b/backends/dnf/meson.build +index ac75a1b6c..09718baf1 100644 +--- a/backends/dnf/meson.build ++++ b/backends/dnf/meson.build +@@ -7,6 +7,19 @@ if meson.get_compiler('c').has_function('hy_query_get_advisory_pkgs', prefix: '# + c_args += ['-DHAVE_HY_QUERY_GET_ADVISORY_PKGS'] + endif + ++python = import('python') ++python_exec = python.find_installation() ++python_package_dir = get_option('pythonpackagedir') ++if python_package_dir == '' ++ python_package_dir = python_exec.get_install_dir() ++endif ++python_package_dir = join_paths(python_package_dir, 'dnf-plugins') ++ ++install_data( ++ 'notify_packagekit.py', ++ install_dir: join_paths(python_package_dir), ++) ++ + shared_module( + 'pk_backend_dnf', + 'dnf-backend-vendor-@0@.c'.format(get_option('dnf_vendor')), +diff --git a/backends/dnf/notify_packagekit.py b/backends/dnf/notify_packagekit.py +new file mode 100644 +index 000000000..3be1fadd8 +--- /dev/null ++++ b/backends/dnf/notify_packagekit.py +@@ -0,0 +1,45 @@ ++# -*- coding: utf-8 -*- ++# ++# Copyright (C) 2022 Gordon Messmer ++# ++# Licensed under the GNU Lesser General Public License Version 2.1 ++# ++# This library is free software; you can redistribute it and/or ++# modify it under the terms of the GNU Lesser General Public ++# License as published by the Free Software Foundation; either ++# version 2.1 of the License, or (at your option) any later version. ++# ++# This library is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++# Lesser General Public License for more details. ++# ++# You should have received a copy of the GNU Lesser General Public ++# License along with this library; if not, write to the Free Software ++# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ++ ++""" ++Notify packagekitd when packages are installed, updated, or removed. ++""" ++ ++import dbus ++import dnf ++from dnfpluginscore import _ ++ ++ ++class NotifyPackagekit(dnf.Plugin): ++ name = "notify-packagekit" ++ ++ def __init__(self, base, cli): ++ super(NotifyPackagekit, self).__init__(base, cli) ++ self.base = base ++ self.cli = cli ++ ++ def transaction(self): ++ try: ++ bus = dbus.SystemBus() ++ proxy = bus.get_object('org.freedesktop.PackageKit', '/org/freedesktop/PackageKit') ++ iface = dbus.Interface(proxy, dbus_interface='org.freedesktop.PackageKit') ++ iface.StateHasChanged('posttrans') ++ except: ++ pass diff --git a/SPECS/PackageKit.spec b/SPECS/PackageKit.spec index 889fcd5..d327fb6 100644 --- a/SPECS/PackageKit.spec +++ b/SPECS/PackageKit.spec @@ -5,9 +5,9 @@ Summary: Package management service Name: PackageKit -Version: 1.2.4 -Release: 2%{?dist} -License: GPLv2+ and LGPLv2+ +Version: 1.2.6 +Release: 1%{?dist} +License: GPL-2.0-or-later AND LGPL-2.1-or-later URL: http://www.freedesktop.org/software/PackageKit/ Source0: http://www.freedesktop.org/software/PackageKit/releases/%{name}-%{version}.tar.xz @@ -17,6 +17,20 @@ Patch0: PackageKit-0.3.8-Fedora-Vendor.conf.patch Patch0: PackageKit-0.3.8-RHEL-Vendor.conf.patch %endif +# https://pagure.io/fedora-workstation/issue/233 +# https://github.com/PackageKit/PackageKit/pull/404 +Patch1: package-remove-password-prompt.patch + +# https://github.com/PackageKit/PackageKit/pull/578 +# https://github.com/PackageKit/PackageKit/pull/599 +# https://github.com/PackageKit/PackageKit/pull/600 +Patch2: shutdown-on-idle.patch + +# https://github.com/PackageKit/PackageKit/pull/643 +# Fixes errors like +# packagekitd[1113]: Failed to load the backend: opening module dnf failed : /usr/lib64/packagekit-backend/libpk_backend_dnf.so: undefined symbol: pk_backend_job_update_details +Patch3: 0001-packagekitd-Use-export_dynamic-explicitly.patch + BuildRequires: glib2-devel >= %{glib2_version} BuildRequires: xmlto BuildRequires: gtk-doc @@ -33,9 +47,11 @@ BuildRequires: pango-devel BuildRequires: fontconfig-devel BuildRequires: libappstream-glib-devel BuildRequires: libdnf-devel >= %{libdnf_version} +BuildRequires: systemd BuildRequires: systemd-devel BuildRequires: gobject-introspection-devel BuildRequires: bash-completion +BuildRequires: python3-devel Requires: %{name}-glib%{?_isa} = %{version}-%{release} Requires: glib2%{?_isa} >= %{glib2_version} @@ -143,6 +159,9 @@ using PackageKit. %install %meson_install +# Create cache dir +mkdir -p %{buildroot}%{_localstatedir}/cache/PackageKit + # Create directories for downloaded appstream data mkdir -p %{buildroot}%{_localstatedir}/cache/app-info/{icons,xmls} @@ -174,6 +193,7 @@ systemctl disable packagekit-offline-update.service > /dev/null 2>&1 || : %dir %{_localstatedir}/cache/app-info %dir %{_localstatedir}/cache/app-info/icons %dir %{_localstatedir}/cache/app-info/xmls +%dir %{_localstatedir}/cache/PackageKit %{_datadir}/bash-completion/completions/pkcon %dir %{_libdir}/packagekit-backend %config(noreplace) %{_sysconfdir}/PackageKit/PackageKit.conf @@ -200,6 +220,7 @@ systemctl disable packagekit-offline-update.service > /dev/null 2>&1 || : %{_unitdir}/system-update.target.wants/ %{_libexecdir}/pk-*offline-update %{_libdir}/packagekit-backend/libpk_backend_dnf.so +%pycached %{python3_sitelib}/dnf-plugins/notify_packagekit.py %files glib %{_libdir}/*packagekit-glib2.so.* @@ -234,6 +255,9 @@ systemctl disable packagekit-offline-update.service > /dev/null 2>&1 || : %{_datadir}/vala/vapi/packagekit-glib2.deps %changelog +* Mon Jan 15 2024 Milan Crha - 1.2.6-1 +- Resolves: RHEL-21560 (Rebase PackageKit to 1.2.6 version) + * Mon Aug 09 2021 Mohan Boddu - 1.2.4-2 - Rebuilt for IMA sigs, glibc 2.34, aarch64 flags Related: rhbz#1991688