配方中的功能未被覆盖
function in recipe not overridden
我想重写食谱 (bb) 中继承自 bbclass 的函数,但它不起作用 -- 执行 bbclass(超类)的函数而不是新函数。
这是一个最小的(非)工作示例。
Class:
# myclass.bbclass
do_compile() {
echo MyClass
}
食谱:
# myrecipe.bb
do_compile() {
echo MyRecipe
}
inherit myclass
编译菜谱后,日志文件如下所示:
$ cat temp/log.do_compile
DEBUG: Executing shell function do_compile
MyClass
DEBUG: Shell function do_compile finished
为什么覆盖 do_compile
不起作用?
配方文件中inherit
的位置很重要。如果你把它放在文件的开头(在(子类)配方中定义函数 do_compile
之前),它就可以工作。
食谱:
# myrecipe.bb
inherit myclass
do_compile() {
echo MyRecipe
}
编译配方后,日志文件如下所示:
$ cat temp/log.do_compile
DEBUG: Executing shell function do_compile
MyRecipe
DEBUG: Shell function do_compile finished
我想重写食谱 (bb) 中继承自 bbclass 的函数,但它不起作用 -- 执行 bbclass(超类)的函数而不是新函数。
这是一个最小的(非)工作示例。
Class:
# myclass.bbclass
do_compile() {
echo MyClass
}
食谱:
# myrecipe.bb
do_compile() {
echo MyRecipe
}
inherit myclass
编译菜谱后,日志文件如下所示:
$ cat temp/log.do_compile
DEBUG: Executing shell function do_compile
MyClass
DEBUG: Shell function do_compile finished
为什么覆盖 do_compile
不起作用?
配方文件中inherit
的位置很重要。如果你把它放在文件的开头(在(子类)配方中定义函数 do_compile
之前),它就可以工作。
食谱:
# myrecipe.bb
inherit myclass
do_compile() {
echo MyRecipe
}
编译配方后,日志文件如下所示:
$ cat temp/log.do_compile
DEBUG: Executing shell function do_compile
MyRecipe
DEBUG: Shell function do_compile finished