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

Richard Purdie richard.purdie at linuxfoundation.org
Tue May 22 12:36:53 UTC 2018


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.

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.

Cheers,

Richard




More information about the Openembedded-core mailing list