From 83ba7dbfb42d9abd319d8c6ed4f0357973b808dc Mon Sep 17 00:00:00 2001 From: kh1 Date: Tue, 17 Jun 2014 11:54:58 +0200 Subject: 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. This is a backport of commit b707ec04c971 to 1.6. Change-Id: I034007c2271b565d0d792d9a6cfc7f663c897428 Reviewed-by: Karsten Heimrich --- src/libs/installer/packagemanagercore_p.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/libs/installer/packagemanagercore_p.cpp b/src/libs/installer/packagemanagercore_p.cpp index c73a7fc82..a360997c2 100644 --- a/src/libs/installer/packagemanagercore_p.cpp +++ b/src/libs/installer/packagemanagercore_p.cpp @@ -2442,7 +2442,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; -- cgit v1.2.3