summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorKatja Marttila <katja.marttila@qt.io>2020-09-28 14:28:33 +0300
committerKatja Marttila <katja.marttila@qt.io>2020-10-09 09:04:48 +0300
commit9f94110b7de18870d690d8ad102d26deceb17e0e (patch)
treecc37f72d935c6fa500927b8c1764c46fe01ea61f /src
parent2ee0e4847d0a6fe9b2fe14dca41f3b1e6123a85e (diff)
Fix essential update
When updating essential, no other components should be installed nor updated unless there is autodepend on the essential component. Task-number: QTIFW-1970 Change-Id: If9edd6515e3e5ec51611ac07ac52b13f05983b9d Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
Diffstat (limited to 'src')
-rw-r--r--src/libs/installer/component.cpp9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/libs/installer/component.cpp b/src/libs/installer/component.cpp
index 061c4e110..16b417b02 100644
--- a/src/libs/installer/component.cpp
+++ b/src/libs/installer/component.cpp
@@ -1295,12 +1295,15 @@ bool Component::isAutoDependOn(const QSet<QString> &componentsToInstall) const
// will be installed
if (packageManagerCore()->foundEssentialUpdate()) {
const QSet<QString> autoDependOnSet = autoDependOnList.toSet();
- if (autoDependOnSet.intersects(componentsToInstall)) {
- return true;
+ if (componentsToInstall.contains(autoDependOnSet)) {
+ foreach (const QString &autoDep, autoDependOnSet) {
+ Component *component = packageManagerCore()->componentByName(autoDep);
+ if (component->value(scEssential, scFalse).toLower() == scTrue)
+ return true;
+ }
}
return false;
}
-
QSet<QString> components = componentsToInstall;
const QStringList installedPackages = d->m_core->localInstalledPackages().keys();
foreach (const QString &name, installedPackages)