如何将 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):
//穹顶的东西
否则:
//做了其他事情