On Thu, 2020-03-26 at 10:25 -0500, Mark Hatle wrote:
> Add the ability to generate non-Linux based components, such as
> baremetal, FreeRTOS, Zypher, etc, exist.  There is a need for a way
> to take components as specific to a given OS.
> 
> This is especially important in a multiconfig build where you may be
> targeting different OSes which different sets of recipes in a common
> set of layers.
> 
> Setting a default of (matching bitbake.conf's default TARGET_OS):
> 
>    COMPATIBLE_OS ?= "linux${LIBCEXTENSION}${ABIEXTENSION}"
> 
> will allow all existing recipes to be tagged as Linux specific, so
> only non-Linux recipes would need to be tagged with specific
> compatibility.
> 
> For a baremetal recipes, the following was used to test this code:
> 
>    COMPATIBLE_OS = "elf"
>    COMPATIBLE_OS_arm = "eabi"
> 
> Signed-off-by: Mark Hatle <[email protected]>
> ---
> V2:
> Only difference to V1 is typograhic fixes to the commit message.
> 
>  meta/classes/base.bbclass    | 7 +++++++
>  meta/conf/documentation.conf | 1 +
>  2 files changed, 8 insertions(+)
> 
> diff --git a/meta/classes/base.bbclass b/meta/classes/base.bbclass
> index 45f9435fd8..c123c5dc50 100644
> --- a/meta/classes/base.bbclass
> +++ b/meta/classes/base.bbclass
> @@ -509,6 +509,13 @@ python () {
>          d.setVarFlag('do_devshell', 'fakeroot', '1')
>          d.appendVarFlag('do_devshell', 'depends', '
> virtual/fakeroot-native:do_populate_sysroot')
>  
> +    need_os = d.getVar('COMPATIBLE_OS')
> +    if need_os and not d.getVar('PARSE_ALL_RECIPES', False):
> +        import re
> +        this_os = d.getVar('TARGET_OS')
> +        if not re.match(need_os, this_os):
> +            raise bb.parse.SkipRecipe("incompatible with os %s (not
> in COMPATIBLE_OS)" % this_os)
> +
>      need_machine = d.getVar('COMPATIBLE_MACHINE')
>      if need_machine and not d.getVar('PARSE_ALL_RECIPES', False):
>          import re
> diff --git a/meta/conf/documentation.conf
> b/meta/conf/documentation.conf
> index 0b21d1f63e..7a87540f43 100644
> --- a/meta/conf/documentation.conf
> +++ b/meta/conf/documentation.conf
> @@ -111,6 +111,7 @@ COMBINED_FEATURES[doc] = "A set of features
> common between MACHINE_FEATURES and
>  COMMON_LICENSE_DIR[doc] = "Points to meta/files/common-licenses in
> the Source Directory, which is where generic license files reside."
>  COMPATIBLE_HOST[doc] = "A regular expression that resolves to one or
> more hosts (when the recipe is native) or one or more targets (when
> the recipe is non-native) with which a recipe is compatible."

How does COMPATIBLE_OS compare to COMPATIBLE_HOST (documented above)?

Cheers

Richard

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.

View/Reply Online (#136758): 
https://lists.openembedded.org/g/openembedded-core/message/136758
Mute This Topic: https://lists.openembedded.org/mt/72566050/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub  
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to