[SRU][M][L][J][PATCH] UBUNTU: [Packaging] kconfig/annotations.py: support older way of merging dicts
Andrea Righi
andrea.righi at canonical.com
Tue May 23 15:09:06 UTC 2023
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
More information about the kernel-team
mailing list