[petsc-dev] Bug in make checkbadSource python code
Barry Smith
bsmith at petsc.dev
Sun Jan 25 08:15:22 CST 2026
It is not a “bad file” it is just some junk file left by a bad editor. Definitely the script should be ignoring such files. The script should probably be using git to get the list of files; it has no business checking files that are not in the repository.
> On Jan 24, 2026, at 11:10 PM, Satish Balay <balay.anl at fastmail.org> wrote:
>
> In some sense - you had a bad file that was getting processed - and
> the script gave you an error. - And from the stack trace - you could
> determine and delete the bad file - so its a good thing?
>
> But I guess the functionality issue here is - this script should
> ignore ".#*" (or ".*") files? [A bit hacky patch here]:
>
> Satish
> ---------
> balay at p1 /home/balay/petsc (main =)
> $ touch include/.#petscsystypes.h
> balay at p1 /home/balay/petsc (main =)
> $ chmod a-rwx include/.#petscsystypes.h
> balay at p1 /home/balay/petsc (main =)
> $ ./lib/petsc/bin/maint/check_header_guard.py --action=check --kind=pragma_once -- ./src ./include
> Traceback (most recent call last):
> File "/home/balay/petsc/./lib/petsc/bin/maint/check_header_guard.py", line 508, in <module>
> ret = command_line_main()
> File "/home/balay/petsc/./lib/petsc/bin/maint/check_header_guard.py", line 495, in command_line_main
> ret = main(args)
> File "/home/balay/petsc/./lib/petsc/bin/maint/check_header_guard.py", line 436, in main
> errors.extend(replace_in_file(dirpath / f, args, replacer_cls))
> ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> File "/home/balay/petsc/./lib/petsc/bin/maint/check_header_guard.py", line 369, in replace_in_file
> lines = path.read_text().splitlines()
> ~~~~~~~~~~~~~~^^
> File "/usr/lib64/python3.14/pathlib/__init__.py", line 787, in read_text
> with self.open(mode='r', encoding=encoding, errors=errors, newline=newline) as f:
> ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> File "/usr/lib64/python3.14/pathlib/__init__.py", line 771, in open
> return io.open(self, mode, buffering, encoding, errors, newline)
> ~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> PermissionError: [Errno 13] Permission denied: '/home/balay/petsc/include/.#petscsystypes.h'
> balay at p1 /home/balay/petsc (main =)
> $ cat fix.diff
> diff --git a/lib/petsc/bin/maint/check_header_guard.py b/lib/petsc/bin/maint/check_header_guard.py
> index f246fd62890..b56528e8bc3 100755
> --- a/lib/petsc/bin/maint/check_header_guard.py
> +++ b/lib/petsc/bin/maint/check_header_guard.py
> @@ -432,7 +432,7 @@ def main(args: argparse.Namespace) -> int:
> dirs[:] = [d for d in dirs if d not in exclude_dirs]
> dirpath = pathlib.Path(dirname)
> for f in files:
> - if f not in exclude_files:
> + if f not in exclude_files and not f.startswith('.#'):
> errors.extend(replace_in_file(dirpath / f, args, replacer_cls))
>
> if errors:
> balay at p1 /home/balay/petsc (main =)
> $ patch -Np1 < fix.diff
> patching file lib/petsc/bin/maint/check_header_guard.py
> balay at p1 /home/balay/petsc (main *=)
> $ ./lib/petsc/bin/maint/check_header_guard.py --action=check --kind=pragma_once -- ./src ./include
> balay at p1 /home/balay/petsc (main *=)
> $ echo $?
> 0
>
>
> On Sat, 24 Jan 2026, Barry Smith wrote:
>
>>
>> $ make checkbadSource
>> Traceback (most recent call last):
>> File "/Users/barrysmith/Src/petsc/lib/petsc/bin/maint/check_header_guard.py", line 508, in <module>
>> ret = command_line_main()
>> File "/Users/barrysmith/Src/petsc/lib/petsc/bin/maint/check_header_guard.py", line 495, in command_line_main
>> ret = main(args)
>> File "/Users/barrysmith/Src/petsc/lib/petsc/bin/maint/check_header_guard.py", line 436, in main
>> errors.extend(replace_in_file(dirpath / f, args, replacer_cls))
>> File "/Users/barrysmith/Src/petsc/lib/petsc/bin/maint/check_header_guard.py", line 369, in replace_in_file
>> lines = path.read_text().splitlines()
>> File "/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.9/lib/python3.9/pathlib.py", line 1256, in read_text
>> with self.open(mode='r', encoding=encoding, errors=errors) as f:
>> File "/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.9/lib/python3.9/pathlib.py", line 1242, in open
>> return io.open(self, mode, buffering, encoding, errors, newline,
>> File "/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.9/lib/python3.9/pathlib.py", line 1110, in _opener
>> return self._accessor.open(self, flags, mode)
>> FileNotFoundError: [Errno 2] No such file or directory: '/Users/barrysmith/Src/petsc/include/.#petscsystypes.h'
>> make[1]: [checkbadSource] Error 1 (ignored)
>> ^Cmake: *** [checkbadSource] Interrupt: 2
>>
>> ~/Src/petsc (barry/2026-01-13/ftn-generation-for-context-functions *=) arch-ftn-generation-for-context-functions
>> $ rm /Users/barrysmith/Src/petsc/include/.#petscsystypes.h
>> ~/Src/petsc (barry/2026-01-13/ftn-generation-for-context-functions *=) arch-ftn-generation-for-context-functions
>> $ checkbadSource
>> -bash: checkbadSource: command not found
>> ~/Src/petsc (barry/2026-01-13/ftn-generation-for-context-functions *=) arch-ftn-generation-for-context-functions
>> $ make checkbadSource
>> ~/Src/petsc (barry/2026-01-13/ftn-generation-for-context-functions *=)
>>
>>
>>
>
More information about the petsc-dev
mailing list