From 62e5c0d3bc93fb8fbb04fb690c1b492a3ba7446e Mon Sep 17 00:00:00 2001 From: Will Page Date: Tue, 13 Aug 2019 11:37:15 -0700 Subject: 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 https://bugzilla.yoctoproject.org/show_bug.cgi?id=13469 . (From OE-Core rev: 42b44fdd9e63b8d39cf83baecec08328275558ff) Signed-off-by: Will Page Signed-off-by: Richard Purdie --- meta/classes/uboot-extlinux-config.bbclass | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/meta/classes/uboot-extlinux-config.bbclass b/meta/classes/uboot-extlinux-config.bbclass index b5b1a81dfc..f4bf94be04 100644 --- a/meta/classes/uboot-extlinux-config.bbclass +++ b/meta/classes/uboot-extlinux-config.bbclass @@ -104,13 +104,16 @@ python do_create_extlinux_config() { if default: cfgfile.write('DEFAULT %s\n' % (default)) - for label in labels.split(): + # Need to deconflict the labels with existing overrides + label_overrides = labels.split() + default_overrides = localdata.getVar('OVERRIDES').split(':') + # We're keeping all the existing overrides that aren't used as a label + # an override for that label will be added back in while we're processing that label + keep_overrides = list(filter(lambda x: x not in label_overrides, default_overrides)) - overrides = localdata.getVar('OVERRIDES') - if not overrides: - bb.fatal('OVERRIDES not defined') + for label in labels.split(): - localdata.setVar('OVERRIDES', label + ':' + overrides) + localdata.setVar('OVERRIDES', ':'.join(keep_overrides + [label])) extlinux_console = localdata.getVar('UBOOT_EXTLINUX_CONSOLE') -- cgit 1.2.3-korg