summaryrefslogtreecommitdiffstats
path: root/src/libs/installer
diff options
context:
space:
mode:
authorjkobus <jaroslaw.kobus@digia.com>2014-09-11 12:24:43 +0200
committerJarek Kobus <jaroslaw.kobus@digia.com>2014-09-25 10:00:12 +0200
commit71e524a64da7480d719cd2f09387da9a0eb3e179 (patch)
tree709d0020e328f34a9059360dfffc7fe5688e671b /src/libs/installer
parentf6a3c926d1c6980706c5cf0e5387201018beb827 (diff)
Add rootAndChildComponents() method.
Change-Id: I4f7dd4777aafffabcf3e8a6b081478f32b33da97 Reviewed-by: Kai Koehne <kai.koehne@digia.com>
Diffstat (limited to 'src/libs/installer')
-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) {