21

我有一个使用 bitbake 进行构建的 OpenEmbedded 环境。我想在 bitbake 会暂停并要求输入然后继续构建的地方进行一些“交互式”,但我发现这是不可能的。

因为我不能这样做,所以我正在寻找某种方法来为构建传递额外的标志。有没有办法将标志传递给类似于 gcc 选项的 bitbake 构建-D

IE:

bitbake -Dfoo=bar oe-myimage

因此在构建过程中oe-myimage该变量foo将被设置为bar.

4

5 回答 5

27
bitbake -Dfoo=bar oe-myimage

-D flag is not recognized by bitbake. So, using above method will not work. Instead you could specify flags from command line using following steps -

Say you want to export variable foo and expect it be recognized by bitbake.

export foo="foobar"

You will need to export this and inform bitbake via BB_ENV_EXTRAWHITE variable after sourcing oe-init-build-env. This means

. oe-init-build-env
export foo="foobar"
export BB_ENV_EXTRAWHITE="$BB_ENV_EXTRAWHITE foo"      

This whitelists variable 'foo' for bitbake and thus makes it visible to any recipe and subprocess during the build.

After this you can invoke any bitbake operations using variable foo within bitbake via expressions like -

${foo}
于 2013-07-13T04:52:03.900 回答
10

虽然其他答案没有任何问题,但 bitbake 确实接受了此处--postread记录的参数。这意味着您可以将任意数量的 bitbake 变量写入某个临时配置文件,并在 bitbake.conf 之后通过在命令行上指定文件名来读取它。例如:

bitbake --postread=./extra.conf

我个人觉得这比处理环境变量更方便。

于 2017-02-07T22:58:13.277 回答
7

还有一种方便的命令行方法可以做到这一点,在 bitbake 手册中使用BB_ORIGENV进行了描述:

有时,能够从原始执行环境中获取信息很有用。Bitbake 将原始环境的副本保存到名为 BB_ORIGENV 的特殊变量中。

为此,您可以完全按照他们的建议(从 Python 函数)读取变量:

 origenv = d.getVar("BB_ORIGENV", False)
 bar = origenv.getVar("BAR", False)

然后,从命令行传递它的方法很简单:

BAR=somevalue bitbake myimage
于 2019-10-11T15:05:33.780 回答
6

你可以做:

export foo="bar"
export BB_ENV_EXTRAWHITE="$BB_ENV_EXTRAWHITE foo"
bitbake oe-myimage
于 2014-01-28T15:21:50.183 回答
1

不,我不相信这样的机制存在。但你可以做类似的事情

"echo "foo = \"bar\"" >local.conf

不确定这是否会解决您的特定问题。此外,还有一种本地站点范围变量的机制:如果您的主目录中名为 .oe 的目录下有一个“site.conf”文件,bitbake 将读取该文件并将这些变量应用于每个构建的全局环境。也许这会有所帮助?您没有具体说明您要解决的问题,可能有更好的方法。

于 2013-06-30T12:33:10.690 回答