summaryrefslogtreecommitdiff
path: root/backends
diff options
context:
space:
mode:
authorJonathan Kang <jonathankang@gnome.org>2019-11-20 15:13:04 +0800
committerJonathan Kang <jonathankang@gnome.org>2020-03-03 16:53:58 +0800
commite1a6975e45204f6e5069cf44b1f62030aa5094a8 (patch)
treee056cf3e32cfd2cfd19e7e0dea210d7785f3695c /backends
parentebdfda103ee3334c4a9b3bc1653009a03b0a206f (diff)
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.
Diffstat (limited to 'backends')
-rw-r--r--backends/zypp/pk-backend-zypp.cpp40
1 files changed, 31 insertions, 9 deletions
diff --git a/backends/zypp/pk-backend-zypp.cpp b/backends/zypp/pk-backend-zypp.cpp
index cdcfc181d..91347191d 100644
--- a/backends/zypp/pk-backend-zypp.cpp
+++ b/backends/zypp/pk-backend-zypp.cpp
@@ -3416,6 +3416,36 @@ pk_backend_get_packages (PkBackend *backend, PkBackendJob *job, PkBitfield filte
}
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)
{
MIL << endl;
@@ -3433,9 +3463,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;
}
@@ -3481,12 +3509,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);
- }
}
/**