makepplog -- Textual analysis of the build log
?: -?, A: -A,
--args-file,
--arguments-file, C: -C,
-c,
--current-working-directory,
--current-working-directory-and-up, D: -d,
F: -f,
--follow, H: -h,
--help, I: -i,
--installation-directories,
--install-dirs, K: -K,
-k,
--keylist,
--keys, L: -l,
--log,
--log-file,
M: $MAKEPPLOGFLAGS,
N: -n,
--no-indent, O: -o,
--output, P: -p,
--prefix, S: --set-directory,
--showkey, T: -t,
--tabulate, U: -u,
--uniq,
--unique, V: -V,
--version
makepplog option ...
mppl option ...
Makepp by default writes a detailed log of its decision finding
and actions. So as to not waste its time with pretty printing, this data is
dumped in a compact, cryptic format. This tool does the pretty printing and
filtering in various formats. For a less detailed but prettier graphical
view see makeppgraph.
This is solely based on the contents of the log file
(.makepp/log), so it can be performed at any time as long as you
preserve the file, and even on a different machine. Every time makepp stops
when running with option "--loop", you get
a page break. Valid options are:
- -A filename
- --args-file=filename
- --arguments-file=filename
- Read the file and parse it as possibly quoted whitespace- and/or
newline-separated options.
- -c
- --current-working-directory
- -C number
- --current-working-directory-and-up=number
- The first two options strip the current directory from the front of all
filenames it outputs. The second two additionally replace number
directories up from here, with the necessary number of ../ entries.
These options only work meaningfully when you call makepplog
in the same directory makepp ran, or one near there.
- -d
- --set-directory
- Virtually switch to the directory where the log file was originally
produced. If you copied or moved it from there, this is necessary for
"-c" (which is implied by this option)
to shorten the original path.
- -f
- --follow
- As in "tail" command, process more lines
of logfile as it grows.
- -?
- -h
- --help
- Print out a brief summary of the options.
- -i
- --install-dirs
- --installation-directories
- These options replace the invocation of makepp and the pathes to the built
in makefiles with .../ so as to keep odd pathes out of your
sight.
- -k list
- --keys=list
- --keylist=list
- The list specifies one or more space separated Shell style patterns
(with [xyz], ?, *, {a,bc,def}). Remember to protect these from your Shell
by quoting. These are matched against the message keys (as shown by
"--showkey"). Each pattern may be
preceded with an exclamation mark ("!")
or a caret ("^") to exclude the matched
keys from those selected before instead of adding them to the selection.
If the first pattern starts with an exclamation mark, it operates on all
keys. There are a few key prefixes with fixed meanings so you can select
categories of keys:
- BC*
- All build cache related messages.
- BUILD*
- All build reason related messages.
- LOAD*
- All makefile loading related messages.
- REP*
- All repository related messages.
- RULE*
- All rule related messages.
- SCAN*
- All scanning related messages.
--keys='LOAD* RULE*' # Only makefile loading and rule messages.
--keys='!BUILD* *CMD' # No build messages, except BUILD_CMD.
- -K
- --showkey
- This prefixes each output line with the internal name of the message key,
for later use with "--keys".
- -l filename
- --log=filename
- --log-file=filename
- The filename is to where makepp wrote its log. It may also be a
directory, in which a file called .makepp/log or log will be
searched. To read from stdin, you must give - as a filename.
When this option is not given, it defaults to the current directory.
This option can be given multiple times, e.g. for merging all
the logs from
"--traditional-recursive-make". But it
will get the message version information, which keeps track of message
formats, only from the first file. So if you feed it log files from
different version of makepp in the same invocation, output can get a bit
messed up.
- -n
- --no-indent
- Makepp puts indentation information into the log file to show you what
happened because of what else. This option turns indentation off.
- -o filename
- --output=filename
- Write the output to this file, rather than stdout.
- -p
- --prefix
- Prefix every structured message with the string "makepplog: ".
IDEs like Emacs can then parse the lines and hyperlink to the mentioned
files.
- -t
- --tabulate
- Put each list item on a new line, rather than outputting a line that can
easily become longer than a screenful.
- -u
- --uniq
- --unique
- Report each found include statement and each scan output only once.
- -V
- --version
- Print out the version number.
If you want to know which file includes which other file, and
nothing else:
makeppclean -r
makepp # Full build to scan all source files.
makepplog -p '/^INCL$/'
If you want to format lines with a prefix so Emacs'
compilation-mode can parse the lines and exclude all scanning related
messages:
makepplog -mp '!/^SCAN/'
If you want to explore which keys you can exclude or include in
the above manners:
makepplog -kn
Makepplog looks at the following environment variable:
- $MAKEPPLOGFLAGS
- Any flags in this environment variable are interpreted as command line
options before any explicit options. Quotes are interpreted like in
makefiles.
Daniel Pfeiffer (occitan@esperanto.org)