123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751 |
- #!/bin/ksh
- #
- # build_summary
- #
- ########################################################################
- #set -x
- ##########################################################################
- #
- # Script setup: THIS NEEDS TO BE FIRST
- #
- SCRIPTS_DIR="`dirname $0`"
- PROG_NAME="`basename $0`"
- if [ "" = "$SCRIPTS_DIR" ]; then
- SCRIPTS_DIR=/project/dt/scripts
- fi
- if [ ! -f $SCRIPTS_DIR/script_setup.ksh ]; then
- print -u2 "$PROG_NAME: File '$SCRIPTS_DIR/script_setup.ksh' NOT found!"
- print -u2 "$PROG_NAME: Exiting ..."
- exit 1
- fi
- . $SCRIPTS_DIR/script_setup.ksh
- ##########################################################################
- ##########################################################################
- #
- # Script specific global variables
- #
- ##########################################################################
- ##########################################################################
- COMPONENTS_FILES=""
- COMPONENTS="all"
- DEBUG="False"
- SUMMARY_FILES=""
- NOT_DONE_SUMMARY_FILES=""
- PRINT_ERRORS="5"
- usage ()
- {
- cat <<eof
- USAGE: $PROG_NAME
- [{-c | -components_file} <file>]
- # Specifies a file containing a list of components to
- # be extracted. Multiple -c flags can be specified.
- [{-e | -errors} <number>]
- # Specifies the number of errors shown for each
- # component in the components files. Defaults to all.
- [-h | -? | -help]
- # Print usage and exit
- [{-l | -log_path} <path>]
- [{-m | -mail | -mail_list} <user_name(s)>]
- [{-pn | -project_name} <project_name>]
- # The default is CDE. This impacts the Subject field
- # when email is sent. Use "-pn X11" to get "X11" in
- # the Subject field.
- {-s | -summary_file} <file>
- # Specifies a summary report from a build_world.
- # $PROG_NAME accepts multiple -f flags.
- eof
- }
- ##########################################################################
- #
- # FUNCTION: is_complete_build <summary_file>
- #
- # Returns 0 if the build is complete.
- # Returns 1 if the build is not complete
- #
- is_complete_build ()
- {
- typeset SUMMARY_FILE LCMPL
- SUMMARY_FILE=$1
- LCMPL=`grep "$BTAG_CMPL" $SUMMARY_FILE | tail -1`
- if [ -z "$LCMPL" ]; then
- return 1
- fi
- }
- ###############################################################################
- #
- # FUNCTION: print_build_start_end ()
- #
- # ViewName StartTime BuildStatus
- # -------- --------- -----------
- # cde-dec STARTED: Sun Jan 16, 23:34 FINISHED: Mon Jan 17, 23:34
- # cde-hp STARTED: Sun Jan 16, 23:34 BUILDING: making all in ...
- # cde-ibm STARTED: Sun Jan 16, 23:34 FINISHED: Mon Jan 17, 23:34
- # cde-sco STARTED: Sun Jan 16, 23:34 FINISHED: Mon Jan 17, 23:34
- # cde-sgi STARTED: Sun Jan 16, 23:34 FINISHED: Mon Jan 17, 23:34
- # cde-sun STARTED: Sun Jan 16, 23:34 FINISHED: Mon Jan 17, 23:34
- #
- ###############################################################################
- print_build_start_end ()
- {
- typeset CMPL LOGD PRJT DATE VIEW
- typeset AWK_START_END_SUMMARY
- AWK_START_END_SUMMARY='{printf("%-12s %-28s %-28s\n", $1,$2,$3)}'
- echo "ViewName StartTime BuildStatus" | awk "$AWK_START_END_SUMMARY"
- echo "-------- --------- -----------" | awk "$AWK_START_END_SUMMARY"
- for r in $SUMMARY_FILES
- do
- VIEW=`grep "$BTAG_VIEW" $r | head -1 | awk '{printf("%s", $NF)}'`
- DATE=`grep "$BTAG_DATE" $r | head -1 | awk '{printf("%s", $NF)}' FS=+`
- is_complete_build $r
- if [ $? -eq 0 ]; then
- CMPL=`grep "$BTAG_CMPL" $r | tail -1 |
- awk '{printf("%s", $NF)}' FS=+`
- echo "$VIEW|STARTED: $DATE|FINISHED: $CMPL" | \
- awk "$AWK_START_END_SUMMARY" FS="|"
- else
- LOGD=`grep "$BTAG_LOGD" $r | head -1 | awk '{printf("%s", $NF)}'`
- PRJT=`grep "$BTAG_PRJT" $r | tail -1 | awk '{printf("%s", $NF)}'`
- LOGF=$LOGD/$PRJT.log
- if [ -f $LOGF ]; then
- CMPL=`$EXTRACT_MSG -m $BUILD_MSGS -l $LOGF | tail -1`
- else
- CMPL=""
- fi
- echo "$VIEW|STARTED: $DATE|BUILDING: $CMPL" | \
- awk "$AWK_START_END_SUMMARY" FS="|"
- fi
- done
- print -u1
- }
- ###############################################################################
- #
- # FUNCTION: print_build_parameters ()
- #
- # ViewName Type ConfigSpec Platfm Projects
- # -------- ---- ---------- ------ --------
- # cde-dec clean cde-next.cs dec x11,motif,cde
- # cde-hp clean cde-next.cs hp x11,motif,cde
- # cde-ibm clean cde-next.cs ibm x11,motif,cde
- # cde-sco clean cde-next.cs sco x11,motif,cde
- # cde-sgi clean cde-next.cs sgi x11,motif,cde
- # cde-sun clean cde-next.cs sun x11,motif,cde
- #
- # ViewName LogDirectory
- # -------- ------------
- # cde-dec /project/dt/logs/build/cde-dec/LATEST -> ./Jan.17.12:24:36
- # cde-hp /project/dt/logs/build/cde-hp/LATEST -> ./Jan.17.12:24:36
- # cde-ibm /project/dt/logs/build/cde-ibm/LATEST -> ./Jan.17.12:24:36
- # cde-sco /project/dt/logs/build/cde-sco/LATEST -> ./Jan.17.12:24:36
- # cde-sgi /project/dt/logs/build/cde-sgi/LATEST -> ./Jan.17.12:24:36
- # cde-sun /project/dt/logs/build/cde-sun/LATEST -> ./Jan.17.12:24:36
- #
- ###############################################################################
- print_build_parameters ()
- {
- typeset CMPL CSPS LOGD PRJT PTFM STRT TYPE VIEW
- typeset AWK_LOG_SUMMARY AWK_BUILD_SUMMARY
- AWK_LOG_SUMMARY='{printf("%-12s %-48s\n", $1,$2)}'
- AWK_BUILD_SUMMARY='{printf("%-12s %-6s %-16s %-14s %-16s\n",$1,$2,$3,$4,$5)}'
- #
- # Section 1: Type/ConfigSpec/Platform/Projects
- #
- echo "ViewName Type ConfigSpec Platfm Projects" | awk "$AWK_BUILD_SUMMARY"
- echo "-------- ---- ---------- ------ --------" | awk "$AWK_BUILD_SUMMARY"
- for r in $SUMMARY_FILES
- do
- CSPC=`grep "$BTAG_CFGS" $r | head -1 | awk '{printf("%s", $NF)}'`
- PRJT=`grep "$BTAG_PRJT" $r | awk '{printf("%s ", $NF)}'`
- PTFM=`grep "$BTAG_PTFM" $r | head -1 | awk '{printf("%s", $NF)}'`
- TYPE=`grep "$BTAG_TYPE" $r | head -1 | awk '{printf("%s", $NF)}'`
- if [ "incremental" = "$TYPE" ]; then
- TYPE="incrmt"
- fi
- VIEW=`grep "$BTAG_VIEW" $r | head -1 | awk '{printf("%s", $NF)}'`
- echo "$VIEW|$TYPE|$CSPC|$PTFM|$PRJT" | awk "$AWK_BUILD_SUMMARY" FS="|"
- done
- print -u1
- #
- # Section 2: LogDirectory
- #
- echo "ViewName LogDirectory" | awk "$AWK_LOG_SUMMARY"
- echo "-------- ------------" | awk "$AWK_LOG_SUMMARY"
- for r in $SUMMARY_FILES
- do
- LOGD=`grep "$BTAG_LOGD" $r | head -1 | awk '{printf("%s", $NF)}'`
- if [ -L $LOGD ]; then
- LOGD=`ls -l $LOGD | awk '{printf("%s %s %s", $9, $10, $11)}'`
- fi
- VIEW=`grep "$BTAG_VIEW" $r | head -1 | awk '{printf("%s", $NF)}'`
- echo "$VIEW|$LOGD" | awk "$AWK_LOG_SUMMARY" FS="|"
- done
- }
- ###############################################################################
- #
- # FUNCTION: print_error_and_warning_summaries_by_project ()
- #
- #
- # Project x11 motif cde cdedoc cde-test
- # ViewName Errrs Warns Errrs Warns Errrs Warns Errrs Warns Errrs Warns
- # -------- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
- # build-dec-cde 0 0 0 0 0 554 DNR DNR DNR DNR
- # build-hp-cde 0 0 0 0 0 554 DNR DNR DNR DNR
- # build-ibm-cde 0 0 0 0 0 554 DNR DNR DNR DNR
- # build-sco-cde 0 0 0 0 0 554 DNR DNR DNR DNR
- # build-sgi-cde 0 0 0 0 DNR DNR DNR DNR DNR DNR
- # build-sun-cde 0 0 0 0 0 554 DNR DNR DNR DNR
- #
- ###############################################################################
- print_error_and_warning_summaries_by_project ()
- {
- BLANKS=" "
- PROJ_CDE="cde"
- PROJ_CDD="cdedoc"
- PROJ_CDT="cde-test"
- PROJ_MTF="motif"
- PROJ_X11="x11"
- AWK_PROJ_HEADER='{printf("%-12s %-12s %-12s %-12s %-12s %-12s\n",$1,$2,$3,$4,$5,$6)}'
- AWK_PROJ_VIEWNAME='{printf("%-12s ", $1)}'
- AWK_PROJ_SUMMARY='{printf("%5s %5s ", $1, $2)}'
- #
- # Print the header for this section
- #
- echo "Project $PROJ_X11 $PROJ_MTF $PROJ_CDE $PROJ_CDD $PROJ_CDT"|awk "$AWK_PROJ_HEADER"
- echo "ViewName" | awk "$AWK_PROJ_VIEWNAME"
- for p in $PROJ_X11 $PROJ_MTF $PROJ_CDE $PROJ_CDD $PROJ_CDT
- do
- echo "Errrs Warns" | awk "$AWK_PROJ_SUMMARY"
- done
- print -u1
- echo "--------" | awk "$AWK_PROJ_VIEWNAME"
- for p in $PROJ_X11 $PROJ_MTF $PROJ_CDE $PROJ_CDD $PROJ_CDT
- do
- echo "----- -----" | awk "$AWK_PROJ_SUMMARY"
- done
- print -u1
- #
- # Print the error and warning summaries for each view.
- #
- for r in $SUMMARY_FILES
- do
- #
- # Print the view name.
- #
- VIEW=`grep "$BTAG_VIEW" $r | head -1 | awk '{printf("%s", $NF)}'`
- echo "$VIEW" | awk "$AWK_PROJ_VIEWNAME"
- #
- # Print the error and warn totals for each project.
- #
- for p in $PROJ_X11 $PROJ_MTF $PROJ_CDE $PROJ_CDD $PROJ_CDT
- do
- ERRRS=`grep "^$p " $r | tail -1 | awk '{print $2}'`
- WARNS=`grep "^$p " $r | tail -1 | awk '{print $4}'`
- if [ -z "$ERRRS" ] -a [ -z "$WARNS" ]
- then
- echo "DNR DNR" | awk "$AWK_PROJ_SUMMARY"
- else
- echo "$ERRRS $WARNS" | awk "$AWK_PROJ_SUMMARY"
- fi
- done
- #
- # Print a newline.
- #
- print -u1
- done
- }
- ###############################################################################
- #
- # FUNCTION: print_error_summaries_by_component ()
- #
- #
- # Component DEC HP IBM SCO SGI SUN
- # --------- ----- ----- ----- ----- ----- -----
- # cde/admin 0 0 0 0 0 5
- # cde/lib/DtHelp 5 3 1 0 0 0
- # cde/programs/dtwm 10 3 5 0 0 0
- #
- # cde-test/doc 133 22 1 0 45 0
- #
- ###############################################################################
- print_error_summaries_by_component ()
- {
- AWK_COMP_NAME='{printf("%-32s ", $1)}'
- AWK_COMP_ERROR='{printf("%5s ", $1)}'
- let num_errors=0
- #
- # Find the per component errors.
- #
- for f in $COMPONENTS_FILES
- do
- #
- # Extract the project name from the name of the components file.
- # Assumes the components files are named <project>.components.
- #
- p=`basename $f | awk '{ print $1 }' FS='.'`
- for c in `cat $f`
- do
- #
- # Collect the errors for the current component from the report
- # summary files and put them in an array.
- #
- let i=0
- FOUND="False"
- for r in $SUMMARY_FILES
- do
- ERRORS[i]=`grep "$p/$c " $r | tail -1 | awk '{print $2}'`
- #
- # The search may have succeeded but the component may
- # only have warnings and no errors. If this is true,
- # then this component should not be added to the error
- # list
- #
- if [ ! -z "`echo ${ERRORS[i]}`" ]; then
- if [ "`echo ${ERRORS[i]}`" != "0" ]; then
- FOUND="True"
- fi
- fi
- let i=i+1
- done
- #
- # If the component doesn't show up anywhere ignore it.
- #
- if [ -z "`echo ${ERRORS[*]}`" -o "False" = "$FOUND" ]
- then
- continue
- fi
- let num_errors=num_errors+1
- if [ num_errors -eq 1 ]; then
- #
- # Print the header for this section
- #
- echo "Component" | awk "$AWK_COMP_NAME"
- for r in $SUMMARY_FILES
- do
- PTFM=`grep "$BTAG_PTFM" $r | head -1 | awk '{printf("%s", $NF)}'`
- echo "$PTFM" | awk "$AWK_COMP_ERROR"
- done
- print -u1
- echo "---------" | awk "$AWK_COMP_NAME"
- for r in $SUMMARY_FILES
- do
- echo "-----" | awk "$AWK_COMP_ERROR"
- done
- print -u1
- fi
- #
- # Print the component name including the project it belongs to.
- #
- echo "$p/$c" | awk "$AWK_COMP_NAME"
- #
- # Print the errors for this component.
- #
- for r in $SUMMARY_FILES
- do
- ERRRS=`grep "$p/$c " $r | tail -1 | awk '{print $2}'`
- if [ -z "$ERRRS" ]
- then
- is_complete_build $r
- if [ $? -eq 0 ]; then
- ERRRS="0"
- else
- ERRRS="DNR"
- fi
- fi
- echo "$ERRRS" | awk "$AWK_COMP_ERROR"
- done
- #
- # Print a newline.
- #
- print -u1
- done
- done
- if [ $num_errors -eq 0 ]; then
- print -u1 "NO errors were found."
- fi
- }
- ###############################################################################
- #
- # FUNCTION: print_error_listings_by_component ()
- #
- # -------------------------------------------------------------------
- # - <component-name>
- # -------------------------------------------------------------------
- # make all in <component-name>...
- # error 1
- # error 2
- # make all in <component-name>/subdir...
- # error 3
- # error 4
- #
- ###############################################################################
- print_error_listings_by_component ()
- {
- let num_errors=0
- for f in $COMPONENTS_FILES
- do
- #
- # Extract the project name from the name of the components file.
- # Assumes the components files are named <project>.components.
- #
- p=`basename $f | awk '{ print $1 }' FS='.'`
- for c in `cat $f`
- do
- #
- # Collect the errors for the current component from the
- # report summary files and put them in an array.
- #
- let i=0
- FOUND="False"
- for r in $SUMMARY_FILES
- do
- ERRORS[i]=`grep "$p/$c " $r | tail -1 | awk '{print $2}'`
- #
- # The search may have succeeded but the component may
- # only have warnings and no errors. If this is true,
- # then this component should not be added to the error
- # list
- #
- if [ ! -z "`echo ${ERRORS[i]}`" ]; then
- if [ "`echo ${ERRORS[i]}`" != "0" ]; then
- FOUND="True"
- fi
- fi
- let i=i+1
- done
-
- #
- # If the component doesn't show up anywhere ignore it.
- #
- if [ -z "`echo ${ERRORS[*]}`" -o "False" = "$FOUND" ]
- then
- continue
- fi
- let num_errors=num_errors+1
-
- #
- # Print the component name including the project it belongs to.
- #
- COMP=`echo $c | tr "/" ","`
- print -u1 "+++++++++++++++++++++++++++++++++++++++++++++++++++++++"
- print -u1 "+ COMPONENT: $p/$COMP"
- print -u1 "+++++++++++++++++++++++++++++++++++++++++++++++++++++++"
- print -u1
-
-
- #
- # Print the errors for this component.
- #
- for r in $SUMMARY_FILES
- do
- LOGD=`grep "$BTAG_LOGD" $r | head -1 |
- awk '{printf("%s", $NF)}'`
- VIEW=`grep "$BTAG_VIEW" $r | head -1 |
- awk '{printf("%s", $NF)}'`
- ERR_FILE=$LOGD/$p/$COMP.err
- if [ -f "$ERR_FILE" ]
- then
- print -u1 "+"
- print -u1 "+ View: $VIEW"
- print -u1 "+ Error File: $ERR_FILE"
- print -u1 "+"
- print -u1
- head -$PRINT_ERRORS $ERR_FILE
- print -u1
- fi
- done
-
- #
- # Print a newline.
- #
- print -u1
- done
- done
- if [ num_errors -eq 0 ]; then
- print -u1 "NO errors were found."
- fi
- }
- #############################################################################
- #
- # Do command-line processing
- #
- while [ $# -gt 0 ]; do
- case $1 in
- -debug)
- DEBUG="True"
- shift 1 ;;
- -c | -components_file)
- if [ $# -lt 2 ]; then
- print -u2 "$PROG_NAME: $1 option missing value; exiting ..."
- do_exit 1
- fi
- COMPONENTS_FILES="$COMPONENTS_FILES $2"
- shift 2 ;;
- -e | -errors)
- if [ $# -lt 2 ]; then
- print -u2 "$PROG_NAME: $1 option missing value; exiting ..."
- do_exit 1
- fi
- PRINT_ERRORS="$2"
- shift 2 ;;
- -h | "-?" | -help)
- usage $PROG_NAME
- do_exit 1 ;;
- -l | -log_path )
- if [ $# -lt 2 ]; then
- print -u2 "$PROG_NAME: $1 option missing value; exiting ..."
- do_exit 1
- fi
- LOG_PATH=$2
- shift 2 ;;
- -m | -mail | -mail_list)
- if [ $# -lt 2 ]; then
- print -u2 "$PROG_NAME: $1 option missing value; exiting ..."
- do_exit 1
- fi
- MAIL_LIST=$2
- shift 2 ;;
- -pn | -project_name)
- if [ $# -lt 2 ]; then
- print -u2 "$PROG_NAME: $1 option missing value; exiting ..."
- do_exit 1
- fi
- # Change the value of SUBJECT_BUILD_SUMMARY
- SUBJECT_BUILD_SUMMARY="${2}: Build Summary"
- shift 2 ;;
- -s | -summary_file)
- if [ $# -lt 2 ]; then
- print -u2 "$PROG_NAME: $1 option missing value; exiting ..."
- do_exit 1
- fi
- SUMMARY_FILES="$SUMMARY_FILES $2"
- shift 2 ;;
- *)
- print -u2 "$PROG_NAME: invalid option $1; exiting ..."
- do_exit 1 ;;
- esac
- done
- #############################################################################
- #
- # Check to make sure that the command-line parameters make sense.
- #
- for f in $COMPONENTS_FILES
- do
- if [ ! -f $f ]
- then
- print -u2 "$PROG_NAME: Component file \"$f\" does not exist."
- print -u2 "$PROG_NAME: exiting ..."
- do_exit 1
- fi
- done
- if [ -z "$SUMMARY_FILES" ]
- then
- print -u2 "$PROG_NAME: No report summaries specified; exiting ..."
- do_exit 1
- fi
- #############################################################################
- #
- # Determine which builds never started or never completed.
- #
- NOT_AVAILABLE_SUMMARY_FILES=""
- AVAILABLE_SUMMARY_FILES=""
- for r in $SUMMARY_FILES
- do
- if [ ! -f $r ]; then
- if [ -z "$NOT_AVAILABLE_SUMMARY_FILES" ]; then
- NOT_AVAILABLE_SUMMARY_FILES="$r"
- else
- NOT_AVAILABLE_SUMMARY_FILES="$NOT_AVAILABLE_SUMMARY_FILES $r"
- fi
- else
- if [ -z "$AVAILABLE_SUMMARY_FILES" ]; then
- AVAILABLE_SUMMARY_FILES="$r"
- else
- AVAILABLE_SUMMARY_FILES="$AVAILABLE_SUMMARY_FILES $r"
- fi
- fi
- done
- SUMMARY_FILES="$AVAILABLE_SUMMARY_FILES"
- #
- # Redirect output
- #
- EXECUTIVE_SUMMARY_LOG=/tmp/$PROG_NAME.execsum.$$
- if [ "$DEBUG" = "False" ]; then
- do_register_temporary_file $EXECUTIVE_SUMMARY_LOG
- touch $EXECUTIVE_SUMMARY_LOG
- exec 9>&1
- exec > $EXECUTIVE_SUMMARY_LOG
- fi
- #############################################################################
- #
- # Header information
- #
- DATE=`date "$BTAG_DFMT"`
- print -u1 " BUILD SUMMARY FOR: $DATE"
- print -u1 " +++++++++++++++++++++++++++++++++++++"
- print -u1
- for r in $NOT_AVAILABLE_SUMMARY_FILES
- do
- print -u1 "Missing build summary: $r\n"
- done
- print -u1
- print_error_and_warning_summaries_by_project
- print -u1
- print_build_start_end
- print -u1
- print -u1
- print -u1 " BUILD PARAMETERS"
- print -u1 " ++++++++++++++++"
- print -u1
- print -u1
- print_build_parameters
- print -u1
- print -u1
- print -u1 " ERROR SUMMARIES BY COMPONENT"
- print -u1 " ++++++++++++++++++++++++++++"
- print -u1
- print -u1
- print_error_summaries_by_component
- #############################################################################
- #
- # Find the per component errors.
- #
- if [ $PRINT_ERRORS -gt 0 ]; then
- print -u1
- print -u1
- print -u1 " ERROR LISTINGS BY COMPONENT"
- print -u1 " +++++++++++++++++++++++++++"
- print -u1
- print -u1
- print_error_listings_by_component
-
- fi
- ##########################################################################
- #
- # Complete the build summary and mail it, save it, or dump it to stdout
- #
- if [ "" != "$MAIL_LIST" ]; then
- mailx -s "$SUBJECT_BUILD_SUMMARY (`date $SUBJECT_DATE`) [Report #${REPORT_NUM}]" "$MAIL_LIST" < $EXECUTIVE_SUMMARY_LOG
- fi
- if [ "" != "$LOG_PATH" ]; then
- cp $EXECUTIVE_SUMMARY_LOG $LOG_PATH
- fi
- if [ "$DEBUG" = "False" -a "" = "$MAIL_LIST" -a "" = "$LOG_PATH" ]; then
- exec >&9
- cat $EXECUTIVE_SUMMARY_LOG
- fi
- for r in $SUMMARY_FILES
- do
- is_complete_build $r
- if [ $? -ne 0 ]; then
- #
- # Clean up temporary files and exit
- #
- do_exit 1
- fi
- done
- #############################################################################
- #
- # Clean up temporary files and exit
- #
- do_exit 0
|