ACK: [SRU][M][L][J][PATCH] UBUNTU: [Packaging] kconfig/annotations.py: support older way of merging dicts
Tim Gardner
tim.gardner at canonical.com
Tue May 23 15:17:08 UTC 2023
On 5/23/23 09:09, Andrea Righi 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()))
Acked-by: Tim Gardner <tim.gardner at canonical.com>
--
-----------
Tim Gardner
Canonical, Inc
More information about the kernel-team
mailing list