]> code.ossystems Code Review - meta-freescale.git/commitdiff
machine-overrides-extender.bbclass: Postpone overrides processing
authorOtavio Salvador <otavio@ossystems.com.br>
Mon, 2 Jul 2018 23:24:11 +0000 (20:24 -0300)
committerOtavio Salvador <otavio@ossystems.com.br>
Tue, 3 Jul 2018 12:17:52 +0000 (09:17 -0300)
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 <otavio@ossystems.com.br>
classes/machine-overrides-extender.bbclass

index 6c2ec32e13feae7390a71359bde16c746cb57839..7aaae8587b87b22efb63e6cdc341f69e5cd3a019 100644 (file)
 #
 # 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