From: Ross Burton Date: Fri, 25 Mar 2022 12:29:10 +0000 (+0000) Subject: oeqa/runtime/context: remove duplicate sys.path entries when looking for modules X-Git-Tag: yocto-4.0~162 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e478381ac1cccc5f882198fd11c8757db7e3741a;p=thirdparty%2Fopenembedded%2Fopenembedded-core-contrib.git 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. Signed-off-by: Ross Burton Signed-off-by: Alexandre Belloni --- diff --git a/meta/lib/oeqa/runtime/context.py b/meta/lib/oeqa/runtime/context.py index d707ab263a8..8092dd0baee 100644 --- a/meta/lib/oeqa/runtime/context.py +++ b/meta/lib/oeqa/runtime/context.py @@ -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)