oeqa/runtime/context: remove duplicate sys.path entries when looking for modules

sys.path can contain duplicate entries for each layer, which means that
the search in add_controller_list() will find the same name twice and
abort.

As duplicate directories should be harmless, remove any duplicates before
iterating through the entries.

(From OE-Core rev: e478381ac1cccc5f882198fd11c8757db7e3741a)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Ross Burton
2022-03-25 12:29:10 +00:00
committed by Richard Purdie
parent 02b01be41f
commit 596fcd883f

View File

@@ -153,7 +153,11 @@ class OERuntimeTestContextExecutor(OETestContextExecutor):
else:
raise RuntimeError("Duplicate controller module found for %s. Layers should create unique controller module names" % module)
for p in sys.path:
# sys.path can contain duplicate paths, but because of the login in
# add_controller_list this doesn't work and causes testimage to abort.
# Remove duplicates using an intermediate dictionary to ensure this
# doesn't happen.
for p in list(dict.fromkeys(sys.path)):
controllerpath = os.path.join(p, 'oeqa', 'controllers')
if os.path.exists(controllerpath):
add_controller_list(controllerpath)