diff options
author | Katja Marttila <katja.marttila@qt.io> | 2020-09-28 14:28:33 +0300 |
---|---|---|
committer | Katja Marttila <katja.marttila@qt.io> | 2020-10-09 09:04:48 +0300 |
commit | 9f94110b7de18870d690d8ad102d26deceb17e0e (patch) | |
tree | cc37f72d935c6fa500927b8c1764c46fe01ea61f /src/libs/installer/component.cpp | |
parent | 2ee0e4847d0a6fe9b2fe14dca41f3b1e6123a85e (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/libs/installer/component.cpp')
-rw-r--r-- | src/libs/installer/component.cpp | 9 |
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) |