<div dir="ltr"><div>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. <br></div><div><br></div><div>Thanks, <br></div><div>- Luke<br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, May 23, 2023 at 8:09 AM Andrea Righi <<a href="mailto:andrea.righi@canonical.com">andrea.righi@canonical.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">BugLink: <a href="https://bugs.launchpad.net/bugs/2020531" rel="noreferrer" target="_blank">https://bugs.launchpad.net/bugs/2020531</a><br>
<br>
The '|=' update operator for merging dicts is available starting in<br>
python 3.9 however in focal we have python 3.8, which causes the<br>
annotation parsing script to crash.<br>
<br>
Support also the old way of merging dicts available since python 3.5<br>
that uses dict unpacking, e.g. dict1 = {**dict1, **dict2}<br>
<br>
Signed-off-by: Luke Nowakowski-Krijger <<a href="mailto:luke.nowakowskikrijger@canonical.com" target="_blank">luke.nowakowskikrijger@canonical.com</a>><br>
Signed-off-by: Andrea Righi <<a href="mailto:andrea.righi@canonical.com" target="_blank">andrea.righi@canonical.com</a>><br>
---<br>
debian/scripts/misc/kconfig/annotations.py | 18 ++++++++++++++----<br>
1 file changed, 14 insertions(+), 4 deletions(-)<br>
<br>
diff --git a/debian/scripts/misc/kconfig/annotations.py b/debian/scripts/misc/kconfig/annotations.py<br>
index dcc133dbbf62..b521bd0c7135 100644<br>
--- a/debian/scripts/misc/kconfig/annotations.py<br>
+++ b/debian/scripts/misc/kconfig/annotations.py<br>
@@ -105,7 +105,10 @@ class Annotation(Config):<br>
m = re.match(r'.* policy<(.*?)>', line)<br>
if m:<br>
match = True<br>
- entry['policy'] |= literal_eval(m.group(1))<br>
+ try:<br>
+ entry['policy'] |= literal_eval(m.group(1))<br>
+ except TypeError:<br>
+ entry['policy'] = {**entry['policy'], **literal_eval(m.group(1))}<br>
<br>
m = re.match(r'.* note<(.*?)>', line)<br>
if m:<br>
@@ -204,7 +207,10 @@ class Annotation(Config):<br>
# Determine if we need to import all configs or a single config<br>
if not configs:<br>
configs = c.config.keys()<br>
- configs |= self.search_config(arch=arch, flavour=flavour).keys()<br>
+ try:<br>
+ configs |= self.search_config(arch=arch, flavour=flavour).keys()<br>
+ except TypeError:<br>
+ configs = {**configs, **self.search_config(arch=arch, flavour=flavour).keys()}<br>
<br>
# Import configs from the Kconfig object into Annotations<br>
if flavour is not None:<br>
@@ -335,8 +341,12 @@ class Annotation(Config):<br>
# If new_val is a subset of old_val, skip it<br>
old_val = tmp_a.config.get(conf)<br>
if old_val and 'policy' in old_val:<br>
- if old_val['policy'] == old_val['policy'] | new_val['policy']:<br>
- continue<br>
+ try:<br>
+ if old_val['policy'] == old_val['policy'] | new_val['policy']:<br>
+ continue<br>
+ except TypeError:<br>
+ if old_val['policy'] == {**old_val['policy'], **new_val['policy']}:<br>
+ continue<br>
<br>
# Write out the policy (and note) line(s)<br>
val = dict(sorted(new_val['policy'].items()))<br>
-- <br>
2.39.2<br>
<br>
<br>
-- <br>
kernel-team mailing list<br>
<a href="mailto:kernel-team@lists.ubuntu.com" target="_blank">kernel-team@lists.ubuntu.com</a><br>
<a href="https://lists.ubuntu.com/mailman/listinfo/kernel-team" rel="noreferrer" target="_blank">https://lists.ubuntu.com/mailman/listinfo/kernel-team</a><br>
</blockquote></div></div>