[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