Hello community,

here is the log from the commit of package PackageKit for openSUSE:Factory 
checked in at 2019-11-29 15:56:22
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/PackageKit (Old)
 and      /work/SRC/openSUSE:Factory/.PackageKit.new.26869 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "PackageKit"

Fri Nov 29 15:56:22 2019 rev:195 rq:750926 version:1.1.12

Changes:
--------
--- /work/SRC/openSUSE:Factory/PackageKit/PackageKit.changes    2019-11-06 
15:46:26.134854406 +0100
+++ /work/SRC/openSUSE:Factory/.PackageKit.new.26869/PackageKit.changes 
2019-11-29 15:57:05.856965467 +0100
@@ -1,0 +2,17 @@
+Thu Nov 21 01:09:07 UTC 2019 - Jonathan Kang <songchuan.k...@suse.com>
+
+- Add PackageKit-zypp-update-packages-in-all-openSUSE.patch: Handle
+  Tumbleweed upgrade in update-packages as well so that it doesn't
+  break other components.
+
+-------------------------------------------------------------------
+Wed Nov 13 02:00:32 UTC 2019 - Jonathan Kang <sck...@suse.com>
+
+- Add PackageKit-zypp-upgrade-system.patch: zypp: implement
+  upgrade-system method (bsc#1155638, bsc#1154973,
+  gh#hughsie/PackageKit/commit/d060dd24).
+- Add PackageKit-zypp-get-files-string-array.patch: zypp: pass an
+  array of strings to pk_backend_job_files()
+  (gh#hughsie/PackageKit#351).
+
+------------------------------------------------------------------

New:
----
  PackageKit-zypp-get-files-string-array.patch
  PackageKit-zypp-update-packages-in-all-openSUSE.patch
  PackageKit-zypp-upgrade-system.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ PackageKit.spec ++++++
--- /var/tmp/diff_new_pack.ZQBb3O/_old  2019-11-29 15:57:06.712964976 +0100
+++ /var/tmp/diff_new_pack.ZQBb3O/_new  2019-11-29 15:57:06.716964973 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package PackageKit
 #
-# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -12,7 +12,7 @@
 # license that conforms to the Open Source Definition (Version 1.9)
 # published by the Open Source Initiative.
 
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
 #
 
 
@@ -60,6 +60,12 @@
 # PATCH-FIX-UPSTREAM 
PackageKit-zypp-dont-set-upgrade-mode-on-updating-specific-packages.patch 
gh#hughsie/PackageKit#345 sck...@suse.com -- 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 sck...@suse.com -- 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 sck...@suse.com -- 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 
sck...@suse.com -- Handle Tumbleweed upgrade in update-packages as well so that 
it doesn't break other components.
+Patch13:        PackageKit-zypp-update-packages-in-all-openSUSE.patch
 
 BuildRequires:  autoconf-archive
 BuildRequires:  fdupes


++++++ PackageKit-zypp-get-files-string-array.patch ++++++
>From 98dd535f594bf43eb5f9ab6d27aa55b75d3ea4e5 Mon Sep 17 00:00:00 2001
From: Jonathan Kang <jonathank...@gnome.org>
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-update-packages-in-all-openSUSE.patch ++++++
>From 91c8ffd7cdfb80f48c255e097675db34cc671dc9 Mon Sep 17 00:00:00 2001
From: Jonathan Kang <jonathank...@gnome.org>
Date: Wed, 20 Nov 2019 15:13:04 +0800
Subject: [PATCH] zypp: Merge updating function into update-packages

No matter whether you are using Tumbleweed or Leap, update-packages is
the place where all the action happens.
---
 backends/zypp/pk-backend-zypp.cpp | 40 ++++++++++++++++++++++++-------
 1 file changed, 31 insertions(+), 9 deletions(-)

diff --git a/backends/zypp/pk-backend-zypp.cpp 
b/backends/zypp/pk-backend-zypp.cpp
index 861c93ab0..2e582a0e6 100644
--- a/backends/zypp/pk-backend-zypp.cpp
+++ b/backends/zypp/pk-backend-zypp.cpp
@@ -3414,6 +3414,36 @@ pk_backend_get_packages (PkBackend *backend, 
PkBackendJob *job, PkBitfield filte
        pk_backend_job_thread_create (job, backend_get_packages_thread, NULL, 
NULL);
 }
 
+static void
+upgrade_system (PkBackendJob *job,
+               ZYpp::Ptr zypp,
+               PkBitfield transaction_flags)
+{
+       set<PoolItem> candidates;
+
+       /* 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);
+}
+
 static void
 backend_update_packages_thread (PkBackendJob *job, GVariant *params, gpointer 
user_data)
 {
@@ -3432,9 +3462,7 @@ backend_update_packages_thread (PkBackendJob *job, 
GVariant *params, gpointer us
        }
 
        if (is_tumbleweed ()) {
-               zypp_backend_finished_error (job,
-                                            PK_ERROR_ENUM_NOT_SUPPORTED,
-                                            "This product requires to be 
updated by calling 'pkcon upgrade-system'");
+               upgrade_system (job, zypp, transaction_flags);
                return;
        }
 
@@ -3480,12 +3508,6 @@ backend_update_packages_thread (PkBackendJob *job, 
GVariant *params, gpointer us
        }
 
        zypp_perform_execution (job, zypp, UPDATE, FALSE, transaction_flags);
-
-       /* 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);
-       }
 }
 
 /**
-- 
2.24.0

++++++ PackageKit-zypp-upgrade-system.patch ++++++
>From 3a2bf70f348ea4cea42a3fd258a15440905bd8c3 Mon Sep 17 00:00:00 2001
From: Jonathan Kang <jonathank...@gnome.org>
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;


Reply via email to