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;
                        }

Reply via email to