Search code examples
yoctoyocto-recipe

How to retrieve PACKAGECONFIG variable from another recipe to a bbclass


For one of my requirements, I need to call a specific tasks based on whether a packageconfig variable is defined in another recipes or not.

For example:
We have a recipe called recipes-crypto where, in the .bb file we have:

PACKAGECONFIG[veritysetup] = "--enable-veritysetup,--disable-veritysetup"
BBCLASSEXTEND = "native nativesdk"

Then, in my meta-qti-bsp/classes, I have qimage.class, where I wanted to do like this:

if ${@bb.utils.contains('PACKAGECONFIG', 'veritysetup', 'true', 'false', d)}; then
    #Call some function
fi

But it gives errors:

ERROR: ParseError at /local/mnt/workspace/PINTU/WORK/Y2021/NAD-CORE-WORK/NEW_C10_30Nov/poky/meta-qti-bsp/classes/qimage.bbclass:102: unparsed line: 'if ${@bb.utils.contains('PACKAGECONFIG', 'veritysetup', 'true', 'false', d)}; then'

How to make veritysetup variable get recognised in my class file?

I saw some examples and added this on top:

PACKAGECONFIG_append_class-native = " veritysetup"

But with this also it gives the same error.

I am using this veritysetup command only during build time.
So, I wanted to execute this command if and only if this PACKAGECONFIG variable is defined.

What is the best way to do it ?


Solution

  • Actually, I did it in this way and it worked for me.

    The following is already enabled in recipes-crypto like this:

    PACKAGECONFIG[veritysetup] = "--enable-veritysetup,--disable-veritysetup"
    

    Now, in our .bbclass I just called like this:

    DEPENDS += "cryptsetup-native openssl-native"
    PACKAGECONFIG_append = " veritysetup"
    **==> This is the main part how we can check, if a packageconfig variable is enabled elsewhere or not**
    

    Then I can check the condition like this:

    if not bb.utils.contains('PACKAGECONFIG', 'veritysetup', True, False, d):
        //dome something
    else:
       //done something else