summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkh1 <karsten.heimrich@digia.com>2014-06-17 11:54:58 +0200
committerKai Koehne <kai.koehne@digia.com>2014-06-18 09:39:52 +0200
commitb707ec04c971c5972967d22f2bc95f9b3fbfb7da (patch)
tree89898bd626ef8523c8871fb47b48402c04ea21ea
parentda8af00748f6d055230282c4dea846dfc74195cd (diff)
Make cycles in component dependencies fatal
Warn the user when sorting operations fails due to cyclic dependencies. Previously we would just continue, saving an incomplete list of operations. Change-Id: I0d80ad142e5d6936bbfab69835ff539a893cb180 Reviewed-by: Karsten Heimrich <karsten.heimrich@digia.com> Reviewed-by: Jarek Kobus <jaroslaw.kobus@digia.com>
-rw-r--r--src/libs/installer/packagemanagercore_p.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/libs/installer/packagemanagercore_p.cpp b/src/libs/installer/packagemanagercore_p.cpp
index d5fad7637..a3dd565df 100644
--- a/src/libs/installer/packagemanagercore_p.cpp
+++ b/src/libs/installer/packagemanagercore_p.cpp
@@ -2416,7 +2416,12 @@ OperationList PackageManagerCorePrivate::sortOperationsBasedOnComponentDependenc
componentGraph.addEdges(componentNode->name(), dependencies);
}
- foreach (const QString &componentName, componentGraph.sort())
+ const QStringList resolvedComponents = componentGraph.sort();
+ if (componentGraph.hasCycle()) {
+ throw Error(tr("Dependency cycle between components detected: '%1' and '%2'.")
+ .arg(componentGraph.cycle().first, componentGraph.cycle().second));
+ }
+ foreach (const QString &componentName, resolvedComponents)
sortedOperations.append(componentOperationHash.value(componentName));
return sortedOperations;