From 8756e4ade67c16e35269ea0659e10b9ebaa6117f Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Sat, 16 Feb 2019 12:57:02 +0000 Subject: 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 --- lib/bb/runqueue.py | 12 +++++++++--- 1 file 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 -- cgit 1.2.3-korg