diff options
author | Katja Marttila <katja.marttila@qt.io> | 2022-11-29 14:19:21 +0200 |
---|---|---|
committer | Katja Marttila <katja.marttila@qt.io> | 2022-12-01 10:19:01 +0200 |
commit | 853678f811414e7bef5bbffa5a6e7ffcb1e2fa8f (patch) | |
tree | 3200cae0faf6cfaf74e3921ae120edd00f683124 /src/libs/installer/packagemanagercore_p.cpp | |
parent | 7ccada5c9cfaa9916cd73dc9d217670fc9031677 (diff) |
Fix replaced removal on update
If component is replaced with a component which is installed as
autodependency to other component, the replaced component was not
uninstalled on update.
Task-number: QTIFW-2887
Change-Id: Ibad04df765191f0e399c6f6020cdf081dba5d803
Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
Diffstat (limited to 'src/libs/installer/packagemanagercore_p.cpp')
-rw-r--r-- | src/libs/installer/packagemanagercore_p.cpp | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/src/libs/installer/packagemanagercore_p.cpp b/src/libs/installer/packagemanagercore_p.cpp index 129c35d46..d9a35bcb1 100644 --- a/src/libs/installer/packagemanagercore_p.cpp +++ b/src/libs/installer/packagemanagercore_p.cpp @@ -1931,7 +1931,7 @@ bool PackageManagerCorePrivate::runPackageUpdater() // There is a replacement, but the replacement is not scheduled for update, keep it as well. if (m_componentsToReplaceUpdaterMode.contains(name) - && !m_componentsToReplaceUpdaterMode.value(name).first->updateRequested()) { + && !m_installerCalculator->orderedComponentsToInstall().contains(m_componentsToReplaceUpdaterMode.value(name).first)) { nonRevertedOperations.append(operation); continue; } @@ -3088,12 +3088,10 @@ void PackageManagerCorePrivate::calculateUninstallComponents() foreach (Component* component, m_core->components(PackageManagerCore::ComponentType::Replacements)) { // Uninstall the component if replacement is selected for install or update QPair<Component*, Component*> comp = componentsToReplace().value(component->name()); - if (comp.first) { - if (comp.first->isSelectedForInstallation() || comp.first->updateRequested()) { - uninstallerCalculator()->insertUninstallReason(component, - UninstallerCalculator::Replaced, comp.first->name()); - selectedComponentsToUninstall.append(comp.second); - } + if (comp.first && m_installerCalculator->orderedComponentsToInstall().contains(comp.first)) { + uninstallerCalculator()->insertUninstallReason(component, + UninstallerCalculator::Replaced, comp.first->name()); + selectedComponentsToUninstall.append(comp.second); } } foreach (Component *component, m_core->components(PackageManagerCore::ComponentType::AllNoReplacements)) { |