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 <ota...@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 -- _______________________________________________ meta-freescale mailing list meta-freescale@yoctoproject.org https://lists.yoctoproject.org/listinfo/meta-freescale