abinit/doc/developers/debug_make_parents

64 lines
1.9 KiB
Plaintext

## How to make the parents script happy
The script parents relies heavily on the Robodoc-type structuration of the source file.
In particular, a source file should be made of sets of robodoc blocks, possibly separated
by comments or blank lines.
In most of the source files, one block relates to a subroutine, typically:
!!****f* ABINIT/name_of_subroutine
!! NAME
!! name_of_subroutine
<...>
subroutine name_of_subroutine
<...>
!!***
The most common source of errors comes from the fact that
the *parent.pl* script expects the name_of_subroutine to be coherent in the three above occurrences.
In this case, you should get something like:
Error: Robodoc subroutine NAME missing in <dir/name_of_routine.F90>
For example, the following will generate an error
!!****f* ABINIT/blabla
!! NAME
!! blabla
<...>
subroutine blabla_int
<...>
!!***
It will be easy to correct this piece of code:
!!****f* ABINIT/blabla_int
!! NAME
!! blabla_int
<...>
subroutine blabla_int
<...>
!!***
Unfortunately, in some ABINIT source files, the number of such blocks can be large (bigger than 10),
and the above-mentioned error message does not mention the line where the error was found, neither
the subroutine for which there has been a mismatch. How to find the place where the error occurred?
In the full list of messages obtained when executing
make parent
one can find the list of block in this source file for which make parent succeeded.
The suggestion is thus to examine the list of blocks or subroutines (e.g. grep 'end subroutine'),
and proceed by elimination: the one that failed is the only one who did not succeed.
Sorry if this procedure is not very nice.
Q2 **How to debug if a section of the source file disappeared?**
Answer: Well, it is likely that you have forgotten the keyword
SOURCE
after the section CHILDREN.