]> git.ipfire.org Git - thirdparty/openembedded/openembedded-core-contrib.git/commitdiff
oeqa/runtime/context: remove duplicate sys.path entries when looking for modules
authorRoss Burton <ross@burtonini.com>
Fri, 25 Mar 2022 12:29:10 +0000 (12:29 +0000)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Sat, 26 Mar 2022 09:33:28 +0000 (09:33 +0000)
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 <ross.burton@arm.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
meta/lib/oeqa/runtime/context.py

index d707ab263a89bfabf83ea80a60d4ed07e9f0f239..8092dd0baeec93c6d9fd6ac1042abe3b55d9d49f 100644 (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)