[oe-commits] [openembedded-core] branch master-next updated: base: Add MultiConfigParsed handler to deal with unstable build signatures

git at git.openembedded.org git at git.openembedded.org
Thu Jul 6 15:48:53 UTC 2017


This is an automated email from the git hooks/post-receive script.

rpurdie pushed a commit to branch master-next
in repository openembedded-core.

The following commit(s) were added to refs/heads/master-next by this push:
     new 7267e7c  base: Add MultiConfigParsed handler to deal with unstable build signatures
7267e7c is described below

commit 7267e7c000c76c44d09835d4cd2bc485b6a39a2a
Author: Richard Purdie <richard.purdie at linuxfoundation.org>
AuthorDate: Thu Jul 6 12:54:15 2017 +0100

    base: Add MultiConfigParsed handler to deal with unstable build signatures
    
    This uses the newly added MultiConfigParsed event to handle problems where
    checksums in multiconfig build were not fuctioning as expected.
    
    The issue arises around SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS which contains
    entries like:
    
    * gcc-cross-${TARGET_ARCH}->virtual/${TARGET_PREFIX}libc-for-gcc
    * gcc-cross-${TARGET_ARCH}->linux-libc-headers
    
    These need to be expanded in the multiconfig data store but then placed
    into the shared main datastore used by the siggen code. The only other
    alternative would be a siggen instance for each multiconfig however that
    seemed even more complex and invasive.
    
    In real world usage, this issue would mean a qemux86 base config with
    other armv5 and armv7 configs (e.g. beaglebone and qemuarm) would
    try and build gcc-cross twice since dependencies normaly excluded
    (e.g. linux-libc-headers) would now be included. This breaks sstate reuse
    as well as breaking builds unless separate tmpdirs are used.
    
    This patch adds all the entries for each multiconfig. Whilst there may
    be duplicates, this shouldn't be an issue.
    
    Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
---
 meta/classes/base.bbclass | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/meta/classes/base.bbclass b/meta/classes/base.bbclass
index 3762c8a..27a28b8 100644
--- a/meta/classes/base.bbclass
+++ b/meta/classes/base.bbclass
@@ -220,7 +220,7 @@ def buildcfg_neededvars(d):
         bb.fatal('The following variable(s) were not set: %s\nPlease set them directly, or choose a MACHINE or DISTRO that sets them.' % ', '.join(pesteruser))
 
 addhandler base_eventhandler
-base_eventhandler[eventmask] = "bb.event.ConfigParsed bb.event.BuildStarted bb.event.RecipePreFinalise bb.runqueue.sceneQueueComplete bb.event.RecipeParsed"
+base_eventhandler[eventmask] = "bb.event.ConfigParsed bb.event.MultiConfigParsed bb.event.BuildStarted bb.event.RecipePreFinalise bb.runqueue.sceneQueueComplete bb.event.RecipeParsed"
 python base_eventhandler() {
     import bb.runqueue
 
@@ -235,6 +235,16 @@ python base_eventhandler() {
         setup_hosttools_dir(d.getVar('HOSTTOOLS_DIR'), 'HOSTTOOLS', d)
         setup_hosttools_dir(d.getVar('HOSTTOOLS_DIR'), 'HOSTTOOLS_NONFATAL', d, fatal=False)
 
+    if isinstance(e, bb.event.MultiConfigParsed):
+        # We need to expand SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS in each of the multiconfig data stores
+        # own contexts so the variables get expanded correctly for that arch, then inject back into
+        # the main data store.
+        deps = []
+        for config in e.mcdata:
+            deps.append(e.mcdata[config].getVar("SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS"))
+        deps = " ".join(deps)
+        e.mcdata[''].setVar("SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS", deps)
+
     if isinstance(e, bb.event.BuildStarted):
         localdata = bb.data.createCopy(e.data)
         statuslines = []

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Openembedded-commits mailing list