UBUNTU: [Packaging] kconfig/annotations.py: support older way of merging dicts
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@canonical.com> Signed-off-by: Andrea Righi <andrea.righi@canonical.com>
This commit is contained in:
committed by
Paolo Pisati
parent
ebc2f12e8c
commit
b967072613
+14
-4
@@ -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()))
|
||||
|
||||
Reference in New Issue
Block a user