|
|
#!/bin/sh
# --- SDE-COPYRIGHT-NOTE-BEGIN --- # This copyright note is auto-generated by ./scripts/Create-CopyPatch. # # Filename: lib/misc/AuditBuild.sh # Copyright (C) 2008 The OpenSDE Project # Copyright (C) 2004 - 2006 The T2 SDE Project # # More information can be found in the files COPYING and README. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; version 2 of the License. A copy of the # GNU General Public License can be found in the file COPYING. # --- SDE-COPYRIGHT-NOTE-END ---
MATRIX=http://www.t2-project.org/packages
config=default enabled='X' repositories= VERBOSE= HTMLDIR= root=
show_usage() { cat<<-EOT usage: $0 [-v] [-cfg <config>] [--no-enabled-too] [-repository <repositories>] EOT }
while [ $# -gt 0 ]; do case "$1" in -cfg) config="$2"; shift ;; -v) VERBOSE=1 ;; -w) HTMLDIR="$2"; shift ;; --help) show_usage; exit 1 ;; -R) root="$2"; shift ;; --no-enabled-too) enabled=. ;; -repository) shift; repositories="$*" break ;; *) show_usage; exit 2 ;; esac shift done
if [ ! -f config/$config/packages ]; then echo "ERROR: '$config' is not a valid config" exit 1 fi
eval `grep 'SDECFG_ID=' config/$config/config 2> /dev/null` if [ "$root" ]; then LOGSDIR=$root/var/adm/logs else LOGSDIR=build/$SDECFG_ID/var/adm/logs fi if [ -z "$SDECFG_ID" -o ! -d $LOGSDIR ]; then echo "ERROR: 'build/$SDECFG_ID/' is not a valid build root (sandbox)" exit 1 fi
if [ "$HTMLDIR" ]; then mkdir -p $HTMLDIR/$config.$$/{diff,log} fi
expand_stages() { local array="$1" stage= while [ "$array" ]; do stage=${array:0:1} array=${array:1} if [ "$stage" != "-" ]; then echo -n "$stage " fi done }
audit_package() { local pkg="$1" repo="$2" ver="$3" enabled="$4" local stages= svndiff= oldver= newver= lchanges= stage= local svnst= lstatus= lbuild= file= shift 4; stages="$*"
svnst=`svn st package/$repo/$pkg` if [ "$svnst" ]; then svndiff=`svn diff package/$repo/$pkg` if [ "$svndiff" ]; then lchanges="CHANGED" oldver=`echo "$svndiff" | grep '^-\[V\]' | cut -d' ' -f2` newver=`echo "$svndiff" | grep '^+\[V\]' | cut -d' ' -f2`
if [ "$oldver" ]; then ver="$oldver -> $newver" lchanges="UPDATED" elif [ "$newver" ]; then lchanges="ADDED" fi fi if [ "$HTMLDIR" ]; then { echo "$svnst" echo "" echo "$svndiff" } > $HTMLDIR/$config.$$/diff/$pkg.diff.txt lchanges="<a href=\"diff/$pkg.diff.txt\">$lchanges</a>" fi fi
if [ "$enabled" == "O" ]; then for stage in $stages; do lbuild="$lbuild NO($stage)" done lstatus=3 else for stage in $stages; do file=`ls -1 $LOGSDIR/$stage-$pkg.{err,log,out} 2> /dev/null` lstatus= if [ "$file" ]; then case "$file" in *.log) [ "$lstatus" ] || lstatus=1 lbuild="$lbuild OK($stage)" ;; *.out) [ "$lstatus" != "2" ] || lstatus=0 lbuild="$lbuild NO($stage)" ;; *) lstatus=2 if [ "$HTMLDIR" ]; then lbuild="$lbuild <a href=\"log/$stage-$pkg.err.txt\">ERR($stage)</a>" cp $file $HTMLDIR/$config.$$/log/$stage-$pkg.err.txt else lbuild="$lbuild ERR($stage)" fi ;; esac else lbuild="$lbuild NO($stage)" [ "$lstatus" ] || lstatus=0 fi done fi case "$lstatus" in 3) lstatus=DISABLED ;; 2) lstatus=FAILED ;; 1) lstatus=SUCCESSFUL ;; *) lstatus=PENDING ;; esac if [ "$HTMLDIR" ]; then cat <<EOT <tr><td>package/$repo/<a href="$MATRIX/$pkg.html" name="$pkg">$pkg</a></td><td>$lchanges</td><td>(${ver//>/>})</td><td>$lbuild</td><td>$lstatus</td></tr> EOT else echo -e "package/$repo/$pkg\t$lchanges\t($ver)\t$lbuild\t$lstatus" fi }
if [ "$HTMLDIR" ]; then cat <<EOT <html> <head><title>Audit Build $config over revision $( svn info | grep Revision | cut -d' ' -f2 )</title> <body> $( [ "$repositories" ] && echo "<h3>$repositories</h3>" ) <table><tr> <th>Package</th> <th>SVN Status</th> <th>Version</th> <th>Build Status</th> <th>Result</th> </tr> EOT
fi if [ "$repositories" ]; then for repo in $repositories; do repo=${repo#package/}; repo=${repo%/} if [ -d package/$repo/ ]; then grep -e "^$enabled.* $repo " config/$config/packages | while \
read e stages x repo pkg ver x; do audit_package $pkg $repo $ver $e `expand_stages $stages` done fi done else grep -e "^$enabled" config/$config/packages | while \
read e stages x repo pkg ver x; do audit_package $pkg $repo $ver $e `expand_stages $stages` done fi
if [ "$HTMLDIR" ]; then echo "<body><html>"
if [ -d "$HTMLDIR/$config" ]; then mv $HTMLDIR/$config $HTMLDIR/$config.$$-old fi mv $HTMLDIR/$config.$$ $HTMLDIR/$config/ rm -rf $HTMLDIR/$config.$$-old fi
|