0

对于我的一个要求,我需要根据 packageconfig 变量是否在另一个配方中定义来调用特定任务。

例如:
我们有一个名为 recipes-crypto 的配方,在 .bb 文件中,我们有:
PACKAGECONFIG[veritysetup] = "--enable-veritysetup,--disable-veritysetup"
BBCLASSEXTEND = "native nativesdk"

然后,在我的 meta-qti-bsp/classes 中,我有 qimage.class,我想这样做:

如果 ${@bb.utils.contains('PACKAGECONFIG', 'veritysetup', 'true', 'false', d)}; 然后
#调用一些函数
fi

但它给出了错误:
错误:ParseError at /local/mnt/workspace/PINTU/WORK/Y2021/NAD-CORE-WORK/NEW_C10_30Nov/poky/meta-qti-bsp/classes/qimage.bbclass:102: unparsed line: '如果 ${@bb.utils.contains('PACKAGECONFIG', 'veritysetup', 'true', 'false', d)}; 然后'

如何使“veritysetup”变量在我的类文件中被识别?

我看到了一些例子并在上面添加了这个:
PACKAGECONFIG_append_class-native = "veritysetup"

但是这样也给出了同样的错误。

我仅在构建期间使用此 veritysetup 命令。
所以,当且仅当这个 PACKAGECONFIG 变量被定义时,我想执行这个命令。

最好的方法是什么?

谢谢,平图

4

2 回答 2

2

veritysetup不是 的值PACKAGECONFIG,而是flag

PACKAGECONFIG有很多标志,每个标志都有它的值。

有关变量标志的更多信息,请查看此链接

因此,这是一个如何检查该标志是否被激活的示例:

真实例子.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

您将收到以下警告:

警告:verity-example-1.0-r0 do_sample:veritysetup 使用值激活:--enable-veritysetup,--disable-veritysetup

于 2021-12-11T09:02:01.777 回答
0

实际上,我是这样做的,它对我有用。

在 recipes-crypto 中已经启用了以下功能:
PACKAGECONFIG[veritysetup] = "--enable-veritysetup,--disable-veritysetup"

现在,在我们的 .bbclass 中,我只是这样调用:
+DEPENDS += "cryptsetup-native openssl-native"
+PACKAGECONFIG_append = " veritysetup"
==> 这是我们可以检查的主要部分,如果在其他地方启用了 packageconfig 变量或不

然后我可以像这样检查条件:
if not bb.utils.contains('PACKAGECONFIG', 'veritysetup', True, False, d):
//dome something
else:
//done something else

于 2021-12-16T06:51:27.343 回答