[OE-core] [warrior][PATCH] uboot: fixes to uboot-extlinux-config attribute values
Schrempf Frieder
frieder.schrempf at kontron.de
Thu Sep 19 12:17:11 UTC 2019
Can this patch be picked up for warrior, please?
I'm not able to create working extlinux configs with multiple labels.
Thanks,
Frieder
On 12.09.19 17:02, Schrempf Frieder wrote:
> From: Will Page <wpage at polysync.io>
>
> 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 .
>
> Signed-off-by: Will Page <wpage at polysync.io>
> Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
> ---
> 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')
>
>
More information about the Openembedded-core
mailing list