summaryrefslogtreecommitdiffstats
path: root/meta/classes
diff options
context:
space:
mode:
authorAndré Draszik <andre.draszik@jci.com>2018-05-22 13:25:50 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2018-08-16 09:49:39 +0100
commit7b7aa56548d61a85b928b90d2e7a3c9b3fee4a6b (patch)
tree8e3b5c3dbbe289db350bd377dcf0b2c5b0aa11f0 /meta/classes
parent6870d1063742e447728b462f856ee4e1fef9df6c (diff)
downloadpoky-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')
-rw-r--r--meta/classes/sstate.bbclass13
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