diff options
author | kh1 <karsten.heimrich@digia.com> | 2014-06-17 11:54:58 +0200 |
---|---|---|
committer | Kai Koehne <kai.koehne@digia.com> | 2014-06-18 09:39:52 +0200 |
commit | b707ec04c971c5972967d22f2bc95f9b3fbfb7da (patch) | |
tree | 89898bd626ef8523c8871fb47b48402c04ea21ea | |
parent | da8af00748f6d055230282c4dea846dfc74195cd (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.cpp | 7 |
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; |