在 BitBake 中使用条件语法(覆盖)

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

阅读一本关于 Yocto 的书。到达以下页面,上面写着:

BitBake 提供了一种非常易于使用的方式来编写条件元数据。 这是通过一种称为覆盖的机制来完成的。

OVERRIDES 变量包含用冒号 (:) 分隔的值,并且 每个值都是我们想要满足条件的一项。所以,如果我们有一个 以arm为条件的变量,并且arm处于OVERRIDES状态,那么 使用特定于arm的变量版本而不是 无条件版本,如图:

OVERRIDES = "architecture:os:machine"
TEST = "defaultvalue"
TEST_os = "osspecificvalue"
TEST_other = "othercondvalue"

在此示例中,由于条件,

TEST
将变为
osspecificvalue
操作系统位于
OVERRIDES

从这个解释中我不清楚

TEST
如何变得等于
osspecificvalue
。有人可以解释一下吗?

yocto bitbake
1个回答
4
投票

Bitbake 在 lib/bb/data_smart.py 中基于 Python 的 MutableMapping 实现了自己的字典数据结构。目标是创建一个更灵活的字典,因为“键,值”对中的每个值都可以根据特定标识符进行覆盖。

如果您查看此字典中的变量是如何设置的,您将看到数据存储允许基于覆盖标识符列表“覆盖”变量。这些标识符应附加下划线,如“TEST_os”示例中所示。

在您引用的情况下,“其他”标识符不在 OVERRIDES 列表中,因此该“智能字典”不会用“othercondvalue”覆盖 TEST 的值。但是,由于“os”标识符位于 OVERRIDES 列表中,因此 TEST 的值确实被值“osspecivalvalue”覆盖。

我强烈建议阅读 DataSmart 类,因为这是一个非常简单的解释,但希望它有所帮助。

此外,请参阅 BitBake 手册条目中的 OVERRIDES 了解更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.