summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@python.org>2023-12-03 11:18:24 (GMT)
committerGitHub <noreply@github.com>2023-12-03 11:18:24 (GMT)
commitd9e444dbb86e173ee5b8491e3facbd447b91eaed (patch)
treee7df87caad725a64d3646ec3d72dbd59211c9f03
parent1f2a676785d48ed9ac01e60cc56a82e44b725474 (diff)
downloadcpython-d9e444dbb86e173ee5b8491e3facbd447b91eaed.zip
cpython-d9e444dbb86e173ee5b8491e3facbd447b91eaed.tar.gz
cpython-d9e444dbb86e173ee5b8491e3facbd447b91eaed.tar.bz2
gh-106560: Fix redundant declarations in Python/frozen.c (#112612)
Avoid duplicated declarations of "extern" functions in Python/frozen.c. Compiler warnings seen by building Python with gcc -Wredundant-decls.
-rw-r--r--Python/frozen.c6
-rw-r--r--Tools/build/freeze_modules.py13
2 files changed, 12 insertions, 7 deletions
diff --git a/Python/frozen.c b/Python/frozen.c
index 0fb38a1..77f51a7 100644
--- a/Python/frozen.c
+++ b/Python/frozen.c
@@ -80,7 +80,6 @@ extern PyObject *_Py_get__sitebuiltins_toplevel(void);
extern PyObject *_Py_get_genericpath_toplevel(void);
extern PyObject *_Py_get_ntpath_toplevel(void);
extern PyObject *_Py_get_posixpath_toplevel(void);
-extern PyObject *_Py_get_posixpath_toplevel(void);
extern PyObject *_Py_get_os_toplevel(void);
extern PyObject *_Py_get_site_toplevel(void);
extern PyObject *_Py_get_stat_toplevel(void);
@@ -88,13 +87,8 @@ extern PyObject *_Py_get_importlib_util_toplevel(void);
extern PyObject *_Py_get_importlib_machinery_toplevel(void);
extern PyObject *_Py_get_runpy_toplevel(void);
extern PyObject *_Py_get___hello___toplevel(void);
-extern PyObject *_Py_get___hello___toplevel(void);
-extern PyObject *_Py_get___hello___toplevel(void);
-extern PyObject *_Py_get___hello___toplevel(void);
-extern PyObject *_Py_get___phello___toplevel(void);
extern PyObject *_Py_get___phello___toplevel(void);
extern PyObject *_Py_get___phello___ham_toplevel(void);
-extern PyObject *_Py_get___phello___ham_toplevel(void);
extern PyObject *_Py_get___phello___ham_eggs_toplevel(void);
extern PyObject *_Py_get___phello___spam_toplevel(void);
extern PyObject *_Py_get_frozen_only_toplevel(void);
diff --git a/Tools/build/freeze_modules.py b/Tools/build/freeze_modules.py
index c5a3971..6a54f45 100644
--- a/Tools/build/freeze_modules.py
+++ b/Tools/build/freeze_modules.py
@@ -468,6 +468,17 @@ def replace_block(lines, start_marker, end_marker, replacements, file):
return lines[:start_pos + 1] + replacements + lines[end_pos:]
+class UniqueList(list):
+ def __init__(self):
+ self._seen = set()
+
+ def append(self, item):
+ if item in self._seen:
+ return
+ super().append(item)
+ self._seen.add(item)
+
+
def regen_frozen(modules):
headerlines = []
parentdir = os.path.dirname(FROZEN_FILE)
@@ -477,7 +488,7 @@ def regen_frozen(modules):
header = relpath_for_posix_display(src.frozenfile, parentdir)
headerlines.append(f'#include "{header}"')
- externlines = []
+ externlines = UniqueList()
bootstraplines = []
stdliblines = []
testlines = []