[OE-core] [PATCH 1/4] sstate: allow specifying indirect dependencies to exclude from sysroot

André Draszik git at andred.net
Tue May 22 12:48:11 UTC 2018


On Tue, 2018-05-22 at 13:36 +0100, Richard Purdie wrote:
> On Tue, 2018-05-22 at 13:25 +0100, André Draszik wrote:
> > diff --git a/meta/classes/sstate.bbclass
> > b/meta/classes/sstate.bbclass
> > index 1a95f8f2b9..e5b86ad705 100644
> > --- a/meta/classes/sstate.bbclass
> > +++ b/meta/classes/sstate.bbclass
> > @@ -897,6 +897,7 @@ def setscene_depvalid(task, taskdependees,
> > notneeded, d, log=None):
> >      # task is included in taskdependees too
> >      # Return - False - We need this dependency
> >      #        - True - We can skip this dependency
> > +    import re
> >  
> >      def logit(msg, log):
> >          if log is not None:
> > @@ -957,6 +958,18 @@ def setscene_depvalid(task, taskdependees,
> > notneeded, d, log=None):
> >              # Nothing need depend on libc-initial/gcc-cross-initial
> >              if "-initial" in taskdependees[task][0]:
> >                  continue
> > +            # Allow excluding certain recursive dependencies. If a
> > recipe needs it should add a
> > +            # specific dependency itself, rather than relying on one
> > of its dependees to pull
> > +            # them in.
> > +            # See also http://lists.openembedded.org/pipermail/opene
> > mbedded-core/2018-January/146324.html
> > +            not_needed = False
> > +            for excl in (d.getVar('SSTATE_EXCLUDEDEPS_SYSROOT') or
> > "").split():
> > +                if re.match(excl.split('->', 1)[0],
> > taskdependees[dep][0]):
> > +                    if re.match(excl.split('->', 1)[1],
> > taskdependees[task][0]):
> > +                        not_needed = True
> > +                        break
> > +            if not_needed:
> > +                continue
> >              # For meta-extsdk-toolchain we want all sysroot
> > dependencies
> >              if taskdependees[dep][0] == 'meta-extsdk-toolchain':
> >                  return False
> 
> Have you looked at the performance impact of this change? It looks like
> it will be compiling the regexp each time inside a tight loop which
> gets called once per task dependency which will show up significantly
> on the performance chart.

True, and no, I haven't. Is there a good way to compare the performance with
and without this change other than using 'time'?

> We already have a "*" syntax used in SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS
> and I'd rather use that syntax here to avoid the use of re if we can
> help it. Could you see if that is possible please? That would also keep
> the syntax compatible.

OK.

Cheers,
Andre'




More information about the Openembedded-core mailing list