APPLIED[L/J]: [SRU][M][L][J][PATCH] UBUNTU: [Packaging] kconfig/annotations.py: support older way of merging dicts
Luke Nowakowski-Krijger
luke.nowakowskikrijger at canonical.com
Tue May 23 19:49:03 UTC 2023
Applied to lunar and jammy linux master-next as well as directly to
focal:linux-hwe-5.15 master-next to pick up for this cycle.
Thanks,
- Luke
On Tue, May 23, 2023 at 8:09 AM Andrea Righi <andrea.righi at canonical.com>
wrote:
> BugLink: https://bugs.launchpad.net/bugs/2020531
>
> The '|=' update operator for merging dicts is available starting in
> python 3.9 however in focal we have python 3.8, which causes the
> annotation parsing script to crash.
>
> Support also the old way of merging dicts available since python 3.5
> that uses dict unpacking, e.g. dict1 = {**dict1, **dict2}
>
> Signed-off-by: Luke Nowakowski-Krijger <
> luke.nowakowskikrijger at canonical.com>
> Signed-off-by: Andrea Righi <andrea.righi at canonical.com>
> ---
> debian/scripts/misc/kconfig/annotations.py | 18 ++++++++++++++----
> 1 file changed, 14 insertions(+), 4 deletions(-)
>
> diff --git a/debian/scripts/misc/kconfig/annotations.py
> b/debian/scripts/misc/kconfig/annotations.py
> index dcc133dbbf62..b521bd0c7135 100644
> --- a/debian/scripts/misc/kconfig/annotations.py
> +++ b/debian/scripts/misc/kconfig/annotations.py
> @@ -105,7 +105,10 @@ class Annotation(Config):
> m = re.match(r'.* policy<(.*?)>', line)
> if m:
> match = True
> - entry['policy'] |= literal_eval(m.group(1))
> + try:
> + entry['policy'] |= literal_eval(m.group(1))
> + except TypeError:
> + entry['policy'] = {**entry['policy'],
> **literal_eval(m.group(1))}
>
> m = re.match(r'.* note<(.*?)>', line)
> if m:
> @@ -204,7 +207,10 @@ class Annotation(Config):
> # Determine if we need to import all configs or a single config
> if not configs:
> configs = c.config.keys()
> - configs |= self.search_config(arch=arch,
> flavour=flavour).keys()
> + try:
> + configs |= self.search_config(arch=arch,
> flavour=flavour).keys()
> + except TypeError:
> + configs = {**configs, **self.search_config(arch=arch,
> flavour=flavour).keys()}
>
> # Import configs from the Kconfig object into Annotations
> if flavour is not None:
> @@ -335,8 +341,12 @@ class Annotation(Config):
> # If new_val is a subset of old_val, skip it
> old_val = tmp_a.config.get(conf)
> if old_val and 'policy' in old_val:
> - if old_val['policy'] == old_val['policy'] |
> new_val['policy']:
> - continue
> + try:
> + if old_val['policy'] == old_val['policy'] |
> new_val['policy']:
> + continue
> + except TypeError:
> + if old_val['policy'] == {**old_val['policy'],
> **new_val['policy']}:
> + continue
>
> # Write out the policy (and note) line(s)
> val = dict(sorted(new_val['policy'].items()))
> --
> 2.39.2
>
>
> --
> kernel-team mailing list
> kernel-team at lists.ubuntu.com
> https://lists.ubuntu.com/mailman/listinfo/kernel-team
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.ubuntu.com/archives/kernel-team/attachments/20230523/b6a186ca/attachment.html>
More information about the kernel-team
mailing list