During the last new year process, it seems that we forgot to update the
copyright notices printed by the various programs (see 713b99a939 "gdb,
gdbserver: update copyright years in copyright notices"). Change
gdb/copyright.py to print a message about this. For a procedure that
happens once a year, this seems sufficient to me, but if someone wants
to automate it I won't object.
While at it, change the formatting of the previous message, to match the
formatting of the first message (making it end with a colon).
Change-Id: I330f566221d102bab0a953bc324127f2466dd5cf
Approved-By: Tom Tromey <tom@tromey.com>
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 of d01e823438
("Update copyright dates to include 2025") and diff'ing the result with
d01e823438. 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>
Add `pyright: strict` at the top of the file, then adjust the fallouts.
This annotation is understood by pyright, and thus any IDE using pyright
behind the scenes (VSCode and probably others).
I presume that any GDB developer running this script is using a recent
enough version of Python, so specify the type annotations using the
actual types when possible (e.g. `list[str]` instead of
`typing.List[str]`). I believe this required Python 3.9.
Change-Id: I3698e28555e236a03126d4cd010dae4b5647ce48
Reviewed-By: Guinevere Larsen <guinevere@redhat.com>
copyright.py needed an addition for unordered_dense.h.
Then, when running it, I saw it complain about some .pyc files I had
in the source tree. I don't know why I had these, but the script
should ignore them.
For this, Kévin suggested using "git ls-files" to determine which
files to update -- that should automatically exclude any random files
in the tree. This version of the patch makes this change.
There were complaints about some sim/ppc files that were renamed.
Ignoring the entire directory seems simpler given the comment.
I also made a few more minor changes:
* Removed the 'CVS' exclusion, as this hasn't been relevant in years.
* Moved the 'copying.c' exclusion to EXCLUDE_LIST
* Changed the script to run from the top level (we could have it
automatically find this if we really wanted).
After this lands, I plan to run it and check in the result. The patch
may be too large (and certainly too uninteresting) to post, so if/when
this happens I will send a brief note to the list about it.
Approved-By: Simon Marchi <simon.marchi@efficios.com>
pre-commit currently runs flake8 only on `gdb/python/**/*.py`. There
are more files we can run it on, without running it on all the testsuite
files. Add:
- gdb/gdb-gdb.py.in
- gdb/*.py
- gdb/testsuite/*.py
Fix the new errors that popped up:
gdb/copyright.py:29:21: W605 invalid escape sequence '\*'
gdb/copyright.py:29:29: W605 invalid escape sequence '\*'
gdb/copyright.py:29:38: W605 invalid escape sequence '\*'
gdb/copyright.py:29:46: W605 invalid escape sequence '\*'
gdb/copyright.py:34:1: F401 'datetime' imported but unused
gdb/testsuite/analyze-racy-logs.py:150:9: E722 do not use bare 'except'
Change-Id: Ia864c22d4f170d4e18ce3beb06a86c49966654b2
Approved-By: Tom Tromey <tom@tromey.com>
This commit is the result of the following actions:
- Running gdb/copyright.py to update all of the copyright headers to
include 2024,
- Manually updating a few files the copyright.py script told me to
update, these files had copyright headers embedded within the
file,
- Regenerating gdbsupport/Makefile.in to refresh it's copyright
date,
- Using grep to find other files that still mentioned 2023. If
these files were updated last year from 2022 to 2023 then I've
updated them this year to 2024.
I'm sure I've probably missed some dates. Feel free to fix them up as
you spot them.
A user on irc noticed a missing backslash on one line in
update-gnulib.sh. This patch adds it.
Re-running update-gnulib.sh causes a few copyright notices to change.
Presumably these are from upstream gnulib and shouldn't be touched by
our yearly update. I've updated the script to account for this, but I
did not want to try testing it...
This commit is the result of running the gdb/copyright.py script,
which automated the update of the copyright year range for all
source files managed by the GDB project to be updated to include
year 2023.
... to sim/ppc/powerpc.igen
This file is in the NOT_FSF_LIST because this file has a copyright
which is not assigned to the FSF. Since the file got renamed,
the corresponding entry in NOT_FSF_LIST needs to be renamed as well.
Should be functionally the same, but uses more pythonic idioms to get
fewer lines of code, and to make sure to not leak open file handles.
Approved-By: Simon Marchi <simon.marchi@efficios.com>
This moves the copyright code from gdbarch.py to a new Python source
file, gdbcopyright.py. The function in this file will find the
copyright dates by scanning the calling script. This will be reused
in a future patch.
This involved minor changes to the output of gdbarch.py. Also, I've
updated copyright.py to remove the reference to gdbarch.sh. We don't
need to mention gdbarch.py there, either.
Add gdb/syscalls/update-netbsd.sh to the reminder printed
at the end of the execution listing all the files where
a manual update of the copyright header is needed. This
scripts contains some inline code which includes a copyright
header.
This commit brings all the changes made by running gdb/copyright.py
as per GDB's Start of New Year Procedure.
For the avoidance of doubt, all changes in this commits were
performed by the script.
Re-format all Python files using black [1] version 21.4b0. The goal is
that from now on, we keep all Python files formatted using black. And
that we never have to discuss formatting during review (for these files
at least) ever again.
One change is needed in gdb.python/py-prettyprint.exp, because it
matches the string representation of an exception, which shows source
code. So the change in formatting must be replicated in the expected
regexp.
To document our usage of black I plan on adding this to the "GDB Python
Coding Standards" wiki page [2]:
--8<--
All Python source files under the `gdb/` directory must be formatted
using black version 21.4b0.
This specific version can be installed using:
$ pip3 install 'black == 21.4b0'
All you need to do to re-format files is run `black <file/directory>`,
and black will re-format any Python file it finds in there. It runs
quite fast, so the simplest is to do:
$ black gdb/
from the top-level.
If you notice that black produces changes unrelated to your patch, it's
probably because someone forgot to run it before you. In this case,
don't include unrelated hunks in your patch. Push an obvious patch
fixing the formatting and rebase your work on top of that.
-->8--
Once this is merged, I plan on setting a up an `ignoreRevsFile`
config so that git-blame ignores this commit, as described here:
https://github.com/psf/black#migrating-your-code-style-without-ruining-git-blame
I also plan on working on a git commit hook (checked in the repo) to
automatically check the formatting of the Python files on commit.
[1] https://pypi.org/project/black/
[2] https://sourceware.org/gdb/wiki/Internals%20GDB-Python-Coding-Standards
gdb/ChangeLog:
* Re-format all Python files using black.
gdb/testsuite/ChangeLog:
* Re-format all Python files using black.
* gdb.python/py-prettyprint.exp (run_lang_tests): Adjust.
Change-Id: I28588a22c2406afd6bc2703774ddfff47cd61919
This wasn't supposed to be in here when it was first merged as we
had specifically disabled it for all the tests (and ADI has papers
in place w/the FSF). Clean up this one.
This commits the result of running gdb/copyright.py as per our Start
of New Year procedure...
gdb/ChangeLog
Update copyright year range in copyright header of all GDB files.
This commit adjusts GDB's copyright.py script, following two past changes:
- gdb/gdbserver/ being move to the toplevel directory;
- gdb/common/ being renamed to gdbsupport/.
gdb/ChangeLog:
* copyright.py (get_update_list): Add "gdbserver" and "gdbsupport"
to the list of directories to update.
This will prevent this script from updating the copyright year range
for those files.
Note that aclocal.m4 and configure are already in the EXCLUDE_ALL_LIST,
so they don't need to be added to the EXCLUDE_LIST.
gdb/ChangeLog:
* copypright.py (EXCLUDE_LIST): Add 'gnulib/config.in' and
'gnulib/Makefile.in' to the list.
This commit applies all changes made after running the gdb/copyright.py
script.
Note that one file was flagged by the script, due to an invalid
copyright header
(gdb/unittests/basic_string_view/element_access/char/empty.cc).
As the file was copied from GCC's libstdc++-v3 testsuite, this commit
leaves this file untouched for the time being; a patch to fix the header
was sent to gcc-patches first.
gdb/ChangeLog:
Update copyright year range in all GDB files.
In the past, these files needed to be handled by hand, because
the testcase was sensitive to the length of the header, which was
potentially changing when new copyright years were added to
the copyright header. Now that we simply maintain and update
a range, the length of the copyright header should not change
as a consequence of the update performed by this script, so
special handling of those files is no longer necessary.
gdb/ChangeLog:
* copyright.py (BY_HAND): Remove gdb/testsuite/gdb.base/step-line.inp
and gdb/testsuite/gdb.base/step-line.c.
There is a small logical error in the part of the script that
dumps the list of files in BY_HAND + MULTIPLE_COPYRIGHT_HEADERS
but only checkis the contents of BY_HAND. The issue becomes
apparent as soon as BY_HAND is empty. Prevent this from happening
by treating the two lists separately, as this allows us to provide
a more informative message in the case of MULTIPLE_COPYRIGHT_HEADERS.
gdb/ChangeLog:
* copyright.py (main): Dump the contents of
MULTIPLE_COPYRIGHT_HEADERS (separately) from BY_HAND,
even if BY_HAND is empty.
This applies the second part of GDB's End of Year Procedure, which
updates the copyright year range in all of GDB's files.
gdb/ChangeLog:
Update copyright year range in all GDB files.
Now that the erc32 files have been updated to contain an FSF copyright
header, these files should no longer be in the exclude list.
gdb/ChangeLog:
* copyright.py (NOT_FSF_LIST): Remove sim/erc32 entries.
The script was excluding all of gdb/gnulib but this is no longer
correct, ever since we moved the imported files to gdb/gnulib/import.
As a result, a number of files (Makefile, etc, including this script
itself) did not have their copyright header updated. This fixes
the problem.
gdb/ChangeLog:
* copyright.py (EXCLUDE_LIST): Replace "gdb/gnulib" by
"gdb/gnulib/import".
As glibc_thread_db.h is a 3rd party imported file, we should not
update its copyright year range in the new year process.
gdb/
2013-04-16 Pedro Alves <palves@redhat.com>
* copyright.py (EXCLUDE_LIST): Add gdb/common/glibc_thread_db.h.
Two modifications:
1. The addition of 2013 to the copyright year range for every file;
2. The use of a single year range, instead of potentially multiple
year ranges, as approved by the FSF.
copyright.py was updating gdbarch.sh' copyright years, but not
the function that genarates the copyright headers for gdbarch.[hc].
This patch makes the following changes:
- fixes gdbarch.sh and regenerates gdbarch.[hc]
- Modify copyright.py to remind the user to update gdbarch.sh
by hand. This should also remind the user to rerun the script
and update gdbarch.[hc] - see next point;
- Allow copyright.py to update gdbarch.[hc]'c copyright years,
even though these are generated files; This should free
the user from having to update gdbarch.[hc] himself;
gdb/ChangeLog:
* gdbarch.sh (copyright): Update copyright years.
* gdbarch.h, gdbarch.c: Regenerate.
* copyright.py (EXCLUDE_LIST): Remove gdbarch.h and gdbarch.c.
(MULTIPLE_COPYRIGHT_HEADERS): Add 'gdb/gdbarch.sh'.
There was a duplicate ("sim/common/cgen-fpu.h"), and one entry where
we do have an FSF copyright header ("sim/common/sim-fpu.c").
gdb/ChangeLog:
* copyright.py (NOT_FSF_LIST): Remove duplicate entry
"sim/common/cgen-fpu.h". Remove invalid entries
"sim/common/sim-fpu.c" and "sim/mn10300/sim-main.h",
which actually have an FSF copyright header.
Normally, all files should have a copyright header, but gdb/CONTRIBUTE
currently doesn't, and it adding one at the top of the file would
probably be more pollution than information. So don't require
a copyright header for now.
gdb/ChangeLog:
* copyright.py (EXCLUDE_LIST): Add 'gdb/CONTRIBUTE' to list.
The location where we store the gnulib import has changed.
This patch updates accordingly the path to gnulib's update-copyright
script.
gdb/ChangeLog:
* copyright.py (update_files, main): Fix path to update-copyright
script.
gdb/ChangeLog:
* copyright.py (MULTIPLE_COPYRIGHT_HEADERS): New constant.
(main): Add MULTIPLE_COPYRIGHT_HEADERS to the list of files
for which a reminder to update by hand is printed.
This was a local hack to work around a limitation in update-copyright.
But the limitation is now OBE, because the copyright statements should
now always fit on a single line, thanks to the new policy of using
one single year range in the copyright notice.
gdb/ChangeLog:
* copyright.py (MULTILINE_COMMENT_PREFIXES): Delete.
(update_files): Do not set MULTILINE_COMMENT_PREFIXES
environment variable before calling update-copyright.
... and update our copyright.py script to set environment variable
UPDATE_COPYRIGHT_USE_INTERVALS to '2' instead of '1'. This tells
the script to collapse all years into one single interval.
gdb/ChangeLog:
* gnulib/extra/update-copyright: Update to the latest from
gnulib's git repository.
* copyright.py: Set UPDATE_COPYRIGHT_USE_INTERVALS environment
variable to 2 instead of 1.
This patch now retires the old copyright.sh script which was using
emacs to perform the copyright update. It also completely rewrite
copyright.py to call update-copyright with the appropriate list
of files.
In addition to calling update-copyright, the new script also performs
a sanity-check on all the files that update-copyright could not update,
and sees whether the file might contain a copyright notice that
the script could not decipher.
gdb/ChangeLog:
* copyright.sh: Delete.
* copyright.py: Rewrite.