forked from Imagelibrary/binutils-gdb
gdb: fix bugs in gdb/copyright.py, make it use glob patterns
gdb/copyright.py currently changes some files that it shouldn't: - despite having a `gnulib/import` entry in EXCLUDE_LIST, it does change the files under that directory - it is missing `sim/Makefile.in` Change the exclude list logic to use glob patterns. This makes it easier to specify exclusions of full directories or files by basename, while simplifying the code. Merge EXCLUDE_LIST and NOT_FSF_LIST, since there's no fundamental reason to keep them separate (they are treated identically). I kept the comment that explains that some files are excluded due to not being FSF-licensed. Merge EXCLUDE_ALL_LIST in EXCLUDE_LIST, converting the entries to glob patterns that match everywhere in the tree (e.g. `**/configure`). Tested by running the script on the parent commit ofd01e823438("Update copyright dates to include 2025") and diff'ing the result withd01e823438. The only differences are: - the files that we don't want to modify (gnulib/import and sim/Makefile.in) - the files that need to be modified by hand Running the script on latest master produces no diff. Change-Id: I318dc3bff34e4b3a9b66ea305d0c3872f69cd072 Reviewed-By: Guinevere Larsen <guinevere@redhat.com>
This commit is contained in:
@@ -36,6 +36,7 @@ import argparse
|
|||||||
import locale
|
import locale
|
||||||
import os
|
import os
|
||||||
import os.path
|
import os.path
|
||||||
|
import pathlib
|
||||||
import subprocess
|
import subprocess
|
||||||
import sys
|
import sys
|
||||||
from typing import Iterable
|
from typing import Iterable
|
||||||
@@ -68,19 +69,15 @@ def get_update_list():
|
|||||||
.split("\0")
|
.split("\0")
|
||||||
)
|
)
|
||||||
|
|
||||||
|
full_exclude_list = EXCLUDE_LIST + BY_HAND
|
||||||
|
|
||||||
def include_file(filename: str):
|
def include_file(filename: str):
|
||||||
(dirname, basename) = os.path.split(filename)
|
path = pathlib.Path(filename)
|
||||||
dirbasename = os.path.basename(dirname)
|
for pattern in full_exclude_list:
|
||||||
return not (
|
if path.full_match(pattern):
|
||||||
basename in EXCLUDE_ALL_LIST
|
return False
|
||||||
or dirbasename in EXCLUDE_ALL_LIST
|
|
||||||
or dirname in EXCLUDE_LIST
|
return True
|
||||||
or dirname in NOT_FSF_LIST
|
|
||||||
or dirname in BY_HAND
|
|
||||||
or filename in EXCLUDE_LIST
|
|
||||||
or filename in NOT_FSF_LIST
|
|
||||||
or filename in BY_HAND
|
|
||||||
)
|
|
||||||
|
|
||||||
return filter(include_file, result)
|
return filter(include_file, result)
|
||||||
|
|
||||||
@@ -212,8 +209,14 @@ def main(argv: list[str]) -> int | None:
|
|||||||
# generated, non-FSF, or otherwise special (e.g. license text,
|
# generated, non-FSF, or otherwise special (e.g. license text,
|
||||||
# or test cases which must be sensitive to line numbering).
|
# or test cases which must be sensitive to line numbering).
|
||||||
#
|
#
|
||||||
# Filenames are relative to the root directory.
|
# Entries are treated as glob patterns.
|
||||||
EXCLUDE_LIST = (
|
EXCLUDE_LIST = (
|
||||||
|
"**/aclocal.m4",
|
||||||
|
"**/configure",
|
||||||
|
"**/COPYING.LIB",
|
||||||
|
"**/COPYING",
|
||||||
|
"**/fdl.texi",
|
||||||
|
"**/gpl.texi",
|
||||||
"gdb/copying.c",
|
"gdb/copying.c",
|
||||||
"gdb/nat/glibc_thread_db.h",
|
"gdb/nat/glibc_thread_db.h",
|
||||||
"gdb/CONTRIBUTE",
|
"gdb/CONTRIBUTE",
|
||||||
@@ -221,45 +224,11 @@ EXCLUDE_LIST = (
|
|||||||
"gdbsupport/unordered_dense.h",
|
"gdbsupport/unordered_dense.h",
|
||||||
"gnulib/doc/gendocs_template",
|
"gnulib/doc/gendocs_template",
|
||||||
"gnulib/doc/gendocs_template_min",
|
"gnulib/doc/gendocs_template_min",
|
||||||
"gnulib/import",
|
"gnulib/import/**",
|
||||||
"gnulib/config.in",
|
"gnulib/config.in",
|
||||||
"gnulib/Makefile.in",
|
"gnulib/Makefile.in",
|
||||||
)
|
"sim/Makefile.in",
|
||||||
|
# The files below have a copyright, but not held by the FSF.
|
||||||
# Files which should not be modified, either because they are
|
|
||||||
# generated, non-FSF, or otherwise special (e.g. license text,
|
|
||||||
# or test cases which must be sensitive to line numbering).
|
|
||||||
#
|
|
||||||
# Matches any file or directory name anywhere. Use with caution.
|
|
||||||
# This is mostly for files that can be found in multiple directories.
|
|
||||||
# Eg: We want all files named COPYING to be left untouched.
|
|
||||||
|
|
||||||
EXCLUDE_ALL_LIST = (
|
|
||||||
"COPYING",
|
|
||||||
"COPYING.LIB",
|
|
||||||
"configure",
|
|
||||||
"fdl.texi",
|
|
||||||
"gpl.texi",
|
|
||||||
"aclocal.m4",
|
|
||||||
)
|
|
||||||
|
|
||||||
# The list of files to update by hand.
|
|
||||||
BY_HAND: tuple[str, ...] = (
|
|
||||||
# Nothing at the moment :-).
|
|
||||||
)
|
|
||||||
|
|
||||||
# Files containing multiple copyright headers. This script is only
|
|
||||||
# fixing the first one it finds, so we need to finish the update
|
|
||||||
# by hand.
|
|
||||||
MULTIPLE_COPYRIGHT_HEADERS = (
|
|
||||||
"gdb/doc/gdb.texinfo",
|
|
||||||
"gdb/doc/refcard.tex",
|
|
||||||
"gdb/syscalls/update-netbsd.sh",
|
|
||||||
)
|
|
||||||
|
|
||||||
# The list of file which have a copyright, but not held by the FSF.
|
|
||||||
# Filenames are relative to the root directory.
|
|
||||||
NOT_FSF_LIST = (
|
|
||||||
"gdb/exc_request.defs",
|
"gdb/exc_request.defs",
|
||||||
"gdb/gdbtk",
|
"gdb/gdbtk",
|
||||||
"gdb/testsuite/gdb.gdbtk/",
|
"gdb/testsuite/gdb.gdbtk/",
|
||||||
@@ -296,9 +265,27 @@ NOT_FSF_LIST = (
|
|||||||
"sim/mips/sim-main.c",
|
"sim/mips/sim-main.c",
|
||||||
"sim/moxie/moxie-gdb.dts",
|
"sim/moxie/moxie-gdb.dts",
|
||||||
# Not a single file in sim/ppc/ appears to be copyright FSF :-(.
|
# Not a single file in sim/ppc/ appears to be copyright FSF :-(.
|
||||||
"sim/ppc",
|
"sim/ppc/**",
|
||||||
"sim/testsuite/mips/mips32-dsp2.s",
|
"sim/testsuite/mips/mips32-dsp2.s",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# The list of files to update by hand.
|
||||||
|
#
|
||||||
|
# Entries are treated as glob patterns.
|
||||||
|
BY_HAND: tuple[str, ...] = (
|
||||||
|
# Nothing at the moment :-).
|
||||||
|
)
|
||||||
|
|
||||||
|
# Files containing multiple copyright headers. This script is only
|
||||||
|
# fixing the first one it finds, so we need to finish the update
|
||||||
|
# by hand.
|
||||||
|
#
|
||||||
|
# Entries are treated as glob patterns.
|
||||||
|
MULTIPLE_COPYRIGHT_HEADERS = (
|
||||||
|
"gdb/doc/gdb.texinfo",
|
||||||
|
"gdb/doc/refcard.tex",
|
||||||
|
"gdb/syscalls/update-netbsd.sh",
|
||||||
|
)
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
sys.exit(main(sys.argv[1:]))
|
sys.exit(main(sys.argv[1:]))
|
||||||
|
|||||||
Reference in New Issue
Block a user