#!/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 ] [--no-enabled-too] [-repository ] 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="$lchanges" 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 ERR($stage)" 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 <package/$repo/$pkg$lchanges(${ver//>/>})$lbuild$lstatus EOT else echo -e "package/$repo/$pkg\t$lchanges\t($ver)\t$lbuild\t$lstatus" fi } if [ "$HTMLDIR" ]; then cat < Audit Build $config over revision $( svn info | grep Revision | cut -d' ' -f2 ) $( [ "$repositories" ] && echo "

$repositories

" ) 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 "" if [ -d "$HTMLDIR/$config" ]; then mv $HTMLDIR/$config $HTMLDIR/$config.$$-old fi mv $HTMLDIR/$config.$$ $HTMLDIR/$config/ rm -rf $HTMLDIR/$config.$$-old fi
Package SVN Status Version Build Status Result