[meta-freescale] [PATCH 1/5] machine-overrides-extender.bbclass: Add filter out support

Otavio Salvador otavio at ossystems.com.br
Fri Mar 24 13:00:09 PDT 2017


The allow easier enablement of mainline BSP support, we need to allow
for specific overrides to be filtered out, before and during the
extending process.

The new MACHINEOVERRIDES_EXTENDER_FILTER_OUT variable does exactly
this and will be used in a subsequent commit to enable the
'use-mainline-bsp' override.

Signed-off-by: Otavio Salvador <otavio at ossystems.com.br>
---

 classes/machine-overrides-extender.bbclass | 29 ++++++++++++++++++++++++-----
 1 file changed, 24 insertions(+), 5 deletions(-)

diff --git a/classes/machine-overrides-extender.bbclass b/classes/machine-overrides-extender.bbclass
index 89ff99cf..f333a0fc 100644
--- a/classes/machine-overrides-extender.bbclass
+++ b/classes/machine-overrides-extender.bbclass
@@ -3,21 +3,40 @@
 #
 # This allow to grouping of different settings for similar platforms.
 #
-# To use the class, specify, for example:
+# To indicate that a SoC contains following set of overrides, you can use:
 #
 # MACHINEOVERRIDES_EXTENDER_soc = "group1:group2"
 #
-# Copyright 2016 (C) O.S. Systems Software LTDA.
+# However to indicate that an override replaces a set of other
+# overrides, you can use:
+#
+# MACHINEOVERRIDES_EXTENDER_FILTER_OUT_override = "group1 group2"
+#
+# Copyright 2016-2017 (C) O.S. Systems Software LTDA.
 
 def machine_overrides_extender(d):
     machine_overrides = (d.getVar('MACHINEOVERRIDES', True) or '').split(':')
-    for o in machine_overrides:
-        extender = d.getVar('MACHINEOVERRIDES_EXTENDER_%s' % o, True)
+
+    # Gather the list of overrides to filter out
+    machine_overrides_filter_out = []
+    for override in machine_overrides:
+        machine_overrides_filter_out += (d.getVar('MACHINEOVERRIDES_EXTENDER_FILTER_OUT_%s' % override, True) or '').split()
+
+    # Drop any overrides of filter_out prior extending
+    machine_overrides = [o for o in machine_overrides if o not in machine_overrides_filter_out]
+
+    for override in machine_overrides:
+        extender = d.getVar('MACHINEOVERRIDES_EXTENDER_%s' % override, True)
+
         if extender:
             extender = extender.split(':')
+
+            # Drop any extension if in filter_out
+            extender = [e for e in extender if e not in machine_overrides_filter_out]
+
             extender.reverse()
             if not set(extender).issubset(set(machine_overrides)):
-                index = machine_overrides.index(o)
+                index = machine_overrides.index(override)
                 for e in extender:
                     machine_overrides.insert(index, e)
     d.setVar('MACHINEOVERRIDES', ':'.join(machine_overrides))
-- 
2.12.1



More information about the meta-freescale mailing list