Yocto 配方中的 Echo 语句未打印到终端

问题描述 投票:0回答:6

我正在尝试通过打印消息来调试 Yocto 配方中的

do_compile_append
函数:

do_compile_append() {
    for i in 1 2 3 4 5
    do
        echo "My yocto Looping ... number $i"
    done
}

在此示例中,我添加了一个循环来在构建过程中回显一些消息。但是,当我运行

bitbake
来构建它时,我没有看到这些消息输出到我的终端。

输出记录在哪里?

yocto bitbake
6个回答
11
投票

Bitbake 提供了在 Shell 脚本代码中使用的日志记录功能。

你可以看看

poky/plain/meta/classes/logging.bbclass
,它是很多菜谱默认继承的。

功能有:

bbplain
bbnote
bbwarn
bberror
bbfatal
bbdebug

因此,您可以使用

bbdebug "My yocto Looping ... number $i"
在终端中打印输出。


8
投票

以下是查看您自己的调试的方法:

1

将以下指令添加到您的配方文件中

inherit logging

2

在任何函数中,使用以下命令打印调试(在黄色警告颜色下)。您可以使用

${VARIABLE-ID}
引用 shell 中定义的环境变量。

do_compile_append(){
    bbwarn "Hello, this is a debug message from ${USER}"
}

3
投票

默认情况下,所有已执行任务的日志都存储在

${WORKDIR}/temp/log.do_xxx
中。对于您的配方,您可以在
${WORKDIR}/temp/log.do_compile
中检查调试输出。

要在终端上查看输出,您应该使用下面的 bbclass

poky/plain/meta/classes/logging.bbclass
中的特殊函数,如下所示
bbdebug "My yocto Looping ... number $i"


3
投票

如果 bitbake 运行 Python,您将需要这样编写日志记录:

inherit logging

...

do_fetch_append(){
    bb.warn("Hello")
}

它将在日志中显示如下:

WARNING: xxxx-x.xx-xx do_fetch: Hello

0
投票

在recipe中使用

bbnote "...."
或在python中使用
bb.note("...")
并运行
bitbake -v


0
投票

对我来说,在

bbwarn
中使用
do_compile:append()
是有效的。您可以使用
${...}
:

记录环境变量
do_compile:append(){
    bbwarn "Hello world ${USER}"
}
© www.soinside.com 2019 - 2024. All rights reserved.