From 7dc760ad8b3b8d0f8562d60b9a60114f332abbea Mon Sep 17 00:00:00 2001 From: Otavio Salvador Date: Thu, 23 Mar 2017 11:54:46 -0300 Subject: machine-overrides-extender.bbclass: Add filter out support 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 --- classes/machine-overrides-extender.bbclass | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) (limited to 'classes/machine-overrides-extender.bbclass') 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)) -- cgit v1.2.3-54-g00ecf