diff options
Diffstat (limited to 'classes/machine-overrides-extender.bbclass')
-rw-r--r-- | classes/machine-overrides-extender.bbclass | 30 |
1 files changed, 25 insertions, 5 deletions
diff --git a/classes/machine-overrides-extender.bbclass b/classes/machine-overrides-extender.bbclass index 876ddd10..58cb45b1 100644 --- a/classes/machine-overrides-extender.bbclass +++ b/classes/machine-overrides-extender.bbclass @@ -12,19 +12,17 @@ # # MACHINEOVERRIDES_EXTENDER_FILTER_OUT:override = "group1 group2" # -# Copyright 2016-2018 (C) O.S. Systems Software LTDA. +# Copyright 2016-2018, 2022 (C) O.S. Systems Software LTDA. def machine_overrides_extender(d): machine_overrides = (d.getVar('PRISTINE_MACHINEOVERRIDES') or '').split(':') # Gather the list of overrides to filter out - machine_overrides_filter_out = [] + machine_overrides_filter_out = (d.getVar('MACHINEOVERRIDES_EXTENDER_FILTER_OUT') or '').split() for override in machine_overrides: machine_overrides_filter_out += (d.getVar('MACHINEOVERRIDES_EXTENDER_FILTER_OUT:%s' % override) 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] - + # Extend the overrides for override in machine_overrides: extender = d.getVar('MACHINEOVERRIDES_EXTENDER:%s' % override) @@ -40,6 +38,9 @@ def machine_overrides_extender(d): for e in extender: machine_overrides.insert(index, e) + # Drop any overrides of filter_out after extending + machine_overrides = [o for o in machine_overrides if o not in machine_overrides_filter_out] + return ':'.join(machine_overrides) python machine_overrides_extender_handler() { @@ -54,3 +55,22 @@ python machine_overrides_extender_handler() { machine_overrides_extender_handler[eventmask] = "bb.event.ConfigParsed" addhandler machine_overrides_extender_handler + +python machineoverrides_filtered_out_qa_handler() { + filtered_out = (d.getVar('MACHINEOVERRIDES_EXTENDER_FILTER_OUT') or "").split() + qa_error = d.getVar('MACHINEOVERRIDES_FILTERED_OUT_QA_ERROR') + + for var in d.overridedata: + # We need to allow the overrides being used in the extender + # so avoid processing it. + if 'MACHINEOVERRIDES_EXTENDER' in var: + continue + + for (r, o) in d.overridedata[var]: + common = list(set(o.split(":")).intersection(filtered_out)) + if len(common) > 0: + raise bb.parse.SkipRecipe(qa_error % common) +} + +machineoverrides_filtered_out_qa_handler[eventmask] = "bb.event.RecipeParsed" +addhandler machineoverrides_filtered_out_qa_handler |