On May 26, 2020, Martin Liška <mli...@suse.cz> wrote: > On 5/26/20 12:15 PM, Pierre-Marie de Rodat wrote: >>> * contracts.adb, einfo.adb, exp_ch9.adb, sem_ch12.adb,
> It's not supported right now and it will make the filename parsing > much more complicated. Another colleague recently run into a problem with either: * $filename <$case>: or * $filename [$condition]: I can't recall which one it was, but the following patch is supposed to implement both. Alas, I couldn't figure out how to test it: git_check_commit.py is failing with: Traceback (most recent call last): File "contrib/gcc-changelog/git_check_commit.py", line 38, in <module> not args.non_strict_mode): File "/l/tmp/build/gcc/contrib/gcc-changelog/git_repository.py", line 57, in parse_git_revisions elif file.renamed_file: AttributeError: 'Diff' object has no attribute 'renamed_file' accept <case> and [cond] in ChangeLog From: Alexandre Oliva <ol...@adacore.com> Only '(' and ':' currently terminate file lists in ChangeLog entries in the ChangeLog parser. This rules out such legitimate entries as: * filename <CASE>: * filename [COND]: This patch extends the ChangeLog parser to recognize these forms. for contrib/ChangeLog * gcc-changelog/git_commit.py: Support CASE and COND. --- contrib/gcc-changelog/git_commit.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/contrib/gcc-changelog/git_commit.py b/contrib/gcc-changelog/git_commit.py index 4a78793..537c667 100755 --- a/contrib/gcc-changelog/git_commit.py +++ b/contrib/gcc-changelog/git_commit.py @@ -154,6 +154,7 @@ changelog_regex = re.compile(r'^(?:[fF]or +)?([a-z0-9+-/]*)ChangeLog:?') pr_regex = re.compile(r'\tPR (?P<component>[a-z+-]+\/)?([0-9]+)$') dr_regex = re.compile(r'\tDR ([0-9]+)$') star_prefix_regex = re.compile(r'\t\*(?P<spaces>\ *)(?P<content>.*)') +end_of_location_regex = re.compile(r'[[<(:]') LINE_LIMIT = 100 TAB_WIDTH = 8 @@ -203,14 +204,13 @@ class ChangeLogEntry: line = m.group('content') if in_location: - # Strip everything that is not a filename in "line": entities - # "(NAME)", entry text (the colon, if present, and anything - # that follows it). - if '(' in line: - line = line[:line.index('(')] - in_location = False - if ':' in line: - line = line[:line.index(':')] + # Strip everything that is not a filename in "line": + # entities "(NAME)", cases "<PATTERN>", conditions + # "[COND]", entry text (the colon, if present, and + # anything that follows it). + m = end_of_location_regex.search(line) + if m: + line = line[:m.start()] in_location = False # At this point, all that's left is a list of filenames -- Alexandre Oliva, freedom fighter he/him https://FSFLA.org/blogs/lxo/ Free Software Evangelist Stallman was right, but he's left :( GNU Toolchain Engineer Live long and free, and prosper ethically