NACK: [Unstable/lunar][PATCH] UBUNTU: [Packaging] annotations: Handle single-line annoation rules
Juerg Haefliger
juerg.haefliger at canonical.com
Mon Feb 6 07:08:52 UTC 2023
Doesn't apply due to local commit. Will resend.
...Juerg
> The old annotations file allowed single-line rules such as:
> CONFIG_FOO policy<'amd64': 'n'> note<LP: #123456>
>
> The new annotations parser doesn't support that, so add it.
>
> Signed-off-by: Juerg Haefliger <juerg.haefliger at canonical.com>
> ---
> debian/scripts/misc/kconfig/annotations.py | 26 +++++++++++++---------
> 1 file changed, 15 insertions(+), 11 deletions(-)
>
> diff --git a/debian/scripts/misc/kconfig/annotations.py b/debian/scripts/misc/kconfig/annotations.py
> index 2f5fd19dd6d7..2bbc1413aeed 100644
> --- a/debian/scripts/misc/kconfig/annotations.py
> +++ b/debian/scripts/misc/kconfig/annotations.py
> @@ -56,8 +56,8 @@ class Annotation(Config):
> # Convert multiple spaces to single space to simplifly parsing
> data = re.sub(r' *', ' ', data)
>
> - # Handle includes (recursively)
> for line in data.splitlines():
> + # Handle includes (recursively)
> m = re.match(r'^include\s+"?([^"]*)"?', line)
> if m:
> self.include.append(m.group(1))
> @@ -65,24 +65,28 @@ class Annotation(Config):
> include_data = self._load(include_fname)
> self._parse_body(include_data)
> else:
> - # Skip empty, non-policy and non-note lines
> - if re.match('.* policy<', line) or re.match('.* note<', line):
> + # Handle policy and note lines
> + if re.match(r'.* (policy|note)<', line):
> try:
> - # Parse single policy or note rule
> conf = line.split(' ')[0]
> if conf in self.config:
> entry = self.config[conf]
> else:
> entry = {'policy': {}}
> - m = re.match(r'.*policy<(.*?)>', line)
> +
> + match = False
> + m = re.match(r'.* policy<(.*?)>', line)
> if m:
> + match = True
> entry['policy'] |= literal_eval(m.group(1))
> - else:
> - m = re.match(r'.*note<(.*?)>', line)
> - if m:
> - entry['note'] = "'" + m.group(1).replace("'", '') + "'"
> - else:
> - raise Exception('syntax error')
> +
> + m = re.match(r'.* note<(.*?)>', line)
> + if m:
> + match = True
> + entry['note'] = "'" + m.group(1).replace("'", '') + "'"
> +
> + if not match:
> + raise Exception('syntax error')
> self.config[conf] = entry
> except Exception as e:
> raise Exception(str(e) + f', line = {line}')
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 833 bytes
Desc: OpenPGP digital signature
URL: <https://lists.ubuntu.com/archives/kernel-team/attachments/20230206/5eb3ea8c/attachment.sig>
More information about the kernel-team
mailing list