From 9f94110b7de18870d690d8ad102d26deceb17e0e Mon Sep 17 00:00:00 2001 From: Katja Marttila Date: Mon, 28 Sep 2020 14:28:33 +0300 Subject: 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 --- src/libs/installer/component.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'src/libs') 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 &componentsToInstall) const // will be installed if (packageManagerCore()->foundEssentialUpdate()) { const QSet 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 components = componentsToInstall; const QStringList installedPackages = d->m_core->localInstalledPackages().keys(); foreach (const QString &name, installedPackages) -- cgit v1.2.3