Преглед на файлове

base: Improve module import error message

Turn:

ERROR: Unable to parse Var <OE_IMPORTED[:=]>
Traceback (most recent call last):
  File "Var <OE_IMPORTED[:=]>", line 1, in <module>
  File "/media/build1/poky/meta/classes/base.bbclass", line 35, in oe_import(d=<bb.data_smart.DataSmart object at 0x7f1d941ad208>):
         for toimport in oe.data.typed_value("OE_IMPORTS", d):
    >        imported = __import__(toimport)
             inject(toimport.split(".", 1)[0], imported)
  File "/media/build1/poky/meta/lib/oe/sstatesig.py", line 267, in <module>:

    >class SignatureGeneratorOEEquivHash(SignatureGeneratorOEBasicHashMixIn, bb.siggen.SignatureGeneratorUniHashMixIn, bb.siggen.SignatureGeneratorBasicHash):
         name = "OEEquivHash"
bb.data_smart.ExpansionError: Failure expanding variable OE_IMPORTED[:=], expression was ${@oe_import(d)} which triggered exception AttributeError: module 'bb.siggen' has no attribute 'SignatureGeneratorUniHashMixIn'

into:
ERROR: Error importing OE modules: module 'bb.siggen' has no attribute 'SignatureGeneratorUniHashMixIn'

which can then trigger a version mismatch error message.

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Richard Purdie преди 4 години
родител
ревизия
5b01726d1c
променени са 1 файла, в които са добавени 5 реда и са изтрити 3 реда
  1. 5 3
      meta/classes/base.bbclass

+ 5 - 3
meta/classes/base.bbclass

@@ -32,9 +32,11 @@ def oe_import(d):
 
     import oe.data
     for toimport in oe.data.typed_value("OE_IMPORTS", d):
-        imported = __import__(toimport)
-        inject(toimport.split(".", 1)[0], imported)
-
+        try:
+            imported = __import__(toimport)
+            inject(toimport.split(".", 1)[0], imported)
+        except AttributeError as e:
+            bb.error("Error importing OE modules: %s" % str(e))
     return ""
 
 # We need the oe module name space early (before INHERITs get added)