diff options
author | Jonathan Kang <jonathankang@gnome.org> | 2019-11-20 15:13:04 +0800 |
---|---|---|
committer | Jonathan Kang <jonathankang@gnome.org> | 2020-03-03 16:53:58 +0800 |
commit | e1a6975e45204f6e5069cf44b1f62030aa5094a8 (patch) | |
tree | e056cf3e32cfd2cfd19e7e0dea210d7785f3695c /backends | |
parent | ebdfda103ee3334c4a9b3bc1653009a03b0a206f (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.cpp | 40 |
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); - } } /** |