2017-08-19 1 views
0

Je souhaite remplacer une fonction dans une recette (bb) qui hérite d'une bbclass, mais cela ne fonctionne pas - la fonction de la classe bbclass (superclasse) est exécutée à la place de la nouvelle.fonction dans la recette non surchargée

Voici un exemple minimal (non) de travail.

Classe:

# myclass.bbclass 

do_compile() { 
    echo MyClass 
} 

Recette:

# myrecipe.bb 

do_compile() { 
    echo MyRecipe 
} 

inherit myclass 

Après je compile la recette, le fichier journal ressemble à ceci:

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

Pourquoi ne remplaçant pas de do_compile travail ?

Répondre

0

La position de inherit dans le fichier de recette est importante. Si vous le placez au début du fichier (avant que la fonction do_compile ne soit définie dans la recette (sous-classe)), cela fonctionne.

Recette:

# myrecipe.bb 

inherit myclass 

do_compile() { 
    echo MyRecipe 
} 

Après avoir compilé la recette du fichier journal ressemble à ceci:

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