配方中的函数未被覆盖

Ulu*_*kai 5 openembedded bitbake yocto

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

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

班级:

# myclass.bbclass

do_compile() {
    echo MyClass
}
Run Code Online (Sandbox Code Playgroud)

食谱:

# myrecipe.bb

do_compile() {
    echo MyRecipe
}

inherit myclass
Run Code Online (Sandbox Code Playgroud)

编译配方后,日志文件如下所示:

$ cat temp/log.do_compile
DEBUG: Executing shell function do_compile
MyClass
DEBUG: Shell function do_compile finished
Run Code Online (Sandbox Code Playgroud)

为什么不覆盖do_compile工作?

Ulu*_*kai 7

inherit在配方文件中的位置很重要。如果将其放在文件的开头(do_compile在(子类)配方中定义函数之前),它就可以工作。

食谱:

# myrecipe.bb

inherit myclass

do_compile() {
    echo MyRecipe
}
Run Code Online (Sandbox Code Playgroud)

编译配方后,日志文件如下所示:

$ cat temp/log.do_compile
DEBUG: Executing shell function do_compile
MyRecipe
DEBUG: Shell function do_compile finished
Run Code Online (Sandbox Code Playgroud)