mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-19 01:40:39 +08:00
gcc-changelog: Add warning for auto-added files
git_email.py prints now a warning for files added automatically. git_check_commit.py does likewise but only with --verbose. It prints one line per ChangeLog file, either stating the file or if more than one the number of files. contrib/ChangeLog: * gcc-changelog/git_check_commit.py (__main__): With -v print a warning for the auto-added files. * gcc-changelog/git_commit.py (GitCommit.__init__): Add self.warnings. (GitCommit.check_mentioned_files): Add warning for auto-added files. (GitCommit.print_warnings): New function. * gcc-changelog/git_email.py (__main__): Remove bogus argument to GitEmail constructor; print auto-added-files warning. * gcc-changelog/test_email.py (test_auto_add_file_1, test_auto_add_file_2): New tests. * gcc-changelog/test_patches.txt: Add two test cases.
This commit is contained in:
parent
03fb35f875
commit
2b2cec58ff
@ -42,7 +42,13 @@ for git_commit in parse_git_revisions(args.git_path, args.revisions):
|
||||
if git_commit.success:
|
||||
if args.print_changelog:
|
||||
git_commit.print_output()
|
||||
if args.verbose and git_commit.warnings:
|
||||
for warning in git_commit.warnings:
|
||||
print('WARN: %s' % warning)
|
||||
else:
|
||||
if args.verbose and git_commit.warnings:
|
||||
for warning in git_commit.warnings:
|
||||
print('WARN: %s' % warning)
|
||||
for error in git_commit.errors:
|
||||
print('ERR: %s' % error)
|
||||
if args.verbose and error.details:
|
||||
|
@ -22,6 +22,7 @@ import difflib
|
||||
import os
|
||||
import re
|
||||
import sys
|
||||
from collections import defaultdict
|
||||
|
||||
default_changelog_locations = {
|
||||
'c++tools',
|
||||
@ -304,6 +305,7 @@ class GitCommit:
|
||||
self.changes = None
|
||||
self.changelog_entries = []
|
||||
self.errors = []
|
||||
self.warnings = []
|
||||
self.top_level_authors = []
|
||||
self.co_authors = []
|
||||
self.top_level_prs = []
|
||||
@ -706,6 +708,7 @@ class GitCommit:
|
||||
msg += f' (did you mean "{candidates[0]}"?)'
|
||||
details = '\n'.join(difflib.Differ().compare([file], [candidates[0]])).rstrip()
|
||||
self.errors.append(Error(msg, file, details))
|
||||
auto_add_warnings = defaultdict(list)
|
||||
for file in sorted(changed_files - mentioned_files):
|
||||
if not self.in_ignored_location(file):
|
||||
if file in self.new_files:
|
||||
@ -738,6 +741,7 @@ class GitCommit:
|
||||
file = file[len(entry.folder):].lstrip('/')
|
||||
entry.lines.append('\t* %s: New file.' % file)
|
||||
entry.files.append(file)
|
||||
auto_add_warnings[entry.folder].append(file)
|
||||
else:
|
||||
msg = 'new file in the top-level folder not mentioned in a ChangeLog'
|
||||
self.errors.append(Error(msg, file))
|
||||
@ -755,6 +759,11 @@ class GitCommit:
|
||||
if pattern not in used_patterns:
|
||||
error = "pattern doesn't match any changed files"
|
||||
self.errors.append(Error(error, pattern))
|
||||
for entry, val in auto_add_warnings.items():
|
||||
if len(val) == 1:
|
||||
self.warnings.append(f"Auto-added new file '{entry}/{val[0]}'")
|
||||
else:
|
||||
self.warnings.append(f"Auto-added {len(val)} new files in '{entry}'")
|
||||
|
||||
def check_for_correct_changelog(self):
|
||||
for entry in self.changelog_entries:
|
||||
@ -830,6 +839,12 @@ class GitCommit:
|
||||
for error in self.errors:
|
||||
print(error)
|
||||
|
||||
def print_warnings(self):
|
||||
if self.warnings:
|
||||
print('Warnings:')
|
||||
for warning in self.warnings:
|
||||
print(warning)
|
||||
|
||||
def check_commit_email(self):
|
||||
# Parse 'Martin Liska <mliska@suse.cz>'
|
||||
email = self.info.author.split(' ')[-1].strip('<>')
|
||||
|
@ -119,11 +119,13 @@ if __name__ == '__main__':
|
||||
|
||||
success = 0
|
||||
for full in sorted(allfiles):
|
||||
email = GitEmail(full, False)
|
||||
email = GitEmail(full)
|
||||
print(email.filename)
|
||||
if email.success:
|
||||
success += 1
|
||||
print(' OK')
|
||||
for warning in email.warnings:
|
||||
print(' WARN: %s' % warning)
|
||||
else:
|
||||
for error in email.errors:
|
||||
print(' ERR: %s' % error)
|
||||
@ -135,6 +137,7 @@ if __name__ == '__main__':
|
||||
if email.success:
|
||||
print('OK')
|
||||
email.print_output()
|
||||
email.print_warnings()
|
||||
else:
|
||||
if not email.info.lines:
|
||||
print('Error: patch contains no parsed lines', file=sys.stderr)
|
||||
|
@ -461,3 +461,17 @@ class TestGccChangelog(unittest.TestCase):
|
||||
def test_CR_in_patch(self):
|
||||
email = self.from_patch_glob('0001-Add-M-character.patch')
|
||||
assert (email.errors[0].message == 'cannot find a ChangeLog location in message')
|
||||
|
||||
def test_auto_add_file_1(self):
|
||||
email = self.from_patch_glob('0001-Auto-Add-File.patch')
|
||||
assert not email.errors
|
||||
assert (len(email.warnings) == 1)
|
||||
assert (email.warnings[0]
|
||||
== "Auto-added new file 'libgomp/testsuite/libgomp.fortran/allocate-4.f90'")
|
||||
|
||||
def test_auto_add_file_2(self):
|
||||
email = self.from_patch_glob('0002-Auto-Add-File.patch')
|
||||
assert not email.errors
|
||||
assert (len(email.warnings) == 2)
|
||||
assert (email.warnings[0] == "Auto-added new file 'gcc/doc/gm2.texi'")
|
||||
assert (email.warnings[1] == "Auto-added 2 new files in 'gcc/m2'")
|
||||
|
@ -3636,3 +3636,99 @@ index 0000000..d75da75
|
||||
--
|
||||
2.38.1
|
||||
|
||||
=== 0001-Auto-Add-File.patch ====
|
||||
From e205ec03f0794aeac3e8a89e947c12624d5a274e Mon Sep 17 00:00:00 2001
|
||||
From: Tobias Burnus <tobias@codesourcery.com>
|
||||
Date: Thu, 15 Dec 2022 12:25:07 +0100
|
||||
Subject: [PATCH] libgfortran's ISO_Fortran_binding.c: Use GCC11 version for
|
||||
backward-only code [PR108056]
|
||||
|
||||
libgfortran/ChangeLog:
|
||||
|
||||
PR libfortran/108056
|
||||
* runtime/ISO_Fortran_binding.c (cfi_desc_to_gfc_desc,
|
||||
gfc_desc_to_cfi_desc): Mostly revert to GCC 11 version for
|
||||
those backward-compatiblity-only functions.
|
||||
---
|
||||
libgfortran/runtime/ISO_Fortran_binding.c | 151 +++---------------
|
||||
.../testsuite/libgomp.fortran/allocate-4.f90 | 42 +++++
|
||||
2 files changed, 64 insertions(+), 129 deletions(-)
|
||||
create mode 100644 libgomp/testsuite/libgomp.fortran/allocate-4.f90
|
||||
|
||||
diff --git a/libgfortran/runtime/ISO_Fortran_binding.c b/libgfortran/runtime/ISO_Fortran_binding.c
|
||||
index 342df4275b9..e63a717a69b 100644
|
||||
--- a/libgfortran/runtime/ISO_Fortran_binding.c
|
||||
+++ b/libgfortran/runtime/ISO_Fortran_binding.c
|
||||
@@ -41,1 +41,1 @@ export_proto(cfi_desc_to_gfc_desc);
|
||||
- signed char type;
|
||||
+ size_t type;
|
||||
diff --git a/libgomp/testsuite/libgomp.fortran/allocate-4.f90 b/libgomp/testsuite/libgomp.fortran/allocate-4.f90
|
||||
new file mode 100644
|
||||
index 00000000000..ddb507ba8e4
|
||||
--- /dev/null
|
||||
+++ b/libgomp/testsuite/libgomp.fortran/allocate-4.f90
|
||||
@@ -0,0 +1,1 @@
|
||||
+end
|
||||
--
|
||||
2.25.1
|
||||
|
||||
=== 0002-Auto-Add-File.patch ====
|
||||
From 1eee94d351774cdc2efc8ee508b82d065184c6ee Mon Sep 17 00:00:00 2001
|
||||
From: Gaius Mulley <gaiusmod2@gmail.com>
|
||||
Date: Wed, 14 Dec 2022 17:43:08 +0000
|
||||
Subject: [PATCH 363/400] Merge modula-2 front end onto gcc.
|
||||
|
||||
This commit merges the devel/modula2 into master.
|
||||
The libraries reside in libgm2, the compiler in gcc/m2
|
||||
and the testsuite in gcc/testsuite/gm2.
|
||||
|
||||
gcc/ChangeLog:
|
||||
|
||||
* configure.ac (HAVE_PYTHON): Test for Python3 added.
|
||||
* doc/install.texi: Add m2 as a language. (--disable-libgm2)
|
||||
|
||||
Signed-off-by: Gaius Mulley <gaiusmod2@gmail.com>
|
||||
---
|
||||
gcc/configure.ac | 15 +-
|
||||
gcc/doc/gm2.texi | 2838 ++
|
||||
gcc/doc/install.texi | 53 +-
|
||||
gcc/m2/COPYING.FDL | 397 +
|
||||
gcc/m2/COPYING.RUNTIME | 73 +
|
||||
diff --git a/gcc/configure.ac b/gcc/configure.ac
|
||||
index 7ca08726efa..5efbf11793c 100644
|
||||
--- a/gcc/configure.ac
|
||||
+++ b/gcc/configure.ac
|
||||
@@ -7651,3 +7665,2 @@ done
|
||||
[subdirs='$subdirs'])
|
||||
AC_OUTPUT
|
||||
-
|
||||
diff --git a/gcc/doc/gm2.texi b/gcc/doc/gm2.texi
|
||||
new file mode 100644
|
||||
index 00000000000..513fdd3ec7f
|
||||
--- /dev/null
|
||||
+++ b/gcc/doc/gm2.texi
|
||||
@@ -0,0 +1,1 @@
|
||||
+\input texinfo
|
||||
diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi
|
||||
index 89ff6a6734b..6884a74936b 100644
|
||||
--- a/gcc/doc/install.texi
|
||||
+++ b/gcc/doc/install.texi
|
||||
@@ -308,1 +308,2 @@ On some targets, @samp{libphobos} isn't enabled by default, but compiles
|
||||
|
||||
+@item @anchor{GM2-prerequisite}GM2
|
||||
diff --git a/gcc/m2/COPYING.FDL b/gcc/m2/COPYING.FDL
|
||||
new file mode 100644
|
||||
index 00000000000..9854856fa81
|
||||
--- /dev/null
|
||||
+++ b/gcc/m2/COPYING.FDL
|
||||
@@ -0,0 +1,1 @@
|
||||
+ GNU Free Documentation License
|
||||
diff --git a/gcc/m2/COPYING.RUNTIME b/gcc/m2/COPYING.RUNTIME
|
||||
new file mode 100644
|
||||
index 00000000000..649af5e573a
|
||||
--- /dev/null
|
||||
+++ b/gcc/m2/COPYING.RUNTIME
|
||||
@@ -0,0 +1,1 @@
|
||||
+GCC RUNTIME LIBRARY EXCEPTION
|
||||
--
|
||||
2.25.1
|
||||
|
Loading…
x
Reference in New Issue
Block a user