public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc(refs/vendors/redhat/heads/gcc-8-branch)] Sync gcc-changelog scripts.
@ 2021-04-23 10:18 Jakub Jelinek
0 siblings, 0 replies; 3+ messages in thread
From: Jakub Jelinek @ 2021-04-23 10:18 UTC (permalink / raw)
To: gcc-cvs
https://gcc.gnu.org/g:6003962f5b46a9768437be5b1bd292c85b7111c0
commit 6003962f5b46a9768437be5b1bd292c85b7111c0
Author: Martin Liska <mliska@suse.cz>
Date: Fri Nov 6 14:52:05 2020 +0100
Sync gcc-changelog scripts.
contrib/ChangeLog:
2020-11-06 Martin Liska <mliska@suse.cz>
* gcc-changelog/git_commit.py: Sync.
* gcc-changelog/git_email.py: Likewise.
* gcc-changelog/git_repository.py: Likewise.
* gcc-changelog/test_email.py: Likewise.
* gcc-changelog/test_patches.txt: Likewise.
* gcc-changelog/setup.cfg: New file.
Diff:
---
contrib/gcc-changelog/git_commit.py | 20 ++++-
contrib/gcc-changelog/git_email.py | 5 +-
contrib/gcc-changelog/git_repository.py | 2 +-
contrib/gcc-changelog/setup.cfg | 2 +
contrib/gcc-changelog/test_email.py | 19 +++++
contrib/gcc-changelog/test_patches.txt | 125 ++++++++++++++++++++++++++++++++
6 files changed, 167 insertions(+), 6 deletions(-)
diff --git a/contrib/gcc-changelog/git_commit.py b/contrib/gcc-changelog/git_commit.py
index 5a9cc4c7563..80ae0b2a77d 100755
--- a/contrib/gcc-changelog/git_commit.py
+++ b/contrib/gcc-changelog/git_commit.py
@@ -155,6 +155,8 @@ 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'[\[<(:]')
+item_empty_regex = re.compile(r'\t(\* \S+ )?\(\S+\):\s*$')
+item_parenthesis_regex = re.compile(r'\t(\*|\(\S+\):)')
LINE_LIMIT = 100
TAB_WIDTH = 8
@@ -421,7 +423,11 @@ class GitCommit:
continue
elif line.startswith(CHERRY_PICK_PREFIX):
commit = line[len(CHERRY_PICK_PREFIX):].rstrip(')')
- self.cherry_pick_commit = commit
+ if self.cherry_pick_commit:
+ self.errors.append(Error('multiple cherry pick lines',
+ line))
+ else:
+ self.cherry_pick_commit = commit
continue
# ChangeLog name will be deduced later
@@ -459,6 +465,13 @@ class GitCommit:
msg = 'one space should follow asterisk'
self.errors.append(Error(msg, line))
else:
+ content = m.group('content')
+ parts = content.split(':')
+ if len(parts) > 1:
+ for needle in ('()', '[]', '<>'):
+ if ' ' + needle in parts[0]:
+ msg = f'empty group "{needle}" found'
+ self.errors.append(Error(msg, line))
last_entry.lines.append(line)
else:
if last_entry.is_empty:
@@ -483,9 +496,10 @@ class GitCommit:
def check_for_empty_description(self):
for entry in self.changelog_entries:
for i, line in enumerate(entry.lines):
- if (star_prefix_regex.match(line) and line.endswith(':') and
+ if (item_empty_regex.match(line) and
(i == len(entry.lines) - 1
- or star_prefix_regex.match(entry.lines[i + 1]))):
+ or not entry.lines[i+1].strip()
+ or item_parenthesis_regex.match(entry.lines[i+1]))):
msg = 'missing description of a change'
self.errors.append(Error(msg, line))
diff --git a/contrib/gcc-changelog/git_email.py b/contrib/gcc-changelog/git_email.py
index 014fdd1004b..5b53ca4a6a9 100755
--- a/contrib/gcc-changelog/git_email.py
+++ b/contrib/gcc-changelog/git_email.py
@@ -24,10 +24,11 @@ from dateutil.parser import parse
from git_commit import GitCommit, GitInfo
-from unidiff import PatchSet
+from unidiff import PatchSet, PatchedFile
DATE_PREFIX = 'Date: '
FROM_PREFIX = 'From: '
+unidiff_supports_renaming = hasattr(PatchedFile(), 'is_rename')
class GitEmail(GitCommit):
@@ -58,7 +59,7 @@ class GitEmail(GitCommit):
t = 'A'
elif f.is_removed_file:
t = 'D'
- elif f.is_rename:
+ elif unidiff_supports_renaming and f.is_rename:
# Consider that renamed files are two operations: the deletion
# of the original name and the addition of the new one.
modified_files.append((source, 'D'))
diff --git a/contrib/gcc-changelog/git_repository.py b/contrib/gcc-changelog/git_repository.py
index 90edc3ce3d8..8edcff91ad6 100755
--- a/contrib/gcc-changelog/git_repository.py
+++ b/contrib/gcc-changelog/git_repository.py
@@ -29,7 +29,7 @@ except ImportError:
from git_commit import GitCommit, GitInfo
-def parse_git_revisions(repo_path, revisions, strict=False):
+def parse_git_revisions(repo_path, revisions, strict=True):
repo = Repo(repo_path)
def commit_to_info(commit):
diff --git a/contrib/gcc-changelog/setup.cfg b/contrib/gcc-changelog/setup.cfg
new file mode 100644
index 00000000000..9e4a0f6479c
--- /dev/null
+++ b/contrib/gcc-changelog/setup.cfg
@@ -0,0 +1,2 @@
+[tool:pytest]
+addopts = -vv --flake8
diff --git a/contrib/gcc-changelog/test_email.py b/contrib/gcc-changelog/test_email.py
index b6fbe6a5303..e38c3e52158 100755
--- a/contrib/gcc-changelog/test_email.py
+++ b/contrib/gcc-changelog/test_email.py
@@ -362,6 +362,25 @@ class TestGccChangelog(unittest.TestCase):
assert '\t2020-06-11 Martin Liska <mliska@suse.cz>' in entry
assert '\t\t Jakub Jelinek <jakub@redhat.com>' in entry
+ def test_backport_double_cherry_pick(self):
+ email = self.from_patch_glob('double-cherry-pick.patch')
+ assert email.errors[0].message.startswith('multiple cherry pick lines')
+
def test_square_and_lt_gt(self):
email = self.from_patch_glob('0001-Check-for-more-missing')
assert not email.errors
+
+ def test_empty_parenthesis(self):
+ email = self.from_patch_glob('0001-tree-optimization-97633-fix')
+ assert len(email.errors) == 1
+ assert email.errors[0].message == 'empty group "()" found'
+
+ def test_emptry_entry_desc(self):
+ email = self.from_patch_glob('0001-c-Set-CALL_FROM_NEW_OR')
+ assert len(email.errors) == 1
+ assert email.errors[0].message == 'missing description of a change'
+
+ def test_emptry_entry_desc_2(self):
+ email = self.from_patch_glob('0001-lto-fix-LTO-debug')
+ assert not email.errors
+ assert len(email.changelog_entries) == 1
diff --git a/contrib/gcc-changelog/test_patches.txt b/contrib/gcc-changelog/test_patches.txt
index 2bf5d1aefaa..37f49c851ec 100644
--- a/contrib/gcc-changelog/test_patches.txt
+++ b/contrib/gcc-changelog/test_patches.txt
@@ -3160,6 +3160,35 @@ index 823eb539993..4ec22162c12 100644
--
2.27.0
+=== double-cherry-pick.patch ===
+From e1d68582022cfa2b1dc76646724b397ba2739439 Mon Sep 17 00:00:00 2001
+From: Martin Liska <mliska@suse.cz>
+Date: Thu, 11 Jun 2020 09:34:41 +0200
+Subject: [PATCH] asan: fix RTX emission for ilp32
+
+gcc/ChangeLog:
+
+ PR sanitizer/95634
+ * asan.c (asan_emit_stack_protection): Fix emission for ilp32
+ by using Pmode instead of ptr_mode.
+
+Co-Authored-By: Jakub Jelinek <jakub@redhat.com>
+(cherry picked from commit 8cff672cb9a132d3d3158c2edfc9a64b55292b80)
+(cherry picked from commit 8cff672cb9a132d3d3158c2edfc9a64b55292b80)
+---
+ gcc/asan.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/gcc/asan.c b/gcc/asan.c
+index 823eb539993..4ec22162c12 100644
+--- a/gcc/asan.c
++++ b/gcc/asan.c
+@@ -1 +1,2 @@
+
++
+--
+2.27.0
+
=== 0001-Check-for-more-missing-math-decls-on-vxworks.patch ===
From 0edfc1fd22405ee8e946101e44cd8edc0ee12047 Mon Sep 17 00:00:00 2001
From: Douglas B Rupp <douglas.b.rupp@gmail.com>
@@ -3193,5 +3222,101 @@ index fe18288..313f84d 100644
+
--
+=== 0001-tree-optimization-97633-fix-SLP-scheduling-of-single.patch ===
+From c0bfd9672e19caf08e45afeb4277f848488ced2b Mon Sep 17 00:00:00 2001
+From: Richard Biener <rguenther@suse.de>
+Date: Fri, 30 Oct 2020 09:57:02 +0100
+Subject: [PATCH] tree-optimization/97633 - fix SLP scheduling of single-node
+ cycles
+
+This makes sure to update backedges in single-node cycles.
+
+2020-10-30 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/97633
+ * tree-vect-slp.c (): Update backedges in single-node cycles.
+ Optimize processing of externals.
+
+ * g++.dg/vect/slp-pr97636.cc: New testcase.
+ * gcc.dg/vect/bb-slp-pr97633.c: Likewise.
+---
+ gcc/testsuite/g++.dg/vect/slp-pr97636.cc | 83 +++++++++++
+ gcc/testsuite/gcc.dg/vect/bb-slp-pr97633.c | 27 ++++
+ gcc/tree-vect-slp.c | 162 +++++++++++----------
+ 3 files changed, 198 insertions(+), 74 deletions(-)
+ create mode 100644 gcc/testsuite/g++.dg/vect/slp-pr97636.cc
+ create mode 100644 gcc/testsuite/gcc.dg/vect/bb-slp-pr97633.c
+
+diff --git a/gcc/testsuite/g++.dg/vect/slp-pr97636.cc b/gcc/testsuite/g++.dg/vect/slp-pr97636.cc
+new file mode 100644
+index 00000000000..012342004f1
+--- /dev/null
++++ b/gcc/testsuite/g++.dg/vect/slp-pr97636.cc
+@@ -0,0 +1 @@
++
+diff --git a/gcc/tree-vect-slp.c b/gcc/tree-vect-slp.c
+index 5d69a98c2a9..714e50697bd 100644
+--- a/gcc/tree-vect-slp.c
++++ b/gcc/tree-vect-slp.c
+@@ -1 +1,2 @@
+
++
+--
+
2.7.4
+=== 0001-c-Set-CALL_FROM_NEW_OR_DELETE_P-on-more-calls.patch ===
+From 4f4ced28826ece7b7b76649522ee2a9601a63b90 Mon Sep 17 00:00:00 2001
+From: Jason Merrill <jason@redhat.com>
+Date: Fri, 2 Oct 2020 09:00:49 +0200
+Subject: [PATCH] c++: Set CALL_FROM_NEW_OR_DELETE_P on more calls.
+
+We were failing to set the flag on a delete call in a new expression, in a
+deleting destructor, and in a coroutine. Fixed by setting it in the
+function that builds the call.
+
+2020-10-02 Jason Merril <jason@redhat.com>
+
+gcc/cp/ChangeLog:
+ * init.c (build_new_1, build_vec_delete_1, build_delete): Not here.
+ (build_delete):
+
+---
+ gcc/cp/init.c | 1 -
+ 1 files changed, 0 insertions(+), 1 deletions(-)
+
+diff --git a/gcc/cp/init.c b/gcc/cp/init.c
+index e84e985492d..00fff3f7327 100644
+--- a/gcc/cp/init.c
++++ b/gcc/cp/init.c
+@@ -3436,1 +3435,0 @@ build_new_1 (vec<tree, va_gc> **placement, tree type, tree nelts,
+-
+--
+2.25.1
+
+=== 0001-lto-fix-LTO-debug-sections-copying.patch ===
+From 190c04ba36d9c6c3dce41f12012aa97c6d7f22f5 Mon Sep 17 00:00:00 2001
+From: Martin Liska <mliska@suse.cz>
+Date: Mon, 5 Oct 2020 18:03:08 +0200
+Subject: [PATCH] lto: fix LTO debug sections copying.
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+libiberty/ChangeLog:
+
+ PR lto/97290
+ * simple-object-elf.c (simple_object_elf_copy_lto_debug_sections):
+ Use sh_link of a .symtab_shndx section.
+---
+ libiberty/simple-object-elf.c | 1 -
+ 1 file changed, 0 insertions(+), 1 deletions(-)
+
+diff --git a/libiberty/simple-object-elf.c b/libiberty/simple-object-elf.c
+index 7c9d492f6a4..37e73348cb7 100644
+--- a/libiberty/simple-object-elf.c
++++ b/libiberty/simple-object-elf.c
+@@ -1191,1 +1191,0 @@ simple_object_elf_copy_lto_debug_sections (simple_object_read *sobj,
+-
+--
+2.25.1
^ permalink raw reply [flat|nested] 3+ messages in thread
* [gcc(refs/vendors/redhat/heads/gcc-8-branch)] Sync gcc-changelog scripts.
@ 2021-04-23 10:49 Jakub Jelinek
0 siblings, 0 replies; 3+ messages in thread
From: Jakub Jelinek @ 2021-04-23 10:49 UTC (permalink / raw)
To: gcc-cvs
https://gcc.gnu.org/g:683e9aac11bb19b9f3ffad835674010cb88947ae
commit 683e9aac11bb19b9f3ffad835674010cb88947ae
Author: Martin Liska <mliska@suse.cz>
Date: Wed Apr 14 15:39:10 2021 +0200
Sync gcc-changelog scripts.
contrib/ChangeLog:
* gcc-changelog/git_commit.py: Sync with master.
* gcc-changelog/git_email.py: Likewise.
* gcc-changelog/git_update_version.py: Likewise.
* gcc-changelog/setup.cfg: Likewise.
* gcc-changelog/test_email.py: Likewise.
* gcc-changelog/test_patches.txt: Likewise.
Diff:
---
contrib/gcc-changelog/git_commit.py | 51 ++++++++--
contrib/gcc-changelog/git_email.py | 2 +-
contrib/gcc-changelog/git_update_version.py | 4 +
contrib/gcc-changelog/setup.cfg | 3 +
contrib/gcc-changelog/test_email.py | 20 ++++
contrib/gcc-changelog/test_patches.txt | 147 ++++++++++++++++++++++++++++
6 files changed, 219 insertions(+), 8 deletions(-)
diff --git a/contrib/gcc-changelog/git_commit.py b/contrib/gcc-changelog/git_commit.py
index ee1973371be..b28f7deac23 100755
--- a/contrib/gcc-changelog/git_commit.py
+++ b/contrib/gcc-changelog/git_commit.py
@@ -214,6 +214,7 @@ class ChangeLogEntry:
self.lines = []
self.files = []
self.file_patterns = []
+ self.opened_parentheses = 0
def parse_file_names(self):
# Whether the content currently processed is between a star prefix the
@@ -223,8 +224,14 @@ class ChangeLogEntry:
for line in self.lines:
# If this line matches the star prefix, start the location
# processing on the information that follows the star.
+ # Note that we need to skip macro names that can be in form of:
+ #
+ # * config/i386/i386.md (*fix_trunc<mode>_i387_1,
+ # *add<mode>3_ne, *add<mode>3_eq_0, *add<mode>3_ne_0,
+ # *fist<mode>2_<rounding>_1, *<code><mode>3_1):
+ #
m = star_prefix_regex.match(line)
- if m:
+ if m and len(m.group('spaces')) == 1:
in_location = True
line = m.group('content')
@@ -307,8 +314,9 @@ class GitCommit:
if self.revert_commit:
self.info = self.commit_to_info_hook(self.revert_commit)
+ # Allow complete deletion of ChangeLog files in a commit
project_files = [f for f in self.info.modified_files
- if self.is_changelog_filename(f[0])
+ if (self.is_changelog_filename(f[0], allow_suffix=True) and f[1] != 'D')
or f[0] in misc_files]
ignored_files = [f for f in self.info.modified_files
if self.in_ignored_location(f[0])]
@@ -328,6 +336,7 @@ class GitCommit:
self.parse_changelog()
self.parse_file_names()
self.check_for_empty_description()
+ self.check_for_broken_parentheses()
self.deduce_changelog_locations()
self.check_file_patterns()
if not self.errors:
@@ -343,8 +352,14 @@ class GitCommit:
return [x[0] for x in self.info.modified_files if x[1] == 'A']
@classmethod
- def is_changelog_filename(cls, path):
- return path.endswith('/ChangeLog') or path == 'ChangeLog'
+ def is_changelog_filename(cls, path, allow_suffix=False):
+ basename = os.path.basename(path)
+ if basename == 'ChangeLog':
+ return True
+ elif allow_suffix and basename.startswith('ChangeLog'):
+ return True
+ else:
+ return False
@classmethod
def find_changelog_location(cls, name):
@@ -400,8 +415,10 @@ class GitCommit:
if line != line.rstrip():
self.errors.append(Error('trailing whitespace', line))
if len(line.replace('\t', ' ' * TAB_WIDTH)) > LINE_LIMIT:
- self.errors.append(Error('line exceeds %d character limit'
- % LINE_LIMIT, line))
+ # support long filenames
+ if not line.startswith('\t* ') or not line.endswith(':') or ' ' in line[3:-1]:
+ self.errors.append(Error('line exceeds %d character limit'
+ % LINE_LIMIT, line))
m = changelog_regex.match(line)
if m:
last_entry = ChangeLogEntry(m.group(1).rstrip('/'),
@@ -490,7 +507,8 @@ class GitCommit:
else:
m = star_prefix_regex.match(line)
if m:
- if len(m.group('spaces')) != 1:
+ if (len(m.group('spaces')) != 1 and
+ last_entry.opened_parentheses == 0):
msg = 'one space should follow asterisk'
self.errors.append(Error(msg, line))
else:
@@ -502,6 +520,7 @@ class GitCommit:
msg = f'empty group "{needle}" found'
self.errors.append(Error(msg, line))
last_entry.lines.append(line)
+ self.process_parentheses(last_entry, line)
else:
if last_entry.is_empty:
msg = 'first line should start with a tab, ' \
@@ -509,6 +528,18 @@ class GitCommit:
self.errors.append(Error(msg, line))
else:
last_entry.lines.append(line)
+ self.process_parentheses(last_entry, line)
+
+ def process_parentheses(self, last_entry, line):
+ for c in line:
+ if c == '(':
+ last_entry.opened_parentheses += 1
+ elif c == ')':
+ if last_entry.opened_parentheses == 0:
+ msg = 'bad wrapping of parenthesis'
+ self.errors.append(Error(msg, line))
+ else:
+ last_entry.opened_parentheses -= 1
def parse_file_names(self):
for entry in self.changelog_entries:
@@ -532,6 +563,12 @@ class GitCommit:
msg = 'missing description of a change'
self.errors.append(Error(msg, line))
+ def check_for_broken_parentheses(self):
+ for entry in self.changelog_entries:
+ if entry.opened_parentheses != 0:
+ msg = 'bad parentheses wrapping'
+ self.errors.append(Error(msg, entry.lines[0]))
+
def get_file_changelog_location(self, changelog_file):
for file in self.info.modified_files:
if file[0] == changelog_file:
diff --git a/contrib/gcc-changelog/git_email.py b/contrib/gcc-changelog/git_email.py
index 00ad00458f4..b0547b363aa 100755
--- a/contrib/gcc-changelog/git_email.py
+++ b/contrib/gcc-changelog/git_email.py
@@ -66,7 +66,7 @@ class GitEmail(GitCommit):
t = 'A'
else:
t = 'M'
- modified_files.append((target, t))
+ modified_files.append((target if t != 'D' else source, t))
git_info = GitInfo(None, date, author, body, modified_files)
super().__init__(git_info, strict=strict,
commit_to_info_hook=lambda x: None)
diff --git a/contrib/gcc-changelog/git_update_version.py b/contrib/gcc-changelog/git_update_version.py
index d2cadb8811c..1e2b22b008b 100755
--- a/contrib/gcc-changelog/git_update_version.py
+++ b/contrib/gcc-changelog/git_update_version.py
@@ -26,6 +26,9 @@ from git_repository import parse_git_revisions
current_timestamp = datetime.datetime.now().strftime('%Y%m%d\n')
+# Skip the following commits, they cannot be correctly processed
+IGNORED_COMMITS = ('c2be82058fb40f3ae891c68d185ff53e07f14f45')
+
def read_timestamp(path):
with open(path) as f:
@@ -98,6 +101,7 @@ def update_current_branch():
head = head.parents[1]
commits = parse_git_revisions(args.git_path, '%s..%s'
% (commit.hexsha, head.hexsha))
+ commits = [c for c in commits if c.info.hexsha not in IGNORED_COMMITS]
for git_commit in reversed(commits):
prepend_to_changelog_files(repo, args.git_path, git_commit,
not args.dry_mode)
diff --git a/contrib/gcc-changelog/setup.cfg b/contrib/gcc-changelog/setup.cfg
index 9e4a0f6479c..efc313f6d52 100644
--- a/contrib/gcc-changelog/setup.cfg
+++ b/contrib/gcc-changelog/setup.cfg
@@ -1,2 +1,5 @@
+[flake8]
+max-line-length = 120
+
[tool:pytest]
addopts = -vv --flake8
diff --git a/contrib/gcc-changelog/test_email.py b/contrib/gcc-changelog/test_email.py
index 5db56caef9e..8abf5c37487 100755
--- a/contrib/gcc-changelog/test_email.py
+++ b/contrib/gcc-changelog/test_email.py
@@ -404,3 +404,23 @@ class TestGccChangelog(unittest.TestCase):
email = self.from_patch_glob('0001-Add-horse2.patch')
assert not email.errors
assert email.changelog_entries[0].files == ['koníček.txt']
+
+ def test_modification_of_old_changelog(self):
+ email = self.from_patch_glob('0001-fix-old-ChangeLog.patch')
+ assert not email.errors
+
+ def test_multiline_parentheses(self):
+ email = self.from_patch_glob('0001-Add-macro.patch')
+ assert not email.errors
+
+ def test_multiline_bad_parentheses(self):
+ email = self.from_patch_glob('0002-Wrong-macro-changelog.patch')
+ assert email.errors[0].message == 'bad parentheses wrapping'
+
+ def test_changelog_removal(self):
+ email = self.from_patch_glob('0001-ChangeLog-removal.patch', strict=True)
+ assert not email.errors
+
+ def test_long_filenames(self):
+ email = self.from_patch_glob('0001-long-filenames')
+ assert not email.errors
diff --git a/contrib/gcc-changelog/test_patches.txt b/contrib/gcc-changelog/test_patches.txt
index ffd13682d5c..3f9806dc076 100644
--- a/contrib/gcc-changelog/test_patches.txt
+++ b/contrib/gcc-changelog/test_patches.txt
@@ -3398,4 +3398,151 @@ index 00000000000..56c67f58752
--
2.29.2
+=== 0001-fix-old-ChangeLog.patch ===
+From fd498465b2801203089616be9a0e3c1f4fc065a0 Mon Sep 17 00:00:00 2001
+From: Martin Liska <mliska@suse.cz>
+Date: Wed, 13 Jan 2021 11:45:37 +0100
+Subject: [PATCH] Fix a changelog.
+
+---
+ gcc/ChangeLog-2020 | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/gcc/ChangeLog-2020 b/gcc/ChangeLog-2020
+index 6553720acad..2c170ef014a 100644
+--- a/gcc/ChangeLog-2020
++++ b/gcc/ChangeLog-2020
+@@ -1 +1,2 @@
+
++
+
+--
+2.29.2
+=== 0001-Add-macro.patch ===
+From 9b7eedc932fe594547fb060b36dfd9e4178c4f9b Mon Sep 17 00:00:00 2001
+From: Martin Liska <mliska@suse.cz>
+Date: Wed, 13 Jan 2021 16:26:45 +0100
+Subject: [PATCH 1/2] Add macro.
+
+gcc/ChangeLog:
+
+ * config/i386/i386.md (*fix_trunc<mode>_i387_1, *add<mode>3_eq,
+ *add<mode>3_ne, *add<mode>3_eq_0, *add<mode>3_ne_0, *add<mode>3_eq,
+ *fist<mode>2_<rounding>_1, *<code><mode>3_1, *<code>di3_doubleword):
+ Use ix86_pre_reload_split instead of can_create_pseudo_p in condition.
+ * config/i386/sse.md
+ (*fix_trunc<mode>_i387_1, *add<mode>3_eq,
+ *add<mode>3_ne, *add<mode>3_eq_0, *add<mode>3_ne_0, *add<mode>3_eq,
+ *fist<mode>2_<rounding>_1): This should also work.
+---
+ gcc/config/i386/i386.md | 1 +
+ gcc/config/i386/sse.md | 1 +
+ 2 files changed, 2 insertions(+)
+
+diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
+index b60784a2908..ac63591b33f 100644
+--- a/gcc/config/i386/i386.md
++++ b/gcc/config/i386/i386.md
+@@ -1 +1,2 @@
+
++
+
+diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
+index 7f03fc491c3..0e17997db26 100644
+--- a/gcc/config/i386/sse.md
++++ b/gcc/config/i386/sse.md
+@@ -1 +1,2 @@
+
++
+
+--
+2.29.2
+
+=== 0002-Wrong-macro-changelog.patch ===
+From 3542802111d4c6752ac7233ef96655b7fb78aae4 Mon Sep 17 00:00:00 2001
+From: Martin Liska <mliska@suse.cz>
+Date: Wed, 13 Jan 2021 16:54:58 +0100
+Subject: [PATCH 2/2] Wrong macro changelog
+
+gcc/ChangeLog:
+ * config/i386/i386.md (*fix_trunc<mode>_i387_1,
+ (foo): Change it.
+---
+ gcc/config/i386/i386.md | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
+index ac63591b33f..ff4d61764e7 100644
+--- a/gcc/config/i386/i386.md
++++ b/gcc/config/i386/i386.md
+@@ -1 +1,2 @@
+
++
+--
+2.29.2
+
+=== 0001-ChangeLog-removal.patch ===
+From b39fadf9df1a9510afcab0a391182da7dc68de24 Mon Sep 17 00:00:00 2001
+From: Martin Liska <mliska@suse.cz>
+Date: Fri, 12 Mar 2021 09:10:55 +0100
+Subject: [PATCH] Test ChangeLog removal.
+
+gcc/ChangeLog:
+
+ * ipa-icf.c (make_pass_ipa_icf): Add line.
+---
+diff --git a/gcc/analyzer/ChangeLog b/gcc/analyzer/ChangeLog
+deleted file mode 100644
+index 94e87f6bcde..00000000000
+--- a/gcc/analyzer/ChangeLog
++++ /dev/null
+@@ -1,1 +0,0 @@
+- foo
+diff --git a/gcc/ipa-icf.c b/gcc/ipa-icf.c
+index 5dd33a75c3a..c4ce432cb98 100644
+--- a/gcc/ipa-icf.c
++++ b/gcc/ipa-icf.c
+@@ -3655,3 +3655,4 @@ make_pass_ipa_icf (gcc::context *ctxt)
+ {
+ return new ipa_icf::pass_ipa_icf (ctxt);
+ }
++
+--
+2.30.1
+
+=== 0001-long-filenames ===
+From 0a5b3f87bdac5e61f9a626c795d30f9e93198585 Mon Sep 17 00:00:00 2001
+From: Martin Liska <mliska@suse.cz>
+Date: Mon, 12 Apr 2021 13:10:14 +0200
+Subject: [PATCH] libstdc++: Fix some tests that fail in C++20 mode
+
+The linear_congruential_engine negative tests fail with a different
+error in C++20 mode, because double is no longer an invalid type for
+NTTP. Adjust the expected errors.
+
+libstdc++-v3/ChangeLog:
+
+ * testsuite/26_numerics/random/linear_congruential_engine/requirements/non_uint_neg.cc:
+ Adjust expected error for C++20 mode.
+ * testsuite/tr1/5_numerical_facilities/random/linear_congruential/requirements/non_uint_neg.cc:
+ Likewise.
+---
+ .../linear_congruential_engine/requirements/non_uint_neg.cc | 4 +++-
+ .../random/linear_congruential/requirements/non_uint_neg.cc | 3 ++-
+ 2 files changed, 5 insertions(+), 2 deletions(-)
+
+diff --git a/libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/requirements/non_uint_neg.cc b/libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/requirements/non_uint_neg.cc
+index e04e8ca6972..a36d63c6c7b 100644
+--- a/libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/requirements/non_uint_neg.cc
++++ b/libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/requirements/non_uint_neg.cc
+@@ -1 +1,2 @@
+
++
+diff --git a/libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/linear_congruential/requirements/non_uint_neg.cc b/libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/linear_congruential/requirements/non_uint_neg.cc
+index 5ad82db1def..53b15f32516 100644
+--- a/libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/linear_congruential/requirements/non_uint_neg.cc
++++ b/libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/linear_congruential/requirements/non_uint_neg.cc
+@@ -1 +1,2 @@
+
++
^ permalink raw reply [flat|nested] 3+ messages in thread
* [gcc(refs/vendors/redhat/heads/gcc-8-branch)] Sync gcc-changelog scripts.
@ 2021-04-23 10:36 Jakub Jelinek
0 siblings, 0 replies; 3+ messages in thread
From: Jakub Jelinek @ 2021-04-23 10:36 UTC (permalink / raw)
To: gcc-cvs
https://gcc.gnu.org/g:a1fa2adf7c32da94902ba47e7325d126dd9580f2
commit a1fa2adf7c32da94902ba47e7325d126dd9580f2
Author: Martin Liska <mliska@suse.cz>
Date: Thu Jan 7 11:30:29 2021 +0100
Sync gcc-changelog scripts.
contrib/ChangeLog:
* gcc-changelog/git_commit.py: Sync from master.
* gcc-changelog/git_email.py: Likewise.
* gcc-changelog/git_repository.py: Likewise.
* gcc-changelog/test_email.py: Likewise.
* gcc-changelog/test_patches.txt: Likewise.
Diff:
---
contrib/gcc-changelog/git_commit.py | 57 +++++++++++++++++------
contrib/gcc-changelog/git_email.py | 6 +--
contrib/gcc-changelog/git_repository.py | 6 +--
contrib/gcc-changelog/test_email.py | 24 +++++++++-
contrib/gcc-changelog/test_patches.txt | 81 ++++++++++++++++++++++++++++++++-
5 files changed, 152 insertions(+), 22 deletions(-)
diff --git a/contrib/gcc-changelog/git_commit.py b/contrib/gcc-changelog/git_commit.py
index 5f856660bb3..ee1973371be 100755
--- a/contrib/gcc-changelog/git_commit.py
+++ b/contrib/gcc-changelog/git_commit.py
@@ -16,10 +16,12 @@
# along with GCC; see the file COPYING3. If not see
# <http://www.gnu.org/licenses/>. */
+import difflib
import os
import re
changelog_locations = {
+ 'c++tools',
'config',
'contrib',
'contrib/header-tools',
@@ -50,6 +52,7 @@ changelog_locations = {
'libatomic',
'libbacktrace',
'libcc1',
+ 'libcody',
'libcpp',
'libcpp/po',
'libdecnumber',
@@ -138,7 +141,8 @@ ignored_prefixes = {
wildcard_prefixes = {
'gcc/testsuite/',
- 'libstdc++-v3/doc/html/'
+ 'libstdc++-v3/doc/html/',
+ 'libstdc++-v3/testsuite/'
}
misc_files = {
@@ -158,11 +162,11 @@ end_of_location_regex = re.compile(r'[\[<(:]')
item_empty_regex = re.compile(r'\t(\* \S+ )?\(\S+\):\s*$')
item_parenthesis_regex = re.compile(r'\t(\*|\(\S+\):)')
revert_regex = re.compile(r'This reverts commit (?P<hash>\w+).$')
+cherry_pick_regex = re.compile(r'cherry picked from commit (?P<hash>\w+)')
LINE_LIMIT = 100
TAB_WIDTH = 8
CO_AUTHORED_BY_PREFIX = 'co-authored-by: '
-CHERRY_PICK_PREFIX = '(cherry picked from commit '
REVIEW_PREFIXES = ('reviewed-by: ', 'reviewed-on: ', 'signed-off-by: ',
'acked-by: ', 'tested-by: ', 'reported-by: ',
@@ -170,6 +174,24 @@ REVIEW_PREFIXES = ('reviewed-by: ', 'reviewed-on: ', 'signed-off-by: ',
DATE_FORMAT = '%Y-%m-%d'
+def decode_path(path):
+ # When core.quotepath is true (default value), utf8 chars are encoded like:
+ # "b/ko\304\215ka.txt"
+ #
+ # The upstream bug is fixed:
+ # https://github.com/gitpython-developers/GitPython/issues/1099
+ #
+ # but we still need a workaround for older versions of the library.
+ # Please take a look at the explanation of the transformation:
+ # https://stackoverflow.com/questions/990169/how-do-convert-unicode-escape-sequences-to-unicode-characters-in-a-python-string
+
+ if path.startswith('"') and path.endswith('"'):
+ return (path.strip('"').encode('utf8').decode('unicode-escape')
+ .encode('latin-1').decode('utf8'))
+ else:
+ return path
+
+
class Error:
def __init__(self, message, line=None):
self.message = message
@@ -272,6 +294,10 @@ class GitCommit:
self.revert_commit = None
self.commit_to_info_hook = commit_to_info_hook
+ # Skip Update copyright years commits
+ if self.info.lines and self.info.lines[0] == 'Update copyright years.':
+ return
+
# Identify first if the commit is a Revert commit
for line in self.info.lines:
m = revert_regex.match(line)
@@ -422,14 +448,16 @@ class GitCommit:
continue
elif lowered_line.startswith(REVIEW_PREFIXES):
continue
- elif line.startswith(CHERRY_PICK_PREFIX):
- commit = line[len(CHERRY_PICK_PREFIX):].rstrip(')')
- if self.cherry_pick_commit:
- self.errors.append(Error('multiple cherry pick lines',
- line))
- else:
- self.cherry_pick_commit = commit
- continue
+ else:
+ m = cherry_pick_regex.search(line)
+ if m:
+ commit = m.group('hash')
+ if self.cherry_pick_commit:
+ msg = 'multiple cherry pick lines'
+ self.errors.append(Error(msg, line))
+ else:
+ self.cherry_pick_commit = commit
+ continue
# ChangeLog name will be deduced later
if not last_entry:
@@ -490,7 +518,7 @@ class GitCommit:
for entry in self.changelog_entries:
for pattern in entry.file_patterns:
name = os.path.join(entry.folder, pattern)
- if name not in wildcard_prefixes:
+ if not [name.startswith(pr) for pr in wildcard_prefixes]:
msg = 'unsupported wildcard prefix'
self.errors.append(Error(msg, name))
@@ -558,7 +586,7 @@ class GitCommit:
mentioned_patterns = []
used_patterns = set()
for entry in self.changelog_entries:
- if not entry.files:
+ if not entry.files and not entry.file_patterns:
msg = 'no files mentioned for ChangeLog in directory'
self.errors.append(Error(msg, entry.folder))
assert not entry.folder.endswith('/')
@@ -573,6 +601,9 @@ class GitCommit:
changed_files = set(cand)
for file in sorted(mentioned_files - changed_files):
msg = 'unchanged file mentioned in a ChangeLog'
+ candidates = difflib.get_close_matches(file, changed_files, 1)
+ if candidates:
+ msg += f' (did you mean "{candidates[0]}"?)'
self.errors.append(Error(msg, file))
for file in sorted(changed_files - mentioned_files):
if not self.in_ignored_location(file):
@@ -614,7 +645,7 @@ class GitCommit:
for pattern in mentioned_patterns:
if pattern not in used_patterns:
- error = 'pattern doesn''t match any changed files'
+ error = "pattern doesn't match any changed files"
self.errors.append(Error(error, pattern))
def check_for_correct_changelog(self):
diff --git a/contrib/gcc-changelog/git_email.py b/contrib/gcc-changelog/git_email.py
index 5b53ca4a6a9..00ad00458f4 100755
--- a/contrib/gcc-changelog/git_email.py
+++ b/contrib/gcc-changelog/git_email.py
@@ -22,7 +22,7 @@ from itertools import takewhile
from dateutil.parser import parse
-from git_commit import GitCommit, GitInfo
+from git_commit import GitCommit, GitInfo, decode_path
from unidiff import PatchSet, PatchedFile
@@ -52,8 +52,8 @@ class GitEmail(GitCommit):
modified_files = []
for f in diff:
# Strip "a/" and "b/" prefixes
- source = f.source_file[2:]
- target = f.target_file[2:]
+ source = decode_path(f.source_file)[2:]
+ target = decode_path(f.target_file)[2:]
if f.is_added_file:
t = 'A'
diff --git a/contrib/gcc-changelog/git_repository.py b/contrib/gcc-changelog/git_repository.py
index 8edcff91ad6..a0e293d756d 100755
--- a/contrib/gcc-changelog/git_repository.py
+++ b/contrib/gcc-changelog/git_repository.py
@@ -26,7 +26,7 @@ except ImportError:
print(' Debian, Ubuntu: python3-git')
exit(1)
-from git_commit import GitCommit, GitInfo
+from git_commit import GitCommit, GitInfo, decode_path
def parse_git_revisions(repo_path, revisions, strict=True):
@@ -51,11 +51,11 @@ def parse_git_revisions(repo_path, revisions, strict=True):
# Consider that renamed files are two operations:
# the deletion of the original name
# and the addition of the new one.
- modified_files.append((file.a_path, 'D'))
+ modified_files.append((decode_path(file.a_path), 'D'))
t = 'A'
else:
t = 'M'
- modified_files.append((file.b_path, t))
+ modified_files.append((decode_path(file.b_path), t))
date = datetime.utcfromtimestamp(c.committed_date)
author = '%s <%s>' % (c.author.name, c.author.email)
diff --git a/contrib/gcc-changelog/test_email.py b/contrib/gcc-changelog/test_email.py
index e38c3e52158..5db56caef9e 100755
--- a/contrib/gcc-changelog/test_email.py
+++ b/contrib/gcc-changelog/test_email.py
@@ -113,7 +113,9 @@ class TestGccChangelog(unittest.TestCase):
email = self.from_patch_glob('0096')
assert email.errors
err = email.errors[0]
- assert err.message == 'unchanged file mentioned in a ChangeLog'
+ assert err.message == 'unchanged file mentioned in a ChangeLog (did ' \
+ 'you mean "gcc/testsuite/gcc.target/aarch64/' \
+ 'advsimd-intrinsics/vdot-3-1.c"?)'
assert err.line == 'gcc/testsuite/gcc.target/aarch64/' \
'advsimd-intrinsics/vdot-compile-3-1.c'
@@ -333,7 +335,7 @@ class TestGccChangelog(unittest.TestCase):
assert not email.errors
email = self.from_patch_glob('0002-libstdc-Fake-test-change-1.patch')
assert len(email.errors) == 1
- msg = 'pattern doesn''t match any changed files'
+ msg = "pattern doesn't match any changed files"
assert email.errors[0].message == msg
assert email.errors[0].line == 'libstdc++-v3/doc/html/'
email = self.from_patch_glob('0003-libstdc-Fake-test-change-2.patch')
@@ -355,6 +357,8 @@ class TestGccChangelog(unittest.TestCase):
def test_backport(self):
email = self.from_patch_glob('0001-asan-fix-RTX-emission.patch')
assert not email.errors
+ expected_hash = '8cff672cb9a132d3d3158c2edfc9a64b55292b80'
+ assert email.cherry_pick_commit == expected_hash
assert len(email.changelog_entries) == 1
entry = list(email.to_changelog_entries())[0][1]
assert entry.startswith('2020-06-11 Martin Liska <mliska@suse.cz>')
@@ -384,3 +388,19 @@ class TestGccChangelog(unittest.TestCase):
email = self.from_patch_glob('0001-lto-fix-LTO-debug')
assert not email.errors
assert len(email.changelog_entries) == 1
+
+ def test_wildcard_in_subdir(self):
+ email = self.from_patch_glob('0001-Wildcard-subdirs.patch')
+ assert len(email.changelog_entries) == 1
+ err = email.errors[0]
+ assert err.message == "pattern doesn't match any changed files"
+ assert err.line == 'libstdc++-v3/testsuite/28_regex_not-existing/'
+
+ def test_unicode_chars_in_filename(self):
+ email = self.from_patch_glob('0001-Add-horse.patch')
+ assert not email.errors
+
+ def test_bad_unicode_chars_in_filename(self):
+ email = self.from_patch_glob('0001-Add-horse2.patch')
+ assert not email.errors
+ assert email.changelog_entries[0].files == ['koníček.txt']
diff --git a/contrib/gcc-changelog/test_patches.txt b/contrib/gcc-changelog/test_patches.txt
index 37f49c851ec..ffd13682d5c 100644
--- a/contrib/gcc-changelog/test_patches.txt
+++ b/contrib/gcc-changelog/test_patches.txt
@@ -3145,7 +3145,7 @@ gcc/ChangeLog:
by using Pmode instead of ptr_mode.
Co-Authored-By: Jakub Jelinek <jakub@redhat.com>
-(cherry picked from commit 8cff672cb9a132d3d3158c2edfc9a64b55292b80)
+(cherry picked from commit 8cff672cb9a132d3d3158c2edfc9a64b55292b80 (only part))
---
gcc/asan.c | 1 +
1 file changed, 1 insertion(+)
@@ -3320,3 +3320,82 @@ index 7c9d492f6a4..37e73348cb7 100644
--
2.25.1
+=== 0001-Wildcard-subdirs.patch ===
+From b798205595426c53eb362065f6ed6c320dcc161d Mon Sep 17 00:00:00 2001
+From: Martin Liska <mliska@suse.cz>
+Date: Mon, 30 Nov 2020 13:27:51 +0100
+Subject: [PATCH] Fix it.
+
+libstdc++-v3/ChangeLog:
+
+ * testsuite/28_regex/*: Fix them all.
+ * testsuite/28_regex_not-existing/*: Fix them all.
+---
+ contrib/gcc-changelog/git_commit.py | 1 +
+ libstdc++-v3/testsuite/28_regex/init-list.cc | 1 +
+ 2 files changed, 2 insertions(+)
+
+diff --git a/libstdc++-v3/testsuite/28_regex/init-list.cc b/libstdc++-v3/testsuite/28_regex/init-list.cc
+index f51453f019a..d10ecf483f4 100644
+--- a/libstdc++-v3/testsuite/28_regex/init-list.cc
++++ b/libstdc++-v3/testsuite/28_regex/init-list.cc
+@@ -1 +1,2 @@
+
++
+--
+2.29.2
+
+=== 0001-Add-horse.patch ===
+From 2884248d07e4e2c922e137365253e2e521c425b0 Mon Sep 17 00:00:00 2001
+From: Martin Liska <mliska@suse.cz>
+Date: Mon, 21 Dec 2020 10:14:46 +0100
+Subject: [PATCH] Add horse.
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+ChangeLog:
+
+ * koníček.txt: New file.
+---
+ koníček.txt | 1 +
+ 1 file changed, 1 insertion(+)
+ create mode 100644 koníček.txt
+
+diff --git a/koníček.txt b/koníček.txt
+new file mode 100644
+index 00000000000..56c67f58752
+--- /dev/null
++++ b/koníček.txt
+@@ -0,0 +1 @@
++I'm a horse.
+--
+2.29.2
+=== 0001-Add-horse2.patch ===
+From 2884248d07e4e2c922e137365253e2e521c425b0 Mon Sep 17 00:00:00 2001
+From: Martin Liska <mliska@suse.cz>
+Date: Mon, 21 Dec 2020 10:14:46 +0100
+Subject: [PATCH] Add horse.
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+ChangeLog:
+
+ * koníček.txt: New file.
+---
+ "kon\303\255\304\215ek.txt" | 1 +
+ 1 file changed, 1 insertion(+)
+ create mode 100644 "kon\303\255\304\215ek.txt"
+
+diff --git "a/kon\303\255\304\215ek.txt" "b/kon\303\255\304\215ek.txt"
+new file mode 100644
+index 00000000000..56c67f58752
+--- /dev/null
++++ "b/kon\303\255\304\215ek.txt"
+@@ -0,0 +1 @@
++I'm a horse.
+--
+2.29.2
+
+
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2021-04-23 10:49 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-04-23 10:18 [gcc(refs/vendors/redhat/heads/gcc-8-branch)] Sync gcc-changelog scripts Jakub Jelinek
2021-04-23 10:36 Jakub Jelinek
2021-04-23 10:49 Jakub Jelinek
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).