1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
|
#!/bin/sh
#
# This script runs dbuild on a Debian source mirror and makes the failed
# build logs available on the web.
#
# Lars Wirzenius <liw@iki.fi>
set -e
[ -z "$DBUILD" ] && DBUILD="dbuild -V -v -a -s"
echo "Running $DBUILD..."
$DBUILD "$@"
rm -f OK/*.deb
echo "Building logs..."
rm -rf logs-failed
mkdir logs-failed
for dir in FAILED IGNORED
do
if ls $dir | grep messages > /dev/null
then
ln $dir/*.messages logs-failed
fi
if ls $dir | grep '\.note$' > /dev/null
then
ln $dir/*.note logs-failed
fi
done
nfailed=`ls logs-failed | wc -l`
nok=`ls OK | wc -l`
for dir in a b c d e f g h i j k l m n o p q r s t u v w x y z
do
if ls logs-failed | grep "^$dir.*messages\$" >/dev/null
then
mkdir -p logs-failed/$dir
mv logs-failed/$dir*.messages logs-failed/$dir
fi
if ls logs-failed | grep "^$dir.*note\$" >/dev/null
then
mkdir -p logs-failed/$dir
mv logs-failed/$dir*.note logs-failed/$dir
fi
done
if ls logs-failed | grep messages > /dev/null
then
mkdir -p logs-failed/Other
mv logs-failed/*.messages logs-failed/Other
fi
if ls logs-failed | grep note > /dev/null
then
mkdir -p logs-failed/Other
mv logs-failed/*.note logs-failed/Other
fi
dirs_html=""
for dir in `cd logs-failed; echo */`
do
dir=`echo $dir | tr -d /`
if [ ! -z "$dirs_html" ]
then
dirs_html="$dirs_html, "
fi
dirs_html="$dirs_html <a href=\"$dir/index.html\">$dir</a>"
done
dirs_html="$dirs_html."
dpkg --list > logs-failed/packages-installed.txt
sed "s#DIRSHTML#$dirs_html#;s#DATE#`date -R`#;s#NFAILED#$nfailed#;s#NOK#$nok#;s#ARCH#`dpkg --print-architecture`#g" /usr/lib/dbuild/index.html > logs-failed/index.html
chmod -R go=u,go-w logs-failed
for dir in logs-failed/*/
do
out=$dir/index.html
rm -f $out
echo "<html><head><title>dbuild failed logs</title></head>" >>$out
echo "<body><h1>Packages beginning with `basename $dir`</h1>" >>$out
echo "<ul>" >>$out
for file in $dir/*.messages
do
base=`basename $file .messages`
note=$dir/$base.note
pkg=`echo $base | sed 's/_.*//'`
ver=`echo $base | sed 's/.*_//'`
echo "<li><a href=\"$base.messages\">$pkg</a> $ver" >>$out
if [ -e $note ]
then
echo "<blockquote><pre>" >>$out
sed 's/^/ /' $note >> $out
echo "</pre></blockquote>" >>$out
fi
done
echo "</ul></body></html>" >>$out
done
# echo "Publishing logs..."
# ssh eros rm -rf public_html/debian/dbuild-logs
# scp -r logs-failed eros:public_html/debian/dbuild-logs
echo "Done."
|