On Thu, 2020-03-26 at 12:05 -0500, Mark Hatle wrote:
> > 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)?
> 
> HOST_SYS="aarch64-oe-linux"
> 
> So the equivalent to the COMPATIBLE_OS would be:
> 
> COMPATIBLE_HOST ?= ".*-linux.*"
> 
> So it COULD be used in most cases.
> 
> When I tried this before though, I could get it to work in a
> multiconfig
> setting.
> 
> Specifically what I tried was setting, in my local.conf:
> 
> COMPATIBLE_HOST ?= ".*-linux${LIBCEXTENSION}${ABIEXTENSION}"
> 
> And then in the recipes:
> 
> COMPATIBLE_HOST = ".*-elf"
> COMPATIBLE_HOST_arm = ".*-eabi"
> 
> But then the second one matches the linux ABIEXTENSION and broke..
> 
> So really the issue is that I -only- ever want to match on the OS
> part of
> the "SYS" string.  And done to the multiple natures of the '-', it's
> difficult to get right.
> 
> I didn't try something complex like: [^-]-[^-]-eabi

>From what I remember, COMPATIBLE_HOST has full re support so something
should be possible...

Cheers,

Richard

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

View/Reply Online (#136762): 
https://lists.openembedded.org/g/openembedded-core/message/136762
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