From b0cd2fe43a8685809f3dc18dc7851192398986ff Mon Sep 17 00:00:00 2001 From: Otavio Salvador Date: Mon, 2 Jul 2018 20:24:11 -0300 Subject: [PATCH] machine-overrides-extender.bbclass: Postpone overrides processing We need to keep a reference to the original MACHINEOVERRIDES value so it can be reprocessed as need. This allow the compatibility with existing BSP's while fixing the complex multilib interactions. I'd like to record that Richard Purdie was key to solve this issue. Its implications were beyond my understanding until he guided me and provided a prototype fix. Signed-off-by: Otavio Salvador (cherry picked from commit d227cc133101ecbce25fc4f775863107537f883d) --- classes/machine-overrides-extender.bbclass | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/classes/machine-overrides-extender.bbclass b/classes/machine-overrides-extender.bbclass index 6c2ec32e..7aaae858 100644 --- a/classes/machine-overrides-extender.bbclass +++ b/classes/machine-overrides-extender.bbclass @@ -12,14 +12,10 @@ # # MACHINEOVERRIDES_EXTENDER_FILTER_OUT_override = "group1 group2" # -# Copyright 2016-2017 (C) O.S. Systems Software LTDA. +# Copyright 2016-2018 (C) O.S. Systems Software LTDA. def machine_overrides_extender(d): - variant = d.getVar("BBEXTENDVARIANT") - if variant: - return - - machine_overrides = (d.getVar('MACHINEOVERRIDES', True) or '').split(':') + machine_overrides = (d.getVar('PRISTINE_MACHINEOVERRIDES', True) or '').split(':') # Gather the list of overrides to filter out machine_overrides_filter_out = [] @@ -43,11 +39,18 @@ def machine_overrides_extender(d): index = machine_overrides.index(override) for e in extender: machine_overrides.insert(index, e) - d.setVar('MACHINEOVERRIDES', ':'.join(machine_overrides)) + + return ':'.join(machine_overrides) python machine_overrides_extender_handler() { - machine_overrides_extender(e.data) + # Ideally we'd use a separate variable name for this however + # historically NXP BSPs used this. We save it to a known good name + # so we can reprocess OVERRIDES if/as/when needed. + d.renameVar("MACHINEOVERRIDES", "PRISTINE_MACHINEOVERRIDES") + + # Now we add our own function intercept in instead + d.setVar("MACHINEOVERRIDES", "${@machine_overrides_extender(d)}:") } -machine_overrides_extender_handler[eventmask] = "bb.event.RecipePreFinalise" +machine_overrides_extender_handler[eventmask] = "bb.event.ConfigParsed" addhandler machine_overrides_extender_handler -- 2.40.1