@timotimo did a good job on redoing stagestats to show all of the dependencies in a tree-like format. Here's a grammar that will parse it.
Note: It may need some massaging for your own use. This is from my p6-GtkProject.
my $ss = q:to/SS/;
=== Module ===
Stage start : 0.000
precomp ../p6-GtkPlus/lib/GTK/Compat/Pixbuf.pm6
Stage start : 0.000
precomp ../p6-GtkPlus/lib/GTK/Compat/Raw/Pixbuf.pm6
Stage start : 0.000
Stage parse : 2.104
Stage syntaxcheck: 0.000
Stage ast : 0.000
Stage optimize : 0.048
Stage mast : 0.171
Stage mbc : 0.005
precomp ../p6-GtkPlus/lib/GTK/Compat/Pixbuf/Transforms.pm6
Stage start : 0.000
precomp ../p6-GtkPlus/lib/GTK/Compat/Raw/Pixbuf/Transforms.pm6
Stage start : 0.000
Stage parse : 0.758
Stage syntaxcheck: 0.000
Stage ast : 0.000
Stage optimize : 0.017
Stage mast : 0.053
Stage mbc : 0.003
Stage parse : 1.739
Stage syntaxcheck: 0.000
Stage ast : 0.000
Stage optimize : 0.017
Stage mast : 0.054
Stage mbc : 0.002
Stage parse : 5.901
Stage syntaxcheck: 0.000
Stage ast : 0.000
Stage optimize : 0.137
Stage mast : 0.167
Stage mbc : 0.005
precomp ../p6-GtkPlus/lib/GTK/Compat/Raw/Cursor.pm6
Stage start : 0.000
Stage parse : 0.880
Stage syntaxcheck: 0.000
Stage ast : 0.000
Stage optimize : 0.011
Stage mast : 0.058
Stage mbc : 0.003
Stage parse : 8.468
Stage syntaxcheck: 0.000
Stage ast : 0.000
Stage optimize : 0.015
Stage mast : 0.058
Stage mbc : 0.002
SS
grammar ParseBuildResults {
regex TOP {
<top_section>?
<section>*
\v+
<summary>*
}
regex top_section {
^^ 'Dependency Generation' \s+
^^ '=====================' \v+
<summary>*
}
regex section {
<header> \s+ <stage>*
}
# regex summary {
# <summary_type> \s* $<min>=(\d+) 'm' <sec=num> 's' \s*
# }
regex summary {
<summary_type> \s+ <num> \s+
}
regex header {
^^ \s* '=== ' <module> ' ===' $$
}
regex stage {
^^ \s* 'Stage ' <stage_type> \s* ':' [
\s* <num> \s*
|
\s* <err_msg> \s*
]
[ \s* 'precomp' \s* .+? \s* <stage>* ]?
}
regex err_msg {
'===SORRY!===' .+? <?before \v '==='> $$
}
token module {
$<name>=[ (\w+)+ % '::' ] [\h* $<salt>='*']?
}
token num {
\d+ '.' \d+
}
token stage_type {
'start' | 'parse' | 'syntaxcheck' | 'ast' |
'optimize' | 'mast' | 'mbc' | 'moar'
}
token summary_type{
'real' | 'user' | 'sys'
}
}
my $m = ParseBuildResults.parse($ss);
$m.gist.say