我有两个机器配置文件,我从元层添加所需的配置文件。如下:
# mymachine32.conf
require conf/machine/include/tune-cortexa7.inc
和
# mymachine64.conf
require conf/machine/include/arm/arch-armv8.inc
以上工作正常,但我试图合并到一个conf文件中,如下所示:
# mymachine.conf
DEFAULTTUNE ?= "${@base_contains('MYTUNE', 'arm', 'armv7a-neon', 'aarch64', d)}"
require conf/machine/include/arm/arch-armv8.inc
在我的conf文件中使用方法#1 ,我看到以下错误:
ExpansionError:扩展变量DEFAULTTUNE失败,表达式为$ {@ base_contains('MYTUNE','arm','armv7a-neon','aarch64',d)},触发了异常NameError:name'base_contains'未定义
# mymachine.conf
DEFAULTTUNE ?= "${@bb.utils.contains('MYTUNE', 'arm', 'armv7a-neon', 'aarch64', d)}"
require conf/machine/include/arm/arch-armv8.inc
然而使用方法#2 我总是将'falsevalue'(即aarch64)设置为DEFAULTTUNE
请注意,在这两种情况下,我都会在我的shell中导出MYTUNE
导出MYTUNE = arm
你能指出我做错了什么吗?在此先感谢您的帮助。
答案 0 :(得分:1)
对于方法#1,代码在base.bbclass之前被解析并执行,因此base_contains不可用。
对于方法#2,我怀疑在评估表达式时没有设置MYTUNE。我认为这是因为当你在环境中设置它时,你不会指示它应该允许它进入数据存储区。尝试添加:
导出BB_ENV_EXTRAWHITE = MYTUNE
应该允许MYTUNE进入数据存储区。您可以通过greped bitbake -e的输出来测试这个,以检查它是否按预期设置。