aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2019-02-16 12:57:02 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2019-02-16 14:44:54 +0000
commit8756e4ade67c16e35269ea0659e10b9ebaa6117f (patch)
tree16435133f2b8c23b642d56dad60b53c82ba61500
parent4fa51afb56b090cf1f746842acd602c9536715d5 (diff)
downloadbitbake-contrib-8756e4ade67c16e35269ea0659e10b9ebaa6117f.tar.gz
runqueue: Fix dependency loop analysis 'hangs'
Currently the mechanism for breaking out of the dependnecy loop analysis code is broken and doesn't work leading to bitbake appearing to hang. Add in a custom exception for this purpose and fix the code to exit as intended, fixing the hang and making the dependency loop code usable again. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--lib/bb/runqueue.py12
1 files changed, 9 insertions, 3 deletions
diff --git a/lib/bb/runqueue.py b/lib/bb/runqueue.py
index 80ae8a2a4..71f178de4 100644
--- a/lib/bb/runqueue.py
+++ b/lib/bb/runqueue.py
@@ -410,6 +410,9 @@ class RunQueueData:
explored_deps = {}
msgs = []
+ class TooManyLoops(Exception):
+ pass
+
def chain_reorder(chain):
"""
Reorder a dependency chain so the lowest task id is first
@@ -462,7 +465,7 @@ class RunQueueData:
msgs.append("\n")
if len(valid_chains) > 10:
msgs.append("Aborted dependency loops search after 10 matches.\n")
- return msgs
+ raise TooManyLoops
continue
scan = False
if revdep not in explored_deps:
@@ -481,8 +484,11 @@ class RunQueueData:
explored_deps[tid] = total_deps
- for task in tasks:
- find_chains(task, [])
+ try:
+ for task in tasks:
+ find_chains(task, [])
+ except TooManyLoops:
+ pass
return msgs