[gnome-continuous-yocto/gnomeostree-3.28-rocko: 6638/8267] base: Add MultiConfigParsed handler to deal with unstable build signatures
- From: Emmanuele Bassi <ebassi src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-continuous-yocto/gnomeostree-3.28-rocko: 6638/8267] base: Add MultiConfigParsed handler to deal with unstable build signatures
- Date: Sun, 17 Dec 2017 05:07:34 +0000 (UTC)
commit a12d9164ead57569269ad6d3e21332e95f73c04f
Author: Richard Purdie <richard purdie linuxfoundation org>
Date: 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.
(From OE-Core rev: 7267e7c000c76c44d09835d4cd2bc485b6a39a2a)
Signed-off-by: Richard Purdie <richard purdie linuxfoundation org>
meta/classes/base.bbclass | 12 +++++++++++-
1 files changed, 11 insertions(+), 1 deletions(-)
---
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 = []
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]