freebsd-ports/Tools/portbuild/scripts/processlogs2
Mark Linimon a588885b10 Generalize the packge building scripts to be able to be run on more than
one 'head' node, rather than just pointyhat itself.

Constants are factored out into installation-specific files known as
portbuild/conf/server.conf and portbuild/conf/client.conf.  There is
only one server.conf file.  Individual <arch> directories may have
their own client.conf files, or may symlink to ../conf/client.conf.

Note the change of the misnomer filename 'cvsdone' to '.updated'.

Feature safe:	yes
2010-06-25 23:38:01 +00:00

67 lines
2.8 KiB
Bash
Executable file

#!/bin/sh
of=extras.html.new
if [ \! -e .force -a -e .stamp -a $(echo $(find . -newer .stamp -type f -name '*.log' 2>/dev/null | wc -l)) = "0" ]; then exit; fi
echo "<html><head><title>List of files and directories that do not match their mtree description</title>" >$of
echo "<h1>List of files and directories that do not match their mtree description</h1>" >>$of
echo "</head><body>" >>$of
rm -f .force
touch .stamp
find . -name '*.log' | xargs grep -l '^list of.*file' | sort | sed -e 's/^..//' > .tmp
if [ $(echo $(cat .tmp | wc -l)) = 0 ]; then
echo "No extra files (yet)" >> $of
else
set $(cat .tmp)
num=$#
if [ -s .updated ]; then
echo "(ports update finished at: $(cat .updated))<br>" >> $of
fi
echo "(timestamp of newest log: $(ls -rtTl | grep '\.log$' | tail -1 | awk '{printf("%s %s %s %s\n",$6,$7,$8,$9)}'))<br><br>" >> $of
echo "<table border=1>" >>$of
echo "<tr><th>Log</th><th>Aff.</th><th>Size</th><th>Repository</th><th>Maintainer</th><th>Pathname</th></tr>" >>$of
while [ $# -gt 0 ]; do
log=$(basename $1 .log)
echo -n "<tr><td valign=\"top\">" >>$of
echo -n "<a name=\"$log.log\"></a>" >> $of
echo -n "<a href=\"$log.log\">" >>$of
echo -n $log >>$of
echo -n "</a>" >>$of
echo -n "</td><td align=right valign=\"top\">" >>$of
affected=$(($(grep -cF $log < INDEX) - 1))
if [ $affected != 0 ]; then echo -n $affected >>$of; fi
echo -n "</td><td align=right valign=\"top\">" >>$of
size=$(/bin/ls -sk $log.log | awk '{print $1}')
echo -n "$size KB" >>$of
echo -n "</td><td valign=\"top\">" >>$of
dir=$(sed -n -e '5p' $log.log | awk '{print $3}' | sed -e 's,^/[^/]*/[^/]*/,,')
echo -n "<a href=\"http://www.FreeBSD.org/cgi/cvsweb.cgi/ports/$dir\">$dir</a>" >>$of
echo -n "</td><td valign=\"top\">" >>$of
maint=$(sed -n -e '4p' $log.log | awk '{print $3}')
maints="$maints $maint"
echo -n "<a href=\"mailto:$maint\">$maint</a>" >>$of
echo "</td><td valign=\"top\">" >>$of
cat $log.log | sed -e '1,/^list of extra files and directories/d' -e '/^list of/,$d' | awk '{print $11}' | sed -E -e 's,^,<font color=\"magenta\">,' -e 's,(usr/(local|X11R6)),<font color=\"black\">\1,g' -e 's,$,</font></font><br>,' >>$of
cat $log.log | sed -e '1,/^list of files present before this port was installed/d' -e '/^list of/,$d' -e 's,^\./,,' | awk '{print $1}' | sed -e 's,^,<font color=\"orange\">,' -e 's,$, (missing)</font><br>,' >> $of
cat $log.log | sed -e '1,/^list of filesystem changes/d' -e '/^ /d' | awk '{print $1}' | sed -e 's,^,<font color=\"red\">,' -e 's,$, (changed)</font><br>,' >>$of
echo "</td></tr>" >>$of
shift
done
echo "</table><br>" >> $of
echo "$num errors<br>" >> $of
fi
rm .tmp
echo "<hr>" >> $of
echo "<a href=\"../\">back to top</a>" >> $of
echo "</body></html>" >>$of
mv -f $of extras.html
echo $maints | sed -e 's/ /\
/g' | sort -fu > maintainers