2017-08-19 3 views
0

bbclassを継承するが、機能しないレシピ(bb)の関数をオーバーライドしたい場合、新しいクラスの代わりにbbclass(スーパークラス)の関数が実行されます。レシピ内の関数がオーバーライドされていません

ここには、最小(非)動作例があります。

クラス:

# myclass.bbclass 

do_compile() { 
    echo MyClass 
} 

レシピ:

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

はなぜdo_compile仕事を上書きしません:私はレシピをコンパイルした後

# myrecipe.bb 

do_compile() { 
    echo MyRecipe 
} 

inherit myclass 

、ログファイルは次のようになります?

答えて

0

レシピファイル内のinheritの位置が重要です。ファイルの先頭に(関数(do_compileが(サブクラス)レシピで定義される前に)置くと、それは機能します。

レシピ:

$ cat temp/log.do_compile 
DEBUG: Executing shell function do_compile 
MyRecipe 
DEBUG: Shell function do_compile finished 
:ログファイルは次のようになりますレシピをコンパイルした後

# myrecipe.bb 

inherit myclass 

do_compile() { 
    echo MyRecipe 
} 

関連する問題