setupBuildInfo()
{
   # Dump the stuff we want the overnight page to display to identify this build
   echo "PRODUCT=$PRODUCT" >> $LOGDIR/BUILDINFO
   echo "RUNNER=$RUNNER" >> $LOGDIR/BUILDINFO
   echo "LOG_HOST=$LOG_HOST" >> $LOGDIR/BUILDINFO
   echo "LOG_USER=$LOG_USER" >> $LOGDIR/BUILDINFO
   echo "RCP=$RCP" >> $LOGDIR/BUILDINFO
   echo "RSH=$RSH" >> $LOGDIR/BUILDINFO
   echo "REPOSITORY_URL=$REPOSITORY_URL" >> $LOGDIR/BUILDINFO
   echo "SETUP_TYPE=$SETUP_TYPE" >> $LOGDIR/BUILDINFO
   echo "BUILD_DIST=$BUILD_DIST" >> $LOGDIR/BUILDINFO
   echo "BUILD_SRC=$BUILD_SRC" >> $LOGDIR/BUILDINFO
   echo "KEEP_DIST=$KEEP_DIST" >> $LOGDIR/BUILDINFO
   echo "BUILD_DBT=$BUILD_DBT" >> $LOGDIR/BUILDINFO
   echo "BUILD_RBT=$BUILD_RBT" >> $LOGDIR/BUILDINFO
   echo "RUN_DBT=$RUN_DBT" >> $LOGDIR/BUILDINFO
   echo "RUN_RBT_SHM=$RUN_RBT_SHM" >> $LOGDIR/BUILDINFO
   echo "RUN_RBT_SP=$RUN_RBT_SP" >> $LOGDIR/BUILDINFO
   echo "RUN_EXAMPLES_SHM=$RUN_EXAMPLES_SHM" >> $LOGDIR/BUILDINFO
   echo "RUN_EXAMPLES_SP=$RUN_EXAMPLES_SP" >> $LOGDIR/BUILDINFO
   echo "VALGRIND=$VALGRIND" >> $LOGDIR/BUILDINFO
   echo "REV=$REV" >> $LOGDIR/BUILDINFO
   echo "VER=$VER" >> $LOGDIR/BUILDINFO
   echo "DEP=$DEP" >> $LOGDIR/BUILDINFO
   echo "HIGHLIGHTED=$HIGHLIGHTED" >> $LOGDIR/BUILDINFO

   cp $LOGDIR/BUILDINFO $WORKDIR/build/etc/
}

test_configure ()
{
    grep 'Variable Setup' $1 > /dev/null 2>&1
    T_CONFIG=$?
    if [ "$T_CONFIG" = 0 ]
    then
        return 1
    fi
    return 0
}

test_build ()
{
    test_configure $*
    T_BUILD_1=$?
    pushd `dirname $1` > /dev/null
    perl $IBSDIR/../../../bin/process_build_logs.pl -f $1
    T_BUILD_2=$?
    popd > /dev/null
    test $2 = 0 -a $T_BUILD_1 != 0 -a $T_BUILD_2 = 0
    return $?
}

test_example_build ()
{
    pushd $1 > /dev/null
    perl $IBSDIR/../../../bin/process_build_logs.pl -e $1
    T_BUILD_1=$?
    popd > /dev/null
    return $T_BUILD_1
}

