配方中的功能未被覆盖

时间:2017-08-19 15:42:57

标签: yocto bitbake openembedded

我想覆盖继承自bbclass的配方(bb)中的函数,但它不起作用 - 执行bbclass(超类)中的函数而不是新函数。

这是一个最小(非)工作的例子。

类别:

# 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工作?

1 个答案:

答案 0 :(得分:1)

配方文件中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