Re: Controlling features enable/disable across recipe and meta layers ?
Pintu Agarwal
Hi,
I have many questions about Yocto features. My main question is: In Yocto what is the best mechanism to define a feature flag such that it can be accessed across many layers and recipes ? We are using Yocto thud and/or dunfell at this moment for 2 different products. From the Yocto document also it is not very clear which one to use. Also, we are confused when one to use when, like we have: DISTRO Feature flag, PACKAGECONFIG variable, IMAGE Feature, Global Macro (setVar, getVar), etc. Example: Currently, we have many different releases and many different products use it. So, we have many distro features, many of them are common and many of them we defined newly for our product. But for our product we have only one component (say: auto-prod). So, when this component is enabled the same release should be built for our product including our feature set. And when this component is disabled, all our features should be disabled like mainline release. So, we wanted to define only one DISTRO feature (auto-prod) and list all our features under this distro. Also we wanted to control all these from a single place, so that enabling/disabling all the features in one shot would be easy and portable. We tried doing it using PACKAGECONFIG but it seems this option can be used only at a recipe level and not visible across all layers. We wanted to do something like this in: auto.conf DISTRO_FEATURES = "auto-prod" if defined (distro-features == auto-prod) ; then PACKAGECONFIG_append-pn-<recipe1> = "f1 f2 ..." PACKAGECONFIG_append-pn-<recipe2> = "f2 f3 ..." PACKAGECONFIG_append-pn-<recipe3> = "f1 f3 f4..." fi So, if we comment DISTRO_FEATURES all the features listed above should be automatically disabled. Note, our feature flags are used across multiple recipes and layers. Bootloader layer, Kernel, meta layer, recipe layer, python source, C source, scripts, etc. Like: edk2, meta-qti-bsp, meta-security, meta-qti-auto, auto-prod-folder, etc. Is there a well defined way in Yocto to achieve such a modular design approach ? If there are any such references please share. Our reference distro is here: https://source.codeaurora.org/quic/le/meta-qti-bsp/tree/conf/distro/auto.conf?h=yocto.lnx.3.0.c28 Thanks, Pintu
|
|