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 <[email protected]> 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@p1 /home/balay/petsc (main =)
> $ touch include/.#petscsystypes.h
> balay@p1 /home/balay/petsc (main =)
> $ chmod a-rwx include/.#petscsystypes.h
> balay@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@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@p1 /home/balay/petsc (main =)
> $ patch -Np1 < fix.diff 
> patching file lib/petsc/bin/maint/check_header_guard.py
> balay@p1 /home/balay/petsc (main *=)
> $ ./lib/petsc/bin/maint/check_header_guard.py --action=check 
> --kind=pragma_once -- ./src ./include
> balay@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 *=)
>> 
>> 
>> 
> 

Reply via email to