]> code.ossystems Code Review - meta-freescale.git/commitdiff
machine-overrides-extender.bbclass: Add filter out support
authorOtavio Salvador <otavio@ossystems.com.br>
Thu, 23 Mar 2017 14:54:46 +0000 (11:54 -0300)
committerOtavio Salvador <otavio@ossystems.com.br>
Mon, 27 Mar 2017 14:52:44 +0000 (11:52 -0300)
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.

Change-Id: Ieaec9d5eb27ccc73b7b0097cb365c519978bd080
Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
classes/machine-overrides-extender.bbclass

index 89ff99cf737c4ae23d230cfab89821246abcfd9a..f333a0fcb7defb681d06e93e42c7712f221ee768 100644 (file)
@@ -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))