bitbake: 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.

(Bitbake rev: 8756e4ade67c16e35269ea0659e10b9ebaa6117f)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Richard Purdie 2019-02-16 12:57:02 +00:00
parent 30c21f4a6f
commit 8dac3ce424

View File

@ -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