diff options
author | André Draszik <andre.draszik@jci.com> | 2018-05-22 13:25:50 +0100 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2018-08-16 09:49:39 +0100 |
commit | 7b7aa56548d61a85b928b90d2e7a3c9b3fee4a6b (patch) | |
tree | 8e3b5c3dbbe289db350bd377dcf0b2c5b0aa11f0 /meta/classes/sstate.bbclass | |
parent | 6870d1063742e447728b462f856ee4e1fef9df6c (diff) | |
download | poky-7b7aa56548d61a85b928b90d2e7a3c9b3fee4a6b.tar.gz |
sstate: allow specifying indirect dependencies to exclude from sysroot
Currently, a dependency on any -native recipe will pull in
all dependencies of that -native recipe in the recipe
sysroot. This behaviour might not always be wanted, e.g.
when that -native recipe depends on build-tools that are
not relevant for the current recipe.
This change adds a SSTATE_EXCLUDEDEPS_SYSROOT variable,
which will be evaluated for such recursive dependencies to
be excluded. The idea is similar to
http://lists.openembedded.org/pipermail/openembedded-core/2018-January/146324.html
except that the list is not hard-coded anymore.
SSTATE_EXCLUDEDEPS_SYSROOT is evaluated as two regular
expressions of recipe and dependency to ignore, e.g. in
the above flex-native / bison-native use-case, one would
specify
SSTATE_EXCLUDEDEPS_SYSROOT = ".*->(flex|bison)-native"
in layer.conf.
The existing special handling of "-initial" as well as
"base-passwd" and "shadow-sysroot" could also be
streamlined:
SSTATE_EXCLUDEDEPS_SYSROOT += "\
.*->.*-initial.* \
.*(base-passwd|shadow-sysroot)->.* \
"
Another anticipated user is meta-java, where certain newer
JDKs can only be bootstrapped (built) using older JDKs,
but it doesn't make much sense to copy all those older
JDKs and their own build tools (ant, etc.) into the
sysroot of recipes wanting to be built using the newer JDK
(only), e.g.:
SSTATE_EXCLUDEDEPS_SYSROOT += "\
openjdk-8-native->(ant-native|attr-native|coreutils-native|icedtea7-native|libxslt-native|make-native|openssl-native|zip-native|unzip-native) \
"
(From OE-Core rev: 92c5131a2feae2036c71a36c18bb9175bb2856dc)
Signed-off-by: André Draszik <andre.draszik@jci.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/classes/sstate.bbclass')
-rw-r--r-- | meta/classes/sstate.bbclass | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/meta/classes/sstate.bbclass b/meta/classes/sstate.bbclass index 402b9e9c5c..53f71d4337 100644 --- a/meta/classes/sstate.bbclass +++ b/meta/classes/sstate.bbclass | |||
@@ -920,6 +920,7 @@ def setscene_depvalid(task, taskdependees, notneeded, d, log=None): | |||
920 | # task is included in taskdependees too | 920 | # task is included in taskdependees too |
921 | # Return - False - We need this dependency | 921 | # Return - False - We need this dependency |
922 | # - True - We can skip this dependency | 922 | # - True - We can skip this dependency |
923 | import re | ||
923 | 924 | ||
924 | def logit(msg, log): | 925 | def logit(msg, log): |
925 | if log is not None: | 926 | if log is not None: |
@@ -980,6 +981,18 @@ def setscene_depvalid(task, taskdependees, notneeded, d, log=None): | |||
980 | # Nothing need depend on libc-initial/gcc-cross-initial | 981 | # Nothing need depend on libc-initial/gcc-cross-initial |
981 | if "-initial" in taskdependees[task][0]: | 982 | if "-initial" in taskdependees[task][0]: |
982 | continue | 983 | continue |
984 | # Allow excluding certain recursive dependencies. If a recipe needs it should add a | ||
985 | # specific dependency itself, rather than relying on one of its dependees to pull | ||
986 | # them in. | ||
987 | # See also http://lists.openembedded.org/pipermail/openembedded-core/2018-January/146324.html | ||
988 | not_needed = False | ||
989 | for excl in (d.getVar('SSTATE_EXCLUDEDEPS_SYSROOT') or "").split(): | ||
990 | if re.match(excl.split('->', 1)[0], taskdependees[dep][0]): | ||
991 | if re.match(excl.split('->', 1)[1], taskdependees[task][0]): | ||
992 | not_needed = True | ||
993 | break | ||
994 | if not_needed: | ||
995 | continue | ||
983 | # For meta-extsdk-toolchain we want all sysroot dependencies | 996 | # For meta-extsdk-toolchain we want all sysroot dependencies |
984 | if taskdependees[dep][0] == 'meta-extsdk-toolchain': | 997 | if taskdependees[dep][0] == 'meta-extsdk-toolchain': |
985 | return False | 998 | return False |