summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/libs/installer/packagemanagercore_p.cpp2
-rw-r--r--src/libs/installer/uninstallercalculator.cpp17
-rw-r--r--src/libs/installer/uninstallercalculator.h6
-rw-r--r--tests/auto/installer/solver/tst_solver.cpp2
4 files changed, 13 insertions, 14 deletions
diff --git a/src/libs/installer/packagemanagercore_p.cpp b/src/libs/installer/packagemanagercore_p.cpp
index 38909b4ea..18736e587 100644
--- a/src/libs/installer/packagemanagercore_p.cpp
+++ b/src/libs/installer/packagemanagercore_p.cpp
@@ -599,7 +599,7 @@ UninstallerCalculator *PackageManagerCorePrivate::uninstallerCalculator() const
}
}
- pmcp->m_uninstallerCalculator = new UninstallerCalculator(installedComponents);
+ pmcp->m_uninstallerCalculator = new UninstallerCalculator(installedComponents, m_core);
}
return m_uninstallerCalculator;
}
diff --git a/src/libs/installer/uninstallercalculator.cpp b/src/libs/installer/uninstallercalculator.cpp
index 10b44d80a..fc5620936 100644
--- a/src/libs/installer/uninstallercalculator.cpp
+++ b/src/libs/installer/uninstallercalculator.cpp
@@ -1,6 +1,6 @@
/**************************************************************************
**
-** Copyright (C) 2017 The Qt Company Ltd.
+** Copyright (C) 2022 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the Qt Installer Framework.
@@ -42,8 +42,9 @@ namespace QInstaller {
\internal
*/
-UninstallerCalculator::UninstallerCalculator(const QList<Component *> &installedComponents)
+UninstallerCalculator::UninstallerCalculator(const QList<Component *> &installedComponents, PackageManagerCore *core)
: m_installedComponents(installedComponents)
+ , m_core(core)
{
}
@@ -60,9 +61,8 @@ void UninstallerCalculator::appendComponentToUninstall(Component *component)
if (!component->isInstalled())
return;
- PackageManagerCore *core = component->packageManagerCore();
// remove all already resolved dependees
- const QList<Component *> dependeesList = core->dependees(component);
+ const QList<Component *> dependeesList = m_core->dependees(component);
QSet<Component *> dependees = QSet<Component *>(dependeesList.begin(),
dependeesList.end()).subtract(m_componentsToUninstall);
@@ -134,17 +134,14 @@ void UninstallerCalculator::continueAppendComponentsToUninstall()
{
QList<Component*> unneededVirtualList;
// Check for virtual components without dependees
- foreach (Component *component, m_installedComponents) {
+ for (Component *component : qAsConst(m_installedComponents)) {
if (component->isInstalled() && component->isVirtual() && !m_componentsToUninstall.contains(component)) {
// Components with auto dependencies were handled in the previous step
- if (!component->autoDependencies().isEmpty())
- continue;
- if (component->forcedInstallation())
+ if (!component->autoDependencies().isEmpty() || component->forcedInstallation())
continue;
bool required = false;
- PackageManagerCore *core = component->packageManagerCore();
- foreach (Component *dependee, core->dependees(component)) {
+ for (Component *dependee : m_core->dependees(component)) {
if (dependee->isInstalled() && !m_componentsToUninstall.contains(dependee)) {
required = true;
break;
diff --git a/src/libs/installer/uninstallercalculator.h b/src/libs/installer/uninstallercalculator.h
index a684c92cc..4d1f8816a 100644
--- a/src/libs/installer/uninstallercalculator.h
+++ b/src/libs/installer/uninstallercalculator.h
@@ -1,6 +1,6 @@
/**************************************************************************
**
-** Copyright (C) 2017 The Qt Company Ltd.
+** Copyright (C) 2022 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the Qt Installer Framework.
@@ -38,11 +38,12 @@
namespace QInstaller {
class Component;
+class PackageManagerCore;
class INSTALLER_EXPORT UninstallerCalculator
{
public:
- UninstallerCalculator(const QList<Component *> &installedComponents);
+ UninstallerCalculator(const QList<Component *> &installedComponents, PackageManagerCore *core);
QSet<Component*> componentsToUninstall() const;
@@ -55,6 +56,7 @@ private:
QList<Component *> m_installedComponents;
QSet<Component *> m_componentsToUninstall;
+ PackageManagerCore *m_core;
};
}
diff --git a/tests/auto/installer/solver/tst_solver.cpp b/tests/auto/installer/solver/tst_solver.cpp
index d1c3aaa14..2f4e17855 100644
--- a/tests/auto/installer/solver/tst_solver.cpp
+++ b/tests/auto/installer/solver/tst_solver.cpp
@@ -290,7 +290,7 @@ private slots:
QFETCH(QList<Component *> , installedComponents);
QFETCH(QSet<Component *> , expectedResult);
- UninstallerCalculator calc(installedComponents);
+ UninstallerCalculator calc(installedComponents, core);
calc.appendComponentsToUninstall(selectedToUninstall);
QSet<Component *> result = calc.componentsToUninstall();