summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/libs/installer/packagemanagercore.cpp21
-rw-r--r--src/libs/installer/packagemanagercore.h2
-rw-r--r--src/libs/installer/packagemanagercore_p.cpp13
3 files changed, 20 insertions, 16 deletions
diff --git a/src/libs/installer/packagemanagercore.cpp b/src/libs/installer/packagemanagercore.cpp
index d6a31286c..4d6358803 100644
--- a/src/libs/installer/packagemanagercore.cpp
+++ b/src/libs/installer/packagemanagercore.cpp
@@ -1186,6 +1186,18 @@ void PackageManagerCore::appendRootComponent(Component *component)
}
/*!
+ Returns a list of root components and all of their descendant components if run in installer or package manager mode.
+ Might return an empty list in case the engine has only been run in updater mode or no components have been fetched.
+*/
+QList<Component*> PackageManagerCore::rootAndChildComponents() const
+{
+ QList<Component*> result = d->m_rootComponents;
+ foreach (QInstaller::Component *component, d->m_rootComponents)
+ result += component->childComponents(Component::Descendants);
+ return result;
+}
+
+/*!
\qmlmethod int QInstaller::updaterComponentCount()
Returns the number of components in the list for updater mode. Might return 0 in case the engine has only
@@ -1234,10 +1246,7 @@ QList<Component*> PackageManagerCore::availableComponents() const
if (isUpdater())
return d->m_updaterComponents + d->m_updaterComponentsDeps + d->m_updaterDependencyReplacements;
- QList<Component*> result = d->m_rootComponents;
- foreach (QInstaller::Component *component, d->m_rootComponents)
- result += component->childComponents(Component::Descendants);
- return result + d->m_rootDependencyReplacements;
+ return rootAndChildComponents() + d->m_rootDependencyReplacements;
}
/*!
@@ -1283,9 +1292,7 @@ bool PackageManagerCore::calculateComponentsToInstall() const
}
} else if (!isUpdater()) {
// relevant means all components which are not replaced
- QList<Component*> relevantComponents = rootComponents();
- foreach (QInstaller::Component *component, rootComponents())
- relevantComponents += component->childComponents(Component::Descendants);
+ const QList<Component*> relevantComponents = rootAndChildComponents();
foreach (Component *component, relevantComponents) {
// ask for all components which will be installed to get all dependencies
// even dependencies which are changed without an increased version
diff --git a/src/libs/installer/packagemanagercore.h b/src/libs/installer/packagemanagercore.h
index d8bcc86a6..7de374b47 100644
--- a/src/libs/installer/packagemanagercore.h
+++ b/src/libs/installer/packagemanagercore.h
@@ -192,6 +192,8 @@ public:
QList<Component*> rootComponents() const;
void appendRootComponent(Component *components);
+ QList<Component*> rootAndChildComponents() const;
+
Q_INVOKABLE int updaterComponentCount() const;
Component *updaterComponent(int i) const;
QList<Component*> updaterComponents() const;
diff --git a/src/libs/installer/packagemanagercore_p.cpp b/src/libs/installer/packagemanagercore_p.cpp
index 9fc81513c..011a79500 100644
--- a/src/libs/installer/packagemanagercore_p.cpp
+++ b/src/libs/installer/packagemanagercore_p.cpp
@@ -493,15 +493,6 @@ bool PackageManagerCorePrivate::appendComponentsToInstall(const QList<Component
return true;
}
- QList<Component*> relevantComponentForAutoDependOn;
- if (isUpdater())
- relevantComponentForAutoDependOn = m_updaterComponents + m_updaterComponentsDeps;
- else {
- relevantComponentForAutoDependOn = m_rootComponents;
- foreach (QInstaller::Component *component, m_rootComponents)
- relevantComponentForAutoDependOn += component->childComponents(Component::Descendants);
- }
-
QList<Component*> notAppendedComponents; // for example components with unresolved dependencies
foreach (Component *component, components){
if (m_toInstallComponentIds.contains(component->name())) {
@@ -525,6 +516,10 @@ bool PackageManagerCorePrivate::appendComponentsToInstall(const QList<Component
return false;
}
+ const QList<Component*> relevantComponentForAutoDependOn = isUpdater()
+ ? m_updaterComponents + m_updaterComponentsDeps
+ : m_core->rootAndChildComponents();
+
QList<Component *> foundAutoDependOnList;
// All regular dependencies are resolved. Now we are looking for auto depend on components.
foreach (Component *component, relevantComponentForAutoDependOn) {