Hello community, here is the log from the commit of package PackageKit for openSUSE:Factory checked in at 2020-03-06 08:01:59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/PackageKit (Old) and /work/SRC/openSUSE:Factory/.PackageKit.new.26092 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "PackageKit" Fri Mar 6 08:01:59 2020 rev:197 rq: version:1.1.12 Changes: -------- --- /work/SRC/openSUSE:Factory/PackageKit/PackageKit.changes 2020-03-04 09:37:52.445836749 +0100 +++ /work/SRC/openSUSE:Factory/.PackageKit.new.26092/PackageKit.changes 2020-03-06 08:02:02.755478854 +0100 @@ -2,50 +1,0 @@ -Sat Jan 25 14:04:56 UTC 2020 - Dominique Leuenberger <[email protected]> - -- No longer recommend -lang: supplements are in use - -------------------------------------------------------------------- -Sun Jan 19 22:48:36 UTC 2020 - Neal Gompa <[email protected]> - -- Fix autotools modifications in openSUSE vendor patch - + Patch: PackageKit-dnf-Add-openSUSE-vendor.patch - -------------------------------------------------------------------- -Sun Jan 12 19:25:24 UTC 2020 - Neal Gompa <[email protected]> - -- Update to version 1.1.13 - + New APIs for pk-client-helper in packagekit-glib2 - + dnf, zypp: Various fixes related to upgrades - + Added support for user services - + New plymouth "system-upgrade" and "reboot" modes used now - + Add mutex lock to protect EULAs array - + Correct bug tracker links on website - + Support non-x86 arches in gstreamer helper - + List installed, removed and obsoleted packages in pkcon get-updates - + Properly mark obsoleted packages when simulating upgrade - + Provide information about obsoleted packages - + Return directly when its state is going backwards - + Shrink the progress bar to fit when run in small spaces - + Improve the 'using' documentation with a link to API -- Remove upstreamed patches: - + PackageKit-add-mutex-lock-to-protect-backend-priv-eulas.patch - + PackageKit-return-on-transactions-going-backwards.patch - + PackageKit-zypp-dont-set-upgrade-mode-on-updating-specific-packages.patch - + PackageKit-zypp-fix-newest-filter.patch - + PackageKit-zypp-fix-what-provides-newest-filter.patch - + PackageKit-zypp-get-files-string-array.patch - + PackageKit-zypp-get-updates-dup-or-up.patch - + PackageKit-zypp-upgrade-system.patch - + zypp-perform-actions-disallowed-by-update-in-upgrade-mode.patch - + 0001-dnf-Don-t-override-DnfContext-s-release_ver-for-the-.patch - + 0001-dnf-Invalidate-the-sack-cache-after-downloading-new-.patch - + 0001-offline-update-Use-new-plymouth-system-upgrade-and-r.patch -- Add new openSUSE specific patches for DNF backend: - + PackageKit-dnf-Add-openSUSE-vendor.patch - + PackageKit-dnf-Add-support-for-AppStream-repodata-basenames-use.patch -- Remove old openSUSE patches for the DNF backend: - + 1001-dnf-Add-openSUSE-Tumbleweed-vendor.patch - + 1002-dnf-Add-support-for-AppStream-repodata-basenames-use.patch -- Refresh patches: - + PackageKit-drop-gtk2.patch - -------------------------------------------------------------------- @@ -89,13 +38,0 @@ - -------------------------------------------------------------------- -Sun Sep 1 02:29:07 UTC 2019 - Neal Gompa <[email protected]> - -- Build PackageKit DNF backend -- Add patches to support backend - + 0001-dnf-Invalidate-the-sack-cache-after-downloading-new-.patch - + 0001-dnf-Don-t-override-DnfContext-s-release_ver-for-the-.patch - + 1001-dnf-Add-openSUSE-Tumbleweed-vendor.patch - + 1002-dnf-Add-support-for-AppStream-repodata-basenames-use.patch -- Add patch to improve offline updates with plymouth - + 0001-offline-update-Use-new-plymouth-system-upgrade-and-r.patch -- Fix Supplements to use modern rich Supplements statements Old: ---- PackageKit-1.1.13.tar.xz PackageKit-1.1.13.tar.xz.asc PackageKit-dnf-Add-openSUSE-vendor.patch PackageKit-dnf-Add-support-for-AppStream-repodata-basenames-use.patch New: ---- PackageKit-1.1.12.tar.xz PackageKit-1.1.12.tar.xz.asc PackageKit-add-mutex-lock-to-protect-backend-priv-eulas.patch PackageKit-return-on-transactions-going-backwards.patch PackageKit-zypp-dont-set-upgrade-mode-on-updating-specific-packages.patch PackageKit-zypp-fix-newest-filter.patch PackageKit-zypp-fix-what-provides-newest-filter.patch PackageKit-zypp-get-files-string-array.patch PackageKit-zypp-get-updates-dup-or-up.patch PackageKit-zypp-upgrade-system.patch zypp-perform-actions-disallowed-by-update-in-upgrade-mode.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ PackageKit.spec ++++++ --- /var/tmp/diff_new_pack.7nkLUK/_old 2020-03-06 08:02:04.207480017 +0100 +++ /var/tmp/diff_new_pack.7nkLUK/_new 2020-03-06 08:02:04.211480019 +0100 @@ -22,14 +22,6 @@ %else %bcond_without offline_updates %endif - -# Only make DNF backend available on openSUSE flavors -%if (0%{?sle_version} >= 150100 || 0%{?suse_version} >= 1550) && 0%{?is_opensuse} -%bcond_without dnf -%else -%bcond_with dnf -%endif - # $ pkcon search file /usr/bin/anjuta #Compat macro for new _fillupdir macro introduced in Nov 2017 %if ! %{defined _fillupdir} @@ -37,7 +29,7 @@ %endif Name: PackageKit -Version: 1.1.13 +Version: 1.1.12 Release: 0 Summary: Simple software installation management software License: GPL-2.0-or-later @@ -49,22 +41,33 @@ Source3: PackageKit.tmpfiles Source99: PackageKit.keyring +# PATCH-FIX-UPSTREAM PackageKit-return-on-transactions-going-backwards.patch gh#hughsie/PackageKit#301, bsc#1038425 [email protected] -- transaction: Return directly when its state is going backwards +Patch1: PackageKit-return-on-transactions-going-backwards.patch +# PATCH-FIX-UPSTREAM PackageKit-add-mutex-lock-to-protect-backend-priv-eulas.patch gh#hughsie/PackageKit#303, bsc#1038425 [email protected] -- Remove pk_is_thread_default() check in pk_backend_is_eula_valid +Patch2: PackageKit-add-mutex-lock-to-protect-backend-priv-eulas.patch # PATCH-FEATURE-OPENSUSE PackageKit-systemd-timers.patch bsc#1115410 [email protected] -- Migrate from cron to systemd timers -Patch1: PackageKit-systemd-timers.patch +Patch3: PackageKit-systemd-timers.patch # PATCH-FIX-OPENSUSE PackageKit-remove-polkit-rules.patch bsc#1125434 [email protected] -- Remove polkit rules file -Patch2: PackageKit-remove-polkit-rules.patch +Patch4: PackageKit-remove-polkit-rules.patch +# PATCH-FIX-UPSTREAM PackageKit-zypp-fix-newest-filter.patch bsc#1137019 gh#hughsie/PackageKit#329 [email protected] -- zypp: Emit installed package for newest filter +Patch5: PackageKit-zypp-fix-newest-filter.patch +# PATCH-FIX-UPSTREAM PackageKit-zypp-fix-what-provides-newest-filter.patch bsc#984865, gh#hughsie/PackageKit#335 [email protected] -- zypp: Add support for newest filter in what-provides +Patch6: PackageKit-zypp-fix-what-provides-newest-filter.patch # PATCH-FIX-UPSTREAM PackageKit-drop-gtk2.patch gh#/hughsie/PackageKit#333 - Port away from gtk2 dependency -Patch3: PackageKit-drop-gtk2.patch +Patch7: PackageKit-drop-gtk2.patch +# PATCH-FIX-UPSTREAM PackageKit-zypp-get-updates-dup-or-up.patch gh#hughsie/PackageKit#343 [email protected] -- zypp: Fix get-updates in Tumbleweed +Patch8: PackageKit-zypp-get-updates-dup-or-up.patch +# PATCH-FIX-UPSTREAM PackageKit-zypp-dont-set-upgrade-mode-on-updating-specific-packages.patch gh#hughsie/PackageKit#345 [email protected] -- zypp: Don't set upgrade mode in update-packages +Patch9: PackageKit-zypp-dont-set-upgrade-mode-on-updating-specific-packages.patch +Patch10: zypp-perform-actions-disallowed-by-update-in-upgrade-mode.patch +# PATCH-FIX-UPSTREAM PackageKit-zypp-upgrade-system.patch bsc#1155638, bsc#1154973, gh#hughsie/PackageKit/commit/d060dd24 [email protected] -- zypp: implement upgrade-system method +Patch11: PackageKit-zypp-upgrade-system.patch +# PATCH-FIX-UPSTREAM PackageKit-zypp-get-files-string-array.patch gh#hughsie/PackageKit#351 [email protected] -- zypp: pass an array of strings to pk_backend_job_files() +Patch12: PackageKit-zypp-get-files-string-array.patch # PATCH-FIX-UPSTREAM PackageKit-zypp-update-packages-in-all-openSUSE.patch [email protected] -- Handle Tumbleweed upgrade in update-packages as well so that it doesn't break other components. -Patch4: PackageKit-zypp-update-packages-in-all-openSUSE.patch -# PATCH-FIX-OPENSUSE PackageKit-dnf-Add-openSUSE-vendor.patch [email protected] -- Add openSUSE vendor -Patch1001: PackageKit-dnf-Add-openSUSE-vendor.patch -# PATCH-FIX-OPENSUSE PackageKit-dnf-Add-support-for-AppStream-repodata-basenames-use.patch [email protected] -- Band-aid to deal with OBS producing differently named appstream repodata files -Patch1002: PackageKit-dnf-Add-support-for-AppStream-repodata-basenames-use.patch +Patch13: PackageKit-zypp-update-packages-in-all-openSUSE.patch -BuildRequires: autoconf BuildRequires: autoconf-archive -BuildRequires: automake BuildRequires: fdupes BuildRequires: gcc-c++ BuildRequires: gobject-introspection-devel @@ -75,10 +78,6 @@ BuildRequires: intltool BuildRequires: libarchive-devel BuildRequires: libcppunit-devel -%if %{with dnf} -BuildRequires: appstream-glib-devel -BuildRequires: libdnf-devel >= 0.22.0 -%endif BuildRequires: libgudev-1_0-devel BuildRequires: libtool BuildRequires: libzypp-devel @@ -96,8 +95,8 @@ # We really want a working backend (likely zypp) Requires: %{name}-backend Requires: %{name}-branding = %{version} -Suggests: %{name}-backend-zypp Requires(post): %fillup_prereq +Recommends: %{name}-lang %if 0%{suse_version} < 1500 Suggests: cron %endif @@ -124,8 +123,6 @@ Group: System/Daemons Requires: %{name} = %{version} Provides: %{name}-backend = %{version} -Conflicts: %{name}-backend -Supplements: (%{name} and libzypp) %description backend-zypp PackageKit is a system designed to make installing and updating @@ -134,26 +131,6 @@ use some of the latest technology like PolicyKit to make the process suck less. -%if %{with dnf} -%package backend-dnf -Summary: DNF backend for the PackageKit installation management software -License: GPL-2.0-or-later -Group: System/Daemons -Requires: %{name} = %{version} -Provides: %{name}-backend = %{version} -Conflicts: %{name}-backend -Supplements: (%{name} and dnf-conf and rpm-repos-openSUSE) -# Stricter dependency to keep things sane -%requires_ge %(rpm -qf "$(readlink -f %{_libdir}/libdnf.so)") - -%description backend-dnf -PackageKit is a system designed to make installing and updating -software on your computer easier. The primary design goal is to unify -all the software graphical tools used in different distributions, and -use some of the latest technology like PolicyKit to make the process -suck less. -%endif - %package gstreamer-plugin Summary: GStreamer plugin for the PackageKit installation management software License: GPL-2.0-or-later @@ -161,7 +138,7 @@ Requires(post): update-alternatives Requires(postun): update-alternatives Recommends: %{name} = %{version} -Supplements: (%{name} and gstreamer-plugins-base) +Supplements: packageand(%{name}:gstreamer-plugins-base) %description gstreamer-plugin PackageKit is a system designed to make installing and updating @@ -175,7 +152,7 @@ License: GPL-2.0-or-later Group: System/Libraries Recommends: %{name} = %{version} -Supplements: (%{name} and gtk3) +Supplements: packageand(%{name}:gtk3) %glib2_gsettings_schema_requires %description gtk3-module @@ -249,7 +226,7 @@ License: GPL-2.0-or-later Group: System/Daemons Requires: %{name} = %{version} -Supplements: (%{name} and branding-upstream) +Supplements: packageand(%{name}:branding-upstream) Conflicts: %{name}-branding Provides: %{name}-branding = %{version} BuildArch: noarch @@ -271,9 +248,6 @@ %autosetup -p1 translation-update-upstream -# Due to DNF patches, need to regen configure... -autoreconf -fiv - %build NOCONFIGURE=1 ./autogen.sh %if !0%{?is_opensuse} @@ -281,8 +255,6 @@ %endif %configure \ --disable-static \ - %{?with_dnf:--enable-dnf} \ - %{?with_dnf:--with-dnf-vendor=opensuse} \ --enable-zypp \ --enable-gstreamer-plugin \ %if ! %{BUILD_CNF} @@ -462,11 +434,6 @@ %files backend-zypp %{_libdir}/packagekit-backend/libpk_backend_zypp.so -%if %{with dnf} -%files backend-dnf -%{_libdir}/packagekit-backend/libpk_backend_dnf.so -%endif - %files gstreamer-plugin %ghost %{_sysconfdir}/alternatives/gst-install-plugins-helper %{_libexecdir}/gst-install-plugins-helper ++++++ PackageKit-1.1.13.tar.xz -> PackageKit-1.1.12.tar.xz ++++++ ++++ 17588 lines of diff (skipped) ++++++ PackageKit-add-mutex-lock-to-protect-backend-priv-eulas.patch ++++++ >From 1b028d0598224fbb1510355c4a7dee7d25873872 Mon Sep 17 00:00:00 2001 From: Jonathan Kang <[email protected]> Date: Fri, 8 Mar 2019 21:44:08 +0800 Subject: [PATCH] Add mutex lock to protect backend->priv->eulas (#303) pk_is_thread_default() check was introduced in commit 44bd3ab6 to detect possible threading problems. Some backends need call pk_backend_is_eula_valid() in a thread which is not the default one to perform EULA related actions. This way pk_is_thread_default() check fails. Fix that by removing the pk_is_thread_default() checks in related functions and add mutex lock to avoid eulas to be accessed in multiple threads at the same time. Fixes #300 --- src/pk-backend.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/pk-backend.c b/src/pk-backend.c index 38f32a04c..c05f6c0cd 100644 --- a/src/pk-backend.c +++ b/src/pk-backend.c @@ -189,6 +189,7 @@ struct PkBackendPrivate gchar *name; gpointer file_changed_data; GHashTable *eulas; + GMutex eulas_mutex; GModule *handle; PkBackendDesc *desc; PkBackendFileChanged file_changed_func; @@ -935,10 +936,12 @@ void pk_backend_accept_eula (PkBackend *backend, const gchar *eula_id) { gpointer present; + g_autoptr(GMutexLocker) locker = NULL; + + locker = g_mutex_locker_new (&backend->priv->eulas_mutex); g_return_if_fail (PK_IS_BACKEND (backend)); g_return_if_fail (eula_id != NULL); - g_return_if_fail (pk_is_thread_default ()); present = g_hash_table_lookup (backend->priv->eulas, eula_id); if (present != NULL) { @@ -952,10 +955,12 @@ gboolean pk_backend_is_eula_valid (PkBackend *backend, const gchar *eula_id) { gpointer present; + g_autoptr(GMutexLocker) locker = NULL; + + locker = g_mutex_locker_new (&backend->priv->eulas_mutex); g_return_val_if_fail (PK_IS_BACKEND (backend), FALSE); g_return_val_if_fail (eula_id != NULL, FALSE); - g_return_val_if_fail (pk_is_thread_default (), FALSE); present = g_hash_table_lookup (backend->priv->eulas, eula_id); if (present != NULL) @@ -969,9 +974,11 @@ pk_backend_get_accepted_eula_string (PkBackend *backend) GString *string; GList *l; g_autoptr(GList) keys = NULL; + g_autoptr(GMutexLocker) locker = NULL; + + locker = g_mutex_locker_new (&backend->priv->eulas_mutex); g_return_val_if_fail (PK_IS_BACKEND (backend), FALSE); - g_return_val_if_fail (pk_is_thread_default (), FALSE); /* optimise for the common case */ if (g_hash_table_size (backend->priv->eulas) == 0) @@ -1065,6 +1072,7 @@ pk_backend_finalize (GObject *object) g_key_file_unref (backend->priv->conf); g_hash_table_destroy (backend->priv->eulas); + g_mutex_clear (&backend->priv->eulas_mutex); g_mutex_clear (&backend->priv->thread_hash_mutex); g_hash_table_unref (backend->priv->thread_hash); g_free (backend->priv->desc); @@ -1708,6 +1716,7 @@ pk_backend_init (PkBackend *backend) g_direct_equal, NULL, g_free); + g_mutex_init (&backend->priv->eulas_mutex); g_mutex_init (&backend->priv->thread_hash_mutex); } -- 2.21.0 ++++++ PackageKit-drop-gtk2.patch ++++++ --- /var/tmp/diff_new_pack.7nkLUK/_old 2020-03-06 08:02:04.979480634 +0100 +++ /var/tmp/diff_new_pack.7nkLUK/_new 2020-03-06 08:02:04.983480638 +0100 @@ -1,7 +1,7 @@ -diff -Nur PackageKit-1.1.13-orig/configure.ac PackageKit-1.1.13/configure.ac ---- PackageKit-1.1.13-orig/configure.ac 2020-01-08 08:56:23.000000000 -0500 -+++ PackageKit-1.1.13/configure.ac 2020-01-12 14:49:20.088311964 -0500 -@@ -339,14 +339,10 @@ +diff -Nur orig-PackageKit-1.1.12/configure.ac PackageKit-1.1.12/configure.ac +--- orig-PackageKit-1.1.12/configure.ac 2018-11-24 09:40:55.000000000 +0100 ++++ PackageKit-1.1.12/configure.ac 2019-08-13 02:42:33.673856519 +0200 +@@ -307,14 +307,10 @@ if test x$enable_gtk_module = xyes; then PKG_CHECK_MODULES(PK_GTK_MODULE, gtk+-3.0 >= 3.0.0 pangoft2 fontconfig gio-2.0, build_gtk_module=yes, build_gtk_module=no) @@ -17,7 +17,7 @@ AM_CONDITIONAL(PK_BUILD_GTK_MODULE, test $build_gtk_module = "yes") dnl --------------------------------------------------------------------------- -@@ -569,7 +565,6 @@ +@@ -530,7 +526,6 @@ contrib/Makefile contrib/gstreamer-plugin/Makefile contrib/gtk-module/Makefile @@ -25,9 +25,9 @@ contrib/yum-packagekit/Makefile contrib/command-not-found/Makefile contrib/cron/Makefile -diff -Nur PackageKit-1.1.13-orig/contrib/gtk-module/gtk2/Makefile.am PackageKit-1.1.13/contrib/gtk-module/gtk2/Makefile.am ---- PackageKit-1.1.13-orig/contrib/gtk-module/gtk2/Makefile.am 2019-04-08 08:04:23.000000000 -0400 -+++ PackageKit-1.1.13/contrib/gtk-module/gtk2/Makefile.am 1969-12-31 19:00:00.000000000 -0500 +diff -Nur orig-PackageKit-1.1.12/contrib/gtk-module/gtk2/Makefile.am PackageKit-1.1.12/contrib/gtk-module/gtk2/Makefile.am +--- orig-PackageKit-1.1.12/contrib/gtk-module/gtk2/Makefile.am 2016-01-05 10:48:43.000000000 +0100 ++++ PackageKit-1.1.12/contrib/gtk-module/gtk2/Makefile.am 1970-01-01 01:00:00.000000000 +0100 @@ -1,10 +0,0 @@ -if PK_BUILD_GTK_MODULE -moduledir = $(LIBDIR)/gtk-2.0/modules @@ -39,10 +39,10 @@ -endif - --include $(top_srcdir)/git.mk -diff -Nur PackageKit-1.1.13-orig/contrib/gtk-module/gtk2/Makefile.in PackageKit-1.1.13/contrib/gtk-module/gtk2/Makefile.in ---- PackageKit-1.1.13-orig/contrib/gtk-module/gtk2/Makefile.in 2020-01-08 09:01:28.000000000 -0500 -+++ PackageKit-1.1.13/contrib/gtk-module/gtk2/Makefile.in 1969-12-31 19:00:00.000000000 -0500 -@@ -1,827 +0,0 @@ +diff -Nur orig-PackageKit-1.1.12/contrib/gtk-module/gtk2/Makefile.in PackageKit-1.1.12/contrib/gtk-module/gtk2/Makefile.in +--- orig-PackageKit-1.1.12/contrib/gtk-module/gtk2/Makefile.in 2018-11-28 09:00:23.000000000 +0100 ++++ PackageKit-1.1.12/contrib/gtk-module/gtk2/Makefile.in 1970-01-01 01:00:00.000000000 +0100 +@@ -1,821 +0,0 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. -# @configure_input@ - @@ -270,7 +270,6 @@ -APPSTREAM_LIBS = @APPSTREAM_LIBS@ -APTCC_CFLAGS = @APTCC_CFLAGS@ -APTCC_LIBS = @APTCC_LIBS@ --APTINST_LIBS = @APTINST_LIBS@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ @@ -308,8 +307,6 @@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ --ELOGIND_CFLAGS = @ELOGIND_CFLAGS@ --ELOGIND_LIBS = @ELOGIND_LIBS@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ @@ -419,8 +416,6 @@ -PK_PLUGIN_DIR = @PK_PLUGIN_DIR@ -PK_PLUGIN_LIBS = @PK_PLUGIN_LIBS@ -PK_VERSION = @PK_VERSION@ --PLYMOUTH_0_9_5_CFLAGS = @PLYMOUTH_0_9_5_CFLAGS@ --PLYMOUTH_0_9_5_LIBS = @PLYMOUTH_0_9_5_LIBS@ -POFILES = @POFILES@ -POLDEK_CFLAGS = @POLDEK_CFLAGS@ -POLDEK_LIBS = @POLDEK_LIBS@ @@ -520,7 +515,6 @@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -systemdsystemunitdir = @systemdsystemunitdir@ --systemduserunitdir = @systemduserunitdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ @@ -870,9 +864,9 @@ -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: -diff -Nur PackageKit-1.1.13-orig/contrib/gtk-module/gtk2/pk-gtk-module-gtk2.c PackageKit-1.1.13/contrib/gtk-module/gtk2/pk-gtk-module-gtk2.c ---- PackageKit-1.1.13-orig/contrib/gtk-module/gtk2/pk-gtk-module-gtk2.c 2018-09-21 06:54:30.000000000 -0400 -+++ PackageKit-1.1.13/contrib/gtk-module/gtk2/pk-gtk-module-gtk2.c 1969-12-31 19:00:00.000000000 -0500 +diff -Nur orig-PackageKit-1.1.12/contrib/gtk-module/gtk2/pk-gtk-module-gtk2.c PackageKit-1.1.12/contrib/gtk-module/gtk2/pk-gtk-module-gtk2.c +--- orig-PackageKit-1.1.12/contrib/gtk-module/gtk2/pk-gtk-module-gtk2.c 2016-01-05 10:48:43.000000000 +0100 ++++ PackageKit-1.1.12/contrib/gtk-module/gtk2/pk-gtk-module-gtk2.c 1970-01-01 01:00:00.000000000 +0100 @@ -1,38 +0,0 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- - * @@ -912,9 +906,9 @@ -{ - return NULL; -} -diff -Nur PackageKit-1.1.13-orig/contrib/gtk-module/Makefile.am PackageKit-1.1.13/contrib/gtk-module/Makefile.am ---- PackageKit-1.1.13-orig/contrib/gtk-module/Makefile.am 2019-04-08 08:04:23.000000000 -0400 -+++ PackageKit-1.1.13/contrib/gtk-module/Makefile.am 2020-01-12 14:49:33.786196319 -0500 +diff -Nur orig-PackageKit-1.1.12/contrib/gtk-module/Makefile.am PackageKit-1.1.12/contrib/gtk-module/Makefile.am +--- orig-PackageKit-1.1.12/contrib/gtk-module/Makefile.am 2016-01-05 10:48:43.000000000 +0100 ++++ PackageKit-1.1.12/contrib/gtk-module/Makefile.am 2019-08-13 02:38:03.250607974 +0200 @@ -1,5 +1,3 @@ -SUBDIRS = gtk2 - ++++++ PackageKit-return-on-transactions-going-backwards.patch ++++++ >From d1b76c05ebb4c5643bcf0072f271bcd958812560 Mon Sep 17 00:00:00 2001 From: Jonathan Kang <[email protected]> Date: Fri, 21 Dec 2018 16:17:34 +0800 Subject: [PATCH] =?UTF-8?q?transaction:=20Return=20directly=20when=20its?= =?UTF-8?q?=C2=A0state=20is=20going=20backwards?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We should return directly while failing to set transaction’s state because it’s going backwards. That’s exactly what Pk did previously. Fixes 2807cbf8 --- src/pk-transaction.c | 1 + 1 file changed, 1 insertion(+) Index: PackageKit-1.1.12/src/pk-transaction.c =================================================================== --- PackageKit-1.1.12.orig/src/pk-transaction.c +++ PackageKit-1.1.12/src/pk-transaction.c @@ -760,6 +760,7 @@ pk_transaction_set_state (PkTransaction g_warning ("cannot set %s, as already %s", pk_transaction_state_to_string (state), pk_transaction_state_to_string (priv->state)); + return; } g_debug ("transaction now %s", pk_transaction_state_to_string (state)); ++++++ PackageKit-zypp-dont-set-upgrade-mode-on-updating-specific-packages.patch ++++++ >From 44a2887864b7c0ac54d342126069b6a7ff3c5822 Mon Sep 17 00:00:00 2001 From: Jonathan Kang <[email protected]> Date: Mon, 14 Oct 2019 15:17:34 +0800 Subject: [PATCH] zypp: Don't set upgrade mode in update-packages update-packages does two things: 1. update the whole system. 2. update specific packages. setting upgrade mode to TRUE in update-packages can lead to inability to update specific packages, as the resolver always trys to upgrade the whole system in upgrade mode. Since calling "pkcon update" in Tumbleweed invokes get-updates where upgrade mode is set to TRUE, we don't have to set it in update-packages anymore. Besides, we should reset upgrade mode to FALSE at the end of update-packages to make sure not to block further actions. --- backends/zypp/pk-backend-zypp.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/backends/zypp/pk-backend-zypp.cpp b/backends/zypp/pk-backend-zypp.cpp index 4885df6f5..fbaf5413e 100644 --- a/backends/zypp/pk-backend-zypp.cpp +++ b/backends/zypp/pk-backend-zypp.cpp @@ -3391,6 +3391,8 @@ backend_update_packages_thread (PkBackendJob *job, GVariant *params, gpointer us } zypp_perform_execution (job, zypp, UPDATE, FALSE, transaction_flags); + + zypp->resolver()->setUpgradeMode(FALSE); } /** -- 2.21.0 ++++++ PackageKit-zypp-fix-newest-filter.patch ++++++ >From 1c497c904959978229899ead80e7e94be73a6e15 Mon Sep 17 00:00:00 2001 From: Jonathan Kang <[email protected]> Date: Wed, 19 Jun 2019 16:07:31 +0800 Subject: [PATCH] zypp: Emit installed package for newest filter Previously, zypp backend only emit newest package in backend_resolve_thread(). The newest filter processes installed and available package lists separately, so the installed package should be emitted as well. https://bugzilla.suse.com/show_bug.cgi?id=1137019 --- backends/zypp/pk-backend-zypp.cpp | 32 +++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) Index: PackageKit-1.1.12/backends/zypp/pk-backend-zypp.cpp =================================================================== --- PackageKit-1.1.12.orig/backends/zypp/pk-backend-zypp.cpp +++ PackageKit-1.1.12/backends/zypp/pk-backend-zypp.cpp @@ -2895,6 +2895,7 @@ backend_resolve_thread (PkBackendJob *jo zypp_get_packages_by_name (search[i], ResKind::pattern, v2); v.insert (v.end (), v2.begin (), v2.end ()); + sat::Solvable installed; sat::Solvable newest; vector<sat::Solvable> pkgs; @@ -2906,7 +2907,11 @@ backend_resolve_thread (PkBackendJob *jo if (zypp_filter_solvable (_filters, *it) || zypp_is_no_solvable(*it)) continue; - + + if (it->isSystem ()) { + installed = *it; + } + if (zypp_is_no_solvable(newest)) { newest = *it; } else if (it->edition() > newest.edition() || Arch::compare(it->arch(), newest.arch()) > 0) { @@ -2915,19 +2920,26 @@ backend_resolve_thread (PkBackendJob *jo MIL << "emit " << *it << endl; pkgs.push_back (*it); } - - if (!zypp_is_no_solvable(newest)) { - - /* 'newest' filter support */ - if (pk_bitfield_contain (_filters, PK_FILTER_ENUM_NEWEST)) { - pkgs.clear(); - MIL << "emit just newest " << newest << endl; + + /* The newest filter processes installed and available package + * lists separately. */ + if (pk_bitfield_contain (_filters, PK_FILTER_ENUM_NEWEST)) { + pkgs.clear (); + + if (!zypp_is_no_solvable (installed)) { + MIL << "emit installed " << installed << endl; + pkgs.push_back (installed); + } + if (!zypp_is_no_solvable (newest)) { + MIL << "emit newest " << newest << endl; pkgs.push_back (newest); - } else if (pk_bitfield_contain (_filters, PK_FILTER_ENUM_NOT_NEWEST)) { + } + } else if (pk_bitfield_contain (_filters, PK_FILTER_ENUM_NOT_NEWEST)) { + if (!zypp_is_no_solvable (newest) && newest != installed) { pkgs.erase (find (pkgs.begin (), pkgs.end(), newest)); } } - + zypp_emit_filtered_packages_in_list (job, _filters, pkgs); } } ++++++ PackageKit-zypp-fix-what-provides-newest-filter.patch ++++++ Index: PackageKit-1.1.12/backends/zypp/pk-backend-zypp.cpp =================================================================== --- PackageKit-1.1.12.orig/backends/zypp/pk-backend-zypp.cpp +++ PackageKit-1.1.12/backends/zypp/pk-backend-zypp.cpp @@ -1113,6 +1113,19 @@ zypp_filter_solvable (PkBitfield filters return TRUE; if (i == PK_FILTER_ENUM_NOT_DOWNLOADED && zypp_package_is_cached (item)) return TRUE; + if (i == PK_FILTER_ENUM_NEWEST) { + if (item.isSystem ()) { + return FALSE; + } + else { + ui::Selectable::Ptr sel = ui::Selectable::get (item); + const PoolItem & newest (sel->highestAvailableVersionObj ()); + + if (newest && zypp::Edition::compare (newest.edition (), item.edition ())) + return TRUE; + return FALSE; + } + } // FIXME: add more enums - cf. libzif logic and pk-enum.h // PK_FILTER_ENUM_SUPPORTED, ++++++ PackageKit-zypp-get-files-string-array.patch ++++++ >From 98dd535f594bf43eb5f9ab6d27aa55b75d3ea4e5 Mon Sep 17 00:00:00 2001 From: Jonathan Kang <[email protected]> Date: Fri, 8 Nov 2019 10:55:29 +0800 Subject: [PATCH] zypp: pass an array of strings to pk_backend_job_files() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Previous, a list of file strings were joined a single string with ";" inserted between each of them and the generated long string was passed to pk_backend_job_files(). While pk_backend_job_files() expects an array of strings. Fix that by passing an array of string instread of a long string to pk_backend_job_files(). https://github.com/hughsie/PackageKit/issues/351 --- backends/zypp/pk-backend-zypp.cpp | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/backends/zypp/pk-backend-zypp.cpp b/backends/zypp/pk-backend-zypp.cpp index 572c63e02..ffa8a2425 100644 --- a/backends/zypp/pk-backend-zypp.cpp +++ b/backends/zypp/pk-backend-zypp.cpp @@ -3351,7 +3351,7 @@ backend_get_files_thread (PkBackendJob *job, GVariant *params, gpointer user_dat for (uint i = 0; package_ids[i]; i++) { pk_backend_job_set_status (job, PK_STATUS_ENUM_QUERY); sat::Solvable solvable = zypp_get_package_by_id (package_ids[i]); - + if (zypp_is_no_solvable(solvable)) { zypp_backend_finished_error ( job, PK_ERROR_ENUM_PACKAGE_NOT_FOUND, @@ -3359,15 +3359,18 @@ backend_get_files_thread (PkBackendJob *job, GVariant *params, gpointer user_dat return; } - string temp; + g_auto(GStrv) strv = NULL; + g_autoptr(GPtrArray) pkg_files = NULL; + + pkg_files = g_ptr_array_new (); + if (solvable.isSystem ()){ try { target::rpm::RpmHeader::constPtr rpmHeader = zypp_get_rpmHeader (solvable.name (), solvable.edition ()); list<string> files = rpmHeader->tag_filenames (); for (list<string>::iterator it = files.begin (); it != files.end (); ++it) { - temp.append (*it); - temp.append (";"); + g_ptr_array_add (pkg_files, g_strdup (it->c_str ())); } } catch (const target::rpm::RpmException &ex) { @@ -3376,12 +3379,14 @@ backend_get_files_thread (PkBackendJob *job, GVariant *params, gpointer user_dat return; } } else { - temp = "Only available for installed packages"; + g_ptr_array_add (pkg_files, + g_strdup ("Only available for installed packages")); } - const gchar *to_strv[] = { NULL, NULL }; - to_strv[0] = temp.c_str (); - pk_backend_job_files (job, package_ids[i], (gchar **) to_strv); // file_list + /* Convert to GStrv. */ + g_ptr_array_add (pkg_files, NULL); + strv = g_strdupv ((gchar **) pkg_files->pdata); + pk_backend_job_files (job, package_ids[i], strv); } } -- 2.23.0 ++++++ PackageKit-zypp-get-updates-dup-or-up.patch ++++++ >From fcb9cf74abc56b109d0f71d538f4ac53a996a0bb Mon Sep 17 00:00:00 2001 From: Jonathan Kang <[email protected]> Date: Wed, 25 Sep 2019 14:49:11 +0800 Subject: [PATCH] respect system wide settings when getting updates --- backends/zypp/pk-backend-zypp.cpp | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/backends/zypp/pk-backend-zypp.cpp b/backends/zypp/pk-backend-zypp.cpp index 8b09fb13a..460483f54 100644 --- a/backends/zypp/pk-backend-zypp.cpp +++ b/backends/zypp/pk-backend-zypp.cpp @@ -1192,7 +1192,25 @@ zypp_emit_filtered_packages_in_list (PkBackendJob *job, PkBitfield filters, cons } } +static gboolean +is_tumbleweed (void) +{ + gboolean ret = FALSE; + static const Capability cap( "product-update()", Rel::EQ, "dup" ); + ui::Selectable::Ptr sel (ui::Selectable::get (ResKind::package, "openSUSE-release")); + if (sel) { + if (!sel->installedEmpty ()) { + for_ (it, sel->installedBegin (), sel->installedEnd ()) { + if (it->satSolvable ().provides ().matches (cap)) { + ret = TRUE; + break; + } + } + } + } + return ret; +} /** * Returns a set of all packages the could be updated @@ -1201,13 +1219,21 @@ zypp_emit_filtered_packages_in_list (PkBackendJob *job, PkBitfield filters, cons static void zypp_get_package_updates (string repo, set<PoolItem> &pks) { + ZYpp::Ptr zypp = getZYpp (); + zypp::Resolver_Ptr resolver = zypp->resolver (); ResPool pool = ResPool::instance (); ResObject::Kind kind = ResTraits<Package>::kind; ResPool::byKind_iterator it = pool.byKindBegin (kind); ResPool::byKind_iterator e = pool.byKindEnd (kind); - getZYpp()->resolver()->doUpdate(); + if (is_tumbleweed ()) { + resolver->dupSetAllowVendorChange (ZConfig::instance ().solver_dupAllowVendorChange ()); + resolver->doUpgrade (); + } else { + resolver->doUpdate (); + } + for (; it != e; ++it) if (it->status().isToBeInstalled()) { ui::Selectable::constPtr s = -- 2.21.0 ++++++ PackageKit-zypp-upgrade-system.patch ++++++ >From 3a2bf70f348ea4cea42a3fd258a15440905bd8c3 Mon Sep 17 00:00:00 2001 From: Jonathan Kang <[email protected]> Date: Wed, 6 Nov 2019 15:58:28 +0800 Subject: [PATCH 1/2] zypp: Implement upgrade-system "pkcon upgrade-system" is now the equivalant of "zypper dup" in openSUSE. --- backends/zypp/pk-backend-zypp.cpp | 101 +++++++++++++++++++----------- 1 file changed, 65 insertions(+), 36 deletions(-) Index: PackageKit-1.1.12/backends/zypp/pk-backend-zypp.cpp =================================================================== --- PackageKit-1.1.12.orig/backends/zypp/pk-backend-zypp.cpp +++ PackageKit-1.1.12/backends/zypp/pk-backend-zypp.cpp @@ -100,7 +100,8 @@ using zypp::filesystem::PathInfo; typedef enum { INSTALL, REMOVE, - UPDATE + UPDATE, + UPGRADE_SYSTEM } PerformType; @@ -1113,19 +1114,19 @@ zypp_filter_solvable (PkBitfield filters return TRUE; if (i == PK_FILTER_ENUM_NOT_DOWNLOADED && zypp_package_is_cached (item)) return TRUE; - if (i == PK_FILTER_ENUM_NEWEST) { - if (item.isSystem ()) { - return FALSE; - } - else { - ui::Selectable::Ptr sel = ui::Selectable::get (item); - const PoolItem & newest (sel->highestAvailableVersionObj ()); - - if (newest && zypp::Edition::compare (newest.edition (), item.edition ())) - return TRUE; - return FALSE; - } - } + if (i == PK_FILTER_ENUM_NEWEST) { + if (item.isSystem ()) { + return FALSE; + } + else { + ui::Selectable::Ptr sel = ui::Selectable::get (item); + const PoolItem & newest (sel->highestAvailableVersionObj ()); + + if (newest && zypp::Edition::compare (newest.edition (), item.edition ())) + return TRUE; + return FALSE; + } + } // FIXME: add more enums - cf. libzif logic and pk-enum.h // PK_FILTER_ENUM_SUPPORTED, @@ -1241,6 +1242,10 @@ zypp_get_package_updates (string repo, s if (s->hasInstalledObj()) pks.insert(*it); } + + if (is_tumbleweed ()) { + resolver->setUpgradeMode (FALSE); + } } /** @@ -1486,6 +1491,7 @@ zypp_perform_execution (PkBackendJob *jo _dl_progress = 0; break; case UPDATE: + case UPGRADE_SYSTEM: pk_backend_job_set_status (job, PK_STATUS_ENUM_UPDATE); pk_backend_job_set_percentage(job, 0); _dl_progress = 0; @@ -1509,9 +1515,12 @@ zypp_perform_execution (PkBackendJob *jo case INSTALL: case UPDATE: // for updates we only care for updates - if (it->status ().isToBeUninstalledDueToUpgrade () && !zypp->resolver()->upgradeMode()) + if (it->status ().isToBeUninstalledDueToUpgrade ()) continue; break; + case UPGRADE_SYSTEM: + default: + break; } if (!zypp_backend_pool_item_notify (job, *it, TRUE)) @@ -3338,19 +3347,23 @@ backend_update_packages_thread (PkBacken g_variant_get(params, "(t^a&s)", &transaction_flags, &package_ids); - + ZyppJob zjob(job); ZYpp::Ptr zypp = zjob.get_zypp(); if (zypp == NULL){ return; } + + if (is_tumbleweed ()) { + zypp_backend_finished_error (job, + PK_ERROR_ENUM_NOT_SUPPORTED, + "This product requires to be updated by calling 'pkcon upgrade-system'"); + return; + } + ResPool pool = zypp_build_pool (zypp, TRUE); PkRestartEnum restart = PK_RESTART_ENUM_NONE; - - if ( zypp->resolver()->upgradeMode() ) { - zypp->resolver()->dupSetAllowVendorChange ( ZConfig::instance().solver_dupAllowVendorChange() ); - } PoolStatusSaver saver; @@ -3365,17 +3378,17 @@ backend_update_packages_thread (PkBacken } ui::Selectable::Ptr sel( ui::Selectable::get( solvable )); - + PoolItem item(solvable); // patches are special - they are not installed and can't have update candidates if (sel->kind() != ResKind::patch) { MIL << "sel " << sel->kind() << " " << sel->ident() << endl; - if (sel->installedEmpty() && !zypp->resolver()->upgradeMode()) { + if (sel->installedEmpty()) { zypp_backend_finished_error (job, PK_ERROR_ENUM_DEP_RESOLUTION_FAILED, "Package %s is not installed", package_ids[i]); return; } item = sel->updateCandidateObj(); - if (!item && !zypp->resolver()->upgradeMode()) { + if (!item) { zypp_backend_finished_error(job, PK_ERROR_ENUM_DEP_RESOLUTION_FAILED, "There is no update candidate for %s", sel->installedObj().satSolvable().asString().c_str()); return; } @@ -3392,7 +3405,11 @@ backend_update_packages_thread (PkBacken zypp_perform_execution (job, zypp, UPDATE, FALSE, transaction_flags); - zypp->resolver()->setUpgradeMode(FALSE); + /* Don't reset upgrade mode if we're simulating the changes. Only reset + * it after the real actions has been done. */ + if (!pk_bitfield_contain (transaction_flags, PK_TRANSACTION_FLAG_ENUM_SIMULATE)) { + zypp->resolver()->setUpgradeMode(FALSE); + } } /** @@ -3405,6 +3422,61 @@ pk_backend_update_packages (PkBackend *b } static void +backend_upgrade_system_thread (PkBackendJob *job, + GVariant *params, + gpointer user_data) +{ + PkBitfield transaction_flags = 0; + ZyppJob zjob (job); + set<PoolItem> candidates; + + g_variant_get (params, "(t&su)", + &transaction_flags, + NULL, + NULL); + + ZYpp::Ptr zypp = zjob.get_zypp (); + if (zypp == NULL) { + return; + } + + /* refresh the repos before checking for updates. */ + if (!zypp_refresh_cache (job, zypp, FALSE)) { + return; + } + zypp_build_pool (zypp, TRUE); + zypp_get_updates (job, zypp, candidates); + if (candidates.empty ()) { + pk_backend_job_error_code (job, PK_ERROR_ENUM_NO_DISTRO_UPGRADE_DATA, + "No Distribution Upgrade Available."); + + return; + } + + zypp->resolver ()->dupSetAllowVendorChange (ZConfig::instance ().solver_dupAllowVendorChange ()); + zypp->resolver ()->doUpgrade (); + + PoolStatusSaver saver; + + zypp_perform_execution (job, zypp, UPGRADE_SYSTEM, FALSE, transaction_flags); + + zypp->resolver ()->setUpgradeMode (FALSE); +} + +/** + * pk_backend_upgrade_system + */ +void +pk_backend_upgrade_system (PkBackend *backend, + PkBackendJob *job, + PkBitfield transaction_flags, + const gchar *distro_id, + PkUpgradeKindEnum upgrade_kind) +{ + pk_backend_job_thread_create (job, backend_upgrade_system_thread, NULL, NULL); +} + +static void backend_repo_set_data_thread (PkBackendJob *job, GVariant *params, gpointer user_data) { MIL << endl; ++++++ zypp-perform-actions-disallowed-by-update-in-upgrade-mode.patch ++++++ >From 8db2a405634b0a98c78a8a1e0ebf339643a645b2 Mon Sep 17 00:00:00 2001 From: Stasiek Michalski <[email protected]> Date: Thu, 14 Mar 2019 19:48:13 +0100 Subject: [PATCH] [zypp] Perform actions disallowed by update in upgrade mode --- backends/zypp/pk-backend-zypp.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) Index: PackageKit-1.1.12/backends/zypp/pk-backend-zypp.cpp =================================================================== --- PackageKit-1.1.12.orig/backends/zypp/pk-backend-zypp.cpp +++ PackageKit-1.1.12/backends/zypp/pk-backend-zypp.cpp @@ -1509,7 +1509,7 @@ zypp_perform_execution (PkBackendJob *jo case INSTALL: case UPDATE: // for updates we only care for updates - if (it->status ().isToBeUninstalledDueToUpgrade ()) + if (it->status ().isToBeUninstalledDueToUpgrade () && !zypp->resolver()->upgradeMode()) continue; break; } @@ -3347,6 +3347,10 @@ backend_update_packages_thread (PkBacken } ResPool pool = zypp_build_pool (zypp, TRUE); PkRestartEnum restart = PK_RESTART_ENUM_NONE; + + if ( zypp->resolver()->upgradeMode() ) { + zypp->resolver()->dupSetAllowVendorChange ( ZConfig::instance().solver_dupAllowVendorChange() ); + } PoolStatusSaver saver; @@ -3366,12 +3370,12 @@ backend_update_packages_thread (PkBacken // patches are special - they are not installed and can't have update candidates if (sel->kind() != ResKind::patch) { MIL << "sel " << sel->kind() << " " << sel->ident() << endl; - if (sel->installedEmpty()) { + if (sel->installedEmpty() && !zypp->resolver()->upgradeMode()) { zypp_backend_finished_error (job, PK_ERROR_ENUM_DEP_RESOLUTION_FAILED, "Package %s is not installed", package_ids[i]); return; } item = sel->updateCandidateObj(); - if (!item) { + if (!item && !zypp->resolver()->upgradeMode()) { zypp_backend_finished_error(job, PK_ERROR_ENUM_DEP_RESOLUTION_FAILED, "There is no update candidate for %s", sel->installedObj().satSolvable().asString().c_str()); return; }
