2017-08-19 4 views
0

Ich möchte eine Funktion in einem Rezept (bb) überschreiben, das von einer bbclass erbt, aber es funktioniert nicht - die Funktion von der bbclass (Oberklasse) wird anstelle der neuen ausgeführt.Funktion im Rezept nicht überschrieben

Hier ist ein minimales (nicht) funktionierendes Beispiel.

Klasse:

# myclass.bbclass 

do_compile() { 
    echo MyClass 
} 

Rezept:

# myrecipe.bb 

do_compile() { 
    echo MyRecipe 
} 

inherit myclass 

Nachdem ich das Rezept kompilieren, sieht die Protokolldatei wie folgt aus:

$ cat temp/log.do_compile 
DEBUG: Executing shell function do_compile 
MyClass 
DEBUG: Shell function do_compile finished 

Warum zwingende nicht von do_compile Arbeit ?

Antwort

0

Die Position von inherit in der Rezeptdatei ist wichtig. Wenn Sie es an den Anfang der Datei setzen (bevor die Funktion do_compile im (Unterklassen-) Rezept definiert ist), funktioniert es.

Rezept:

# myrecipe.bb 

inherit myclass 

do_compile() { 
    echo MyRecipe 
} 

Nach dem Rezept Kompilieren der Protokolldatei wie folgt aussieht:

$ cat temp/log.do_compile 
DEBUG: Executing shell function do_compile 
MyRecipe 
DEBUG: Shell function do_compile finished 
Verwandte Themen