aboutsummaryrefslogtreecommitdiffstats
path: root/classes/machine-overrides-extender.bbclass
diff options
context:
space:
mode:
Diffstat (limited to 'classes/machine-overrides-extender.bbclass')
-rw-r--r--classes/machine-overrides-extender.bbclass38
1 files changed, 29 insertions, 9 deletions
diff --git a/classes/machine-overrides-extender.bbclass b/classes/machine-overrides-extender.bbclass
index 4b7d66d5..58cb45b1 100644
--- a/classes/machine-overrides-extender.bbclass
+++ b/classes/machine-overrides-extender.bbclass
@@ -5,28 +5,26 @@
#
# To indicate that a SoC contains following set of overrides, you can use:
#
-# MACHINEOVERRIDES_EXTENDER_soc = "group1:group2"
+# MACHINEOVERRIDES_EXTENDER:soc = "group1:group2"
#
# However to indicate that an override replaces a set of other
# overrides, you can use:
#
-# MACHINEOVERRIDES_EXTENDER_FILTER_OUT_override = "group1 group2"
+# 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]
+ machine_overrides_filter_out += (d.getVar('MACHINEOVERRIDES_EXTENDER_FILTER_OUT:%s' % override) or '').split()
+ # Extend the overrides
for override in machine_overrides:
- extender = d.getVar('MACHINEOVERRIDES_EXTENDER_%s' % override)
+ extender = d.getVar('MACHINEOVERRIDES_EXTENDER:%s' % override)
if extender:
extender = extender.split(':')
@@ -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