create_valgrind_summary ()
{
    # return 0 = pass
    # return 1 = valgrind errors
    # return 2 = valgring leaks
    VG_ROOT_DIR=$1
    SUMMARY_FILE=$VG_ROOT_DIR/vg_summary.html
    status=0

    echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">' > $SUMMARY_FILE
    echo "<HTML>" >> $SUMMARY_FILE
    echo "<HEAD>" >> $SUMMARY_FILE
    echo "<TITLE>Valgrind Examples</TITLE>" >> $SUMMARY_FILE
    echo "</HEAD>" >> $SUMMARY_FILE
    echo "<BODY bgcolor=white >" >> $SUMMARY_FILE
    echo "<font face=\"monospace\">" >> $SUMMARY_FILE

    HERE=`pwd`
    cd $VG_ROOT_DIR || ( echo "Unable to cd to $VG_ROOT_DIR"; return 1 )

    for i in `find . -maxdepth 1 -type d`
    do
        FILENAME=`basename $i`
        if [ "$FILENAME" != "." ]
        then
            cd $FILENAME || ( echo "Unable to cd to $i"; return 1 )
            ls vg_*.txt > /dev/null 2>&1
            if [ $? = 0 ]
            then
                echo "<H2><u>Summary for $FILENAME</u></H2>" >> $SUMMARY_FILE
                echo "" >> $SUMMARY_FILE
                for j in `ls vg_*.txt`
                do
                    COMMAND=`grep "Command: " $j | cut -f 3- -d ' '`
                    ERROR_SUMMARY=`grep "ERROR SUMMARY: " $j | uniq | cut -f 4- -d ' ' | sed 's/^0 errors /<font COLOR="green">0 errors <\/font>/g' \
                                     | sed '/ 0 errors /!s@^\([0-9,]* errors \)\(.*\)@<font COLOR="red"><b>\1<\/b><\/font>\2@g'`
                    LEAK_SUMMARY=`awk 'FS="" $0~/( LEAK SUMMARY:)/{ found = 1 }; \
                                     $0~/^(==[0-9]*== [^A-Za-z0-9])/{ if ( found == 1 ) { { new = gensub( "^(==[0-9]*== )", "", 1 ) }; print new "</br>" ; }; }; \
                                     $0~/(suppressed:)/{ found = 0 }' < $j | sed 's/ /\&nbsp;/g' | sed 's/\&nbsp;0\&nbsp;bytes\&nbsp;/<font COLOR="green">\&nbsp;0<\/font>\&nbsp;bytes\&nbsp;/g' \
                                     | sed '/\&nbsp;0\&nbsp;bytes\&nbsp;/!s@^\(.*\)\(\&nbsp;[0-9,]*\&nbsp;\)\(bytes\&nbsp;.*\)@\1<font COLOR="red"><b>\2<\/b><\/font>\3@g'`
                    if [ "$status" != 1 ]
                    then
                        if [ "`echo $ERROR_SUMMARY | grep -v \" 0 errors\"`" != "" ]
                        then
                            status=1
                        else
                            if [ "`echo $LEAK_SUMMARY | grep -v \"definitely lost: 0 bytes\"`" != "" ]
                            then
                                status=2
                            fi
                        fi
                    fi
                    echo "<b>Run of [<font COLOR=\"blue\">${COMMAND}</font>]</b>" >> $SUMMARY_FILE
                    echo "</br>" >> $SUMMARY_FILE
                    echo "Full Log <a HREF=$FILENAME/$j><b>$j</b></a>" >> $SUMMARY_FILE
                    echo "</br>" >> $SUMMARY_FILE
                    if [ -z "$ERROR_SUMMARY" -o -z "$LEAK_SUMMARY" ]
                    then
                        echo "<font COLOR=\"red\"><BLINK><b>&nbsp;&nbsp;&nbsp;There is no error or leak summary this should be looked into.</b></BLINK></font></br>" >> $SUMMARY_FILE
                        echo "</br>" >> $SUMMARY_FILE
                        status=1
                    else
                        echo "<b>ERROR SUMMARY:</b>" >> $SUMMARY_FILE
                        echo "</br>" >> $SUMMARY_FILE
                        echo "&nbsp;&nbsp;&nbsp;$ERROR_SUMMARY" >> $SUMMARY_FILE
                        echo "</br>" >> $SUMMARY_FILE
                        echo "<b>LEAK SUMMARY:</b>" >> $SUMMARY_FILE
                        echo "</br>" >> $SUMMARY_FILE
                        echo "$LEAK_SUMMARY" >> $SUMMARY_FILE
                        echo "</br>" >> $SUMMARY_FILE
                    fi
                done
                echo "<br>" >> $SUMMARY_FILE
                echo "<br>" >> $SUMMARY_FILE
            fi
            cd ..
        fi
    done
    cd $HERE

    echo "</BODY>" >> $SUMMARY_FILE
    echo "</HTML>" >> $SUMMARY_FILE

    return $status
}

test_build_dist ()
{
    pushd `dirname $1` > /dev/null
    perl $IBSDIR/../../../bin/process_build_logs.pl -f $1
    T_BUILD_DIST_1=$?
    popd > /dev/null
    test_configure $*
    T_BUILD_DIST_2=$?

    test 0 = $2 -a $T_BUILD_DIST_1 = 0 -a $T_BUILD_DIST_2 != 0
    return $?
}

test_archive_dist ()
{
    test $2 = 0
    return $?
}

test_create_source ()
{
    test $2 = 0
    return $?
}

test_build_dbt_tests()
{
    grep '\*\*\*.* Error [0-9]*' $1 > /dev/null 2>&1
    T_BUILD_DBT_1=$?
    test_configure $*
    T_BUILD_DBT_2=$?
    pushd `dirname $1` > /dev/null
    perl $IBSDIR/../../../bin/process_build_logs.pl -f $1
    T_BUILD_DBT_3=$?
    popd > /dev/null
    test $2 = 0 -a $T_BUILD_DBT_1 != 0 -a $T_BUILD_DBT_2 != 0 -a $T_BUILD_DBT_3 = 0
    return $?
}

test_perform_dbt_tests ()
{
    if [ ! -d $1 ]
    then
        return 1
    fi

    if [ ! -f $1/management_summary.txt ]
    then
        return 1
    fi

    PASS=`grep 'DBT PASS count' $1/management_summary.txt | awk -F': ' '{ print $2 }'`
    FAIL=`grep 'DBT FAIL count' $1/management_summary.txt | awk -F': ' '{ print $2 }'`
    XPASS=`grep 'DBT XPASS count' $1/management_summary.txt | awk -F': ' '{ print $2 }'`
    MISSING=`grep 'DBT missing testcases' $1/management_summary.txt | awk -F': ' '{ print $2 }'`
    CORES=`grep 'DBT Core dumps' $1/management_summary.txt | awk -F': ' '{ print $2 }'`
    if [ $FAIL = 0 -a $XPASS = 0 -a $MISSING = 0 -a $CORES = 0 ]
    then
        test_configure $2
        T_PERFORM_DBT_1=$?
        if [ "$3" = 0 -a "$T_PERFORM_DBT_1" != 0 ]
        then
           return 0
        else
           DBT_INFO="RUN/DBT=FAIL"
           return 1
        fi
    else
        DBT_TMP_INFO="P:${PASS}_XP:${XPASS}_F:${FAIL}_M:${MISSING}_C:${CORES}"
        DBT_INFO=`echo $DBT_TMP_INFO | tr -d ' '`
        return 1
    fi
}

test_build_rbt_tests ()
{
    test_configure $*
    T_BUILD_RBT_1=$?
    pushd `dirname $1` > /dev/null
    perl $IBSDIR/../../../bin/process_build_logs.pl -f $1
    T_BUILD_RBT_2=$?
    popd > /dev/null
    test $2 = 0 -a $T_BUILD_RBT_1 != 0 -a $T_BUILD_RBT_2 = 0
    return $?
}

test_perform_rbt_tests ()
{
    if [ ! -d $1 ]
    then
        return 1
    fi

    TODAY_RBT=`date +'%Y%m%d'`
    if [ ! -f $1/RBTmetrics_${TODAY_RBT}.txt ]
    then
        return 1
    fi

    PASS=`grep 'RBT PASS' $1/RBTmetrics_${TODAY_RBT}.txt | awk -F': ' '{ print $2 }'`
    FAIL=`grep 'RBT FAIL' $1/RBTmetrics_${TODAY_RBT}.txt | awk -F': ' '{ print $2 }'`
    XPASS=`grep 'RBT XPASS' $1/RBTmetrics_${TODAY_RBT}.txt | awk -F': ' '{ print $2 }'`
    MISSING=`grep 'Crashed tests amount' $1/RBTmetrics_${TODAY_RBT}.txt | awk -F': ' '{ print $2 }'`
    CORES=`grep 'Core dumps' $1/RBTmetrics_${TODAY_RBT}.txt | awk -F': ' '{ print $2 }'`
    if [ $FAIL = 0 -a $XPASS = 0 -a $MISSING = 0 ]
    then
        test_configure $2
        T_PERFORM_RBT_1=$?
        if [ "$3" = 0 -a "$T_PERFORM_RBT_1" != 0 ]
    then
           return 0
        else
           RBT_INFO="FAIL"
           return 1
        fi
    else
        RBT_TMP_INFO="P:${PASS}_XP:${XPASS}_F:${FAIL}_M:${MISSING}_C:${CORES}"
        RBT_INFO=`echo $RBT_TMP_INFO | tr -d ' '`
        return 1
    fi
}

test_perform_examples ()
{
    if [ ! -d $1 ]
    then
        return 1
    fi

    if [ ! -f $1/totals.log ]
    then
        return 1
    fi

    PASS=`grep 'Examples Passed' $1/totals.log | awk -F'= ' '{ print $2 }'`
    FAIL=`grep 'Examples Failed' $1/totals.log | awk -F'= ' '{ print $2 }'`

    if [ $FAIL = 0 ]
    then
        return 0
    else
        EX_TMP_INFO="P:${PASS}_F:${FAIL}"
        EX_INFO=`echo $EX_TMP_INFO | tr -d ' '`
        return 1
    fi
}