path: root/meta/classes/uboot-extlinux-config.bbclass
diff options
authorWill Page <>2019-08-13 18:37:15 (GMT)
committerRichard Purdie <>2019-08-14 16:33:49 (GMT)
commit62e5c0d3bc93fb8fbb04fb690c1b492a3ba7446e (patch)
treeaf740e877dd59118973be26ef5328a40975ac66d /meta/classes/uboot-extlinux-config.bbclass
parent8af44421749727f755185303ebec8d2cc3b9b9aa (diff)
uboot: fixes to uboot-extlinux-config attribute values
The way this class uses overrides to support generation of multiple sections is subject to two different issues: 1) labels that conflict with existing override names causing the value for the conflicting label to be set for all labels, and 2) reusing the override list through each iteration, prepending each new label to the list of overrides makes earlier labels' value take precedence over later labels, making later labels virtually impossible to customize. The first issue is resolved by removing all label names from overrides before iterating over labels. The second issue is resolved by generating a fresh list of overrides with only the current label added. The current label is also appended to the list of overrides instead of prepended, which makes it the highest priority override. This is matches the behavior of devtool-source.bbclass, which similarly monkey-patches overrides. Closes . (From OE-Core rev: 42b44fdd9e63b8d39cf83baecec08328275558ff) Signed-off-by: Will Page <> Signed-off-by: Richard Purdie <>
Diffstat (limited to 'meta/classes/uboot-extlinux-config.bbclass')
1 files changed, 8 insertions, 5 deletions
diff --git a/meta/classes/uboot-extlinux-config.bbclass b/meta/classes/uboot-extlinux-config.bbclass
index b5b1a81..f4bf94b 100644
--- a/meta/classes/uboot-extlinux-config.bbclass
+++ b/meta/classes/uboot-extlinux-config.bbclass
@@ -104,13 +104,16 @@ python do_create_extlinux_config() {
104 if default: 104 if default:
105 cfgfile.write('DEFAULT %s\n' % (default)) 105 cfgfile.write('DEFAULT %s\n' % (default))
106 106
107 for label in labels.split(): 107 # Need to deconflict the labels with existing overrides
108 label_overrides = labels.split()
109 default_overrides = localdata.getVar('OVERRIDES').split(':')
110 # We're keeping all the existing overrides that aren't used as a label
111 # an override for that label will be added back in while we're processing that label
112 keep_overrides = list(filter(lambda x: x not in label_overrides, default_overrides))
108 113
109 overrides = localdata.getVar('OVERRIDES') 114 for label in labels.split():
110 if not overrides:
111 bb.fatal('OVERRIDES not defined')
112 115
113 localdata.setVar('OVERRIDES', label + ':' + overrides) 116 localdata.setVar('OVERRIDES', ':'.join(keep_overrides + [label]))
114 117
115 extlinux_console = localdata.getVar('UBOOT_EXTLINUX_CONSOLE') 118 extlinux_console = localdata.getVar('UBOOT_EXTLINUX_CONSOLE')
116 119