如何将 PACKAGECONFIG 变量从另一个配方检索到 bbclass
How to retrieve PACKAGECONFIG variable from another recipe to a bbclass
对于我的一个要求,我需要根据另一个配方中是否定义了 packageconfig 变量来调用特定任务。
例如:
我们有一个名为 recipes-crypto 的食谱,在 .bb 文件中我们有:
PACKAGECONFIG[veritysetup] = "--enable-veritysetup,--disable-veritysetup"
BBCLASSEXTEND = "native nativesdk"
然后,在我的 meta-qti-bsp/classes 中,我有 qimage.class,我想这样做:
if ${@bb.utils.contains('PACKAGECONFIG', 'veritysetup', 'true', 'false', d)};然后
#调用一些函数
菲
但它给出了错误:
错误:/local/mnt/workspace/PINTU/WORK/Y2021/NAD-CORE-WORK/NEW_C10_30Nov/poky/meta-qti-bsp/classes/qimage.bbclass:102 处的 ParseError:未解析的行:'if ${@bb.utils.contains('PACKAGECONFIG', 'veritysetup', 'true', 'false', d)};那么'
如何在我的 class 文件中识别“veritysetup”变量?
我看到了一些例子并在上面添加了这个:
PACKAGECONFIG_append_class-native = " veritysetup"
但是这也给出了同样的错误。
我只在构建期间使用此 veritysetup 命令。
所以,当且仅当定义了这个 PACKAGECONFIG 变量时,我才想执行这个命令。
最好的方法是什么?
谢谢,
拼图
veritysetup
不是 PACKAGECONFIG
的值,而是 flag
.
PACKAGECONFIG
有很多标志,每个标志都有其值。
有关变量标志的更多信息,请查看此 link。
因此,这是一个如何检查该标志是否已激活的示例:
verity-example.bb
LICENSE = "CLOSED"
PACKAGECONFIG[veritysetup] = "--enable-veritysetup,--disable-veritysetup"
do_check_verity(){
if [ ${@d.getVarFlag('PACKAGECONFIG', 'veritysetup', False)} ]; then
bbwarn "veritysetup is activated with value: ${@d.getVarFlags('PACKAGECONFIG').get('veritysetup')}"
else
bbwarn "veritysetup is not activated."
fi
}
addtask do_check_verity
如果你运行:
bitbake verity-example -c check_verity
您将收到警告:
WARNING: verity-example-1.0-r0 do_sample: veritysetup is activated
with value: --enable-veritysetup,--disable-veritysetup
实际上,我是这样做的,而且对我有用。
以下已在 recipes-crypto 中启用,如下所示:
PACKAGECONFIG[veritysetup] = "--enable-veritysetup,--disable-veritysetup"
现在,在我们的 .bbclass 中,我只是这样调用:
+DEPENDS += "cryptsetup-native openssl-native"
+PACKAGECONFIG_append = " veritysetup"
==> 这是我们检查的主要部分,是否在其他地方启用了 packageconfig 变量
然后我可以这样检查条件:
如果不是 bb.utils.contains('PACKAGECONFIG', 'veritysetup', 真, 假, d):
//穹顶的东西
否则:
//做了其他事情
对于我的一个要求,我需要根据另一个配方中是否定义了 packageconfig 变量来调用特定任务。
例如:
我们有一个名为 recipes-crypto 的食谱,在 .bb 文件中我们有:
PACKAGECONFIG[veritysetup] = "--enable-veritysetup,--disable-veritysetup"
BBCLASSEXTEND = "native nativesdk"
然后,在我的 meta-qti-bsp/classes 中,我有 qimage.class,我想这样做:
if ${@bb.utils.contains('PACKAGECONFIG', 'veritysetup', 'true', 'false', d)};然后
#调用一些函数
菲
但它给出了错误:
错误:/local/mnt/workspace/PINTU/WORK/Y2021/NAD-CORE-WORK/NEW_C10_30Nov/poky/meta-qti-bsp/classes/qimage.bbclass:102 处的 ParseError:未解析的行:'if ${@bb.utils.contains('PACKAGECONFIG', 'veritysetup', 'true', 'false', d)};那么'
如何在我的 class 文件中识别“veritysetup”变量?
我看到了一些例子并在上面添加了这个:
PACKAGECONFIG_append_class-native = " veritysetup"
但是这也给出了同样的错误。
我只在构建期间使用此 veritysetup 命令。
所以,当且仅当定义了这个 PACKAGECONFIG 变量时,我才想执行这个命令。
最好的方法是什么?
谢谢, 拼图
veritysetup
不是 PACKAGECONFIG
的值,而是 flag
.
PACKAGECONFIG
有很多标志,每个标志都有其值。
有关变量标志的更多信息,请查看此 link。
因此,这是一个如何检查该标志是否已激活的示例:
verity-example.bb
LICENSE = "CLOSED"
PACKAGECONFIG[veritysetup] = "--enable-veritysetup,--disable-veritysetup"
do_check_verity(){
if [ ${@d.getVarFlag('PACKAGECONFIG', 'veritysetup', False)} ]; then
bbwarn "veritysetup is activated with value: ${@d.getVarFlags('PACKAGECONFIG').get('veritysetup')}"
else
bbwarn "veritysetup is not activated."
fi
}
addtask do_check_verity
如果你运行:
bitbake verity-example -c check_verity
您将收到警告:
WARNING: verity-example-1.0-r0 do_sample: veritysetup is activated with value: --enable-veritysetup,--disable-veritysetup
实际上,我是这样做的,而且对我有用。
以下已在 recipes-crypto 中启用,如下所示:
PACKAGECONFIG[veritysetup] = "--enable-veritysetup,--disable-veritysetup"
现在,在我们的 .bbclass 中,我只是这样调用:
+DEPENDS += "cryptsetup-native openssl-native"
+PACKAGECONFIG_append = " veritysetup"
==> 这是我们检查的主要部分,是否在其他地方启用了 packageconfig 变量
然后我可以这样检查条件:
如果不是 bb.utils.contains('PACKAGECONFIG', 'veritysetup', 真, 假, d):
//穹顶的东西
否则:
//做了其他事情