cdesktopenv/cde/admin/BuildTools/tog/cc_submissions

335 lines
7.7 KiB
Bash
Executable File

#!/bin/ksh
#
# cc_submissions
#
########################################################################
# 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 "$PRG: File '$SCRIPTS_DIR/script_setup.ksh' NOT found!"
print -u2 "$PRG: Exiting ..."
exit 1
fi
. $SCRIPTS_DIR/script_setup.ksh
##########################################################################
#
# Script specific global variables
#
COMPONENTS_FILES=""
COMPONENTS=""
DEBUG="False"
DO_DELETE="True"
DO_LISTING="True"
DO_TMPFILE="True"
DO_SUMMARY="True"
INCLUDE_ROOT="False"
SUBMISSION_LOG=""
MAIL_LIST=""
NULLSUBDIRECTORY="__XXX__"
HAVE_EVENTS="True"
##########################################################################
#
# FUNCTION: do_executive_summary ()
#
do_executive_summary ()
{
AWK_EXEC_EVENT_SUMMARY='{printf("%-40s [Events= %-3s; Users= ", $1,$2)}'
AWK_EXEC_USER_SUMMARY='{printf("%s ", $1)}'
AWK_EXEC_TERM_SUMMARY='{printf("]\n")}'
COMPONENT=$1
if [ "True" = "$DEBUG" ]; then
print -u2 "summarizing events in $COMPONENT"
fi
TOTAL_EVENTS=`$EXTRACT_MSG -l $SUBMISSION_LOG $COMPONENT | wc -l |
awk '{printf("%s",$1)}'`
if [ $TOTAL_EVENTS -ne 0 ]; then
USERS=`$EXTRACT_MSG -l $SUBMISSION_LOG $COMPONENT |
awk '{ print $3 }' FS="|" | sort | uniq`
# for u in $USERS
# do
# USER_EVENTS=`$EXTRACT_MSG -l $SUBMISSION_LOG $COMPONENT |
# grep "$FS$u$FS" | wc -l`
# echo "$u $USER_EVENTS" | awk "$AWK_EXEC_SUMMARY"
# done
echo "$COMPONENT $TOTAL_EVENTS" | awk "$AWK_EXEC_EVENT_SUMMARY"
for u in $USERS
do
echo "$u" | awk "$AWK_EXEC_USER_SUMMARY"
done
echo "" | awk "$AWK_EXEC_TERM_SUMMARY"
fi
}
##########################################################################
#
# FUNCTION: do_listing_summary ()
#
do_listing_summary ()
{
AWK_LIST_SUMMARY='{printf("%s\n User=%-12s Event=%-16s DDTS=%8s \n Comment='%s'\n",$2,$3,$4,$5,$7)}'
COMPONENT=$1
if [ "True" = "$DEBUG" ]; then
print -u2 "listing events in $COMPONENT"
fi
TOTAL_EVENTS=`$EXTRACT_MSG -l $SUBMISSION_LOG $COMPONENT | wc -l`
if [ $TOTAL_EVENTS -ne 0 ]; then
print -u1 "+"
print -u1 "+ Events In: $COMPONENT"
print -u1 "+"
$EXTRACT_MSG -l $SUBMISSION_LOG $COMPONENT | \
awk "$AWK_LIST_SUMMARY" FS="|"
fi
}
##########################################################################
#
# FUNCTION: usage ()
#
usage ()
{
cat <<eof
USAGE: $1
[-h | -? | -help] # Print usage and exit
[{-m | -mail | -mail_list} <user_name(s)>]
[{-t | -tmpfile} <file>] # Specifies the log file to be extracted from.
[-include_root]
[-no_delete]
[-no_listing]
[-no_summary]
# '$PROG_NAME' calls clearcase commands to determine which files
# were submitted in the last 24 hours and then delivers the report.
# The report can be sent to a list of mail recipients, or a log file
# or both. If neither is specified, the report is sent to stdout
# by default.
eof
}
##########################################################################
#
# Do command-line processing
#
while [ $# -gt 0 ]; do
case $1 in
-debug)
DEBUG="True"
shift 1 ;;
-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 ;;
-t | -tmpfile)
if [ $# -lt 2 ]; then
print -u2 "$PROG_NAME: $1 option missing value; exiting ..."
do_exit 1
fi
DO_TMPFILE="false"
SUBMISSION_LOG=$2
shift 2 ;;
-include_root)
INCLUDE_ROOT="True"
shift 1 ;;
-no_listing)
DO_LISTING="False"
shift 1 ;;
-no_summary)
DO_SUMMARY="False"
shift 1 ;;
-no_delete)
DO_DELETE="False"
shift 1 ;;
*)
usage $PROG_NAME
do_exit 1 ;;
esac
done
if [ "True" = "$DO_TMPFILE" ]; then
SUBMISSION_LOG=/tmp/$PROG_NAME.lshistory.$$
SUBMISSION_LOG_PRIME=/tmp/$PROG_NAME.lshistory.1.$$
do_register_temporary_file $SUBMISSION_LOG
do_register_temporary_file $SUBMISSION_LOG_PRIME
EVENT="EVENT"
FS='|'
FORMAT="$EVENT$FS%n$FS%u$FS%e$FS%1.FIXESa$FS%1.l$FS%1.Nc$FS\n"
$CLEAR_CASE_TOOL lshistory -fmt $FORMAT \
-avobs -nco -since yesterday.00:00 > $SUBMISSION_LOG
#
# Delete entries submitted by root
#
grep $EVENT $SUBMISSION_LOG | sort > $SUBMISSION_LOG_PRIME
if [ "False" = $INCLUDE_ROOT ]; then
SUBMISSION_LOG_TWO=/tmp/$PROG_NAME.lshistory.2.$$
do_register_temporary_file $SUBMISSION_LOG_TWO
egrep -v -e "${FS}root$FS" $SUBMISSION_LOG_PRIME > $SUBMISSION_LOG_TWO
cp $SUBMISSION_LOG_TWO $SUBMISSION_LOG_PRIME
fi
sed -e 's/\.cde-1/cde/
s/\.cde-2/cde/
s/\.cde-3/cde/
s/\.cde-test-1/cde-test/
s/\.cde-test-2/cde-test/
s/\.cde-test-3/cde-test/
s/\.motif-1/motif/
s/\.motif-2/motif/' $SUBMISSION_LOG_PRIME > $SUBMISSION_LOG
fi
PROJECTS="cde cde-contrib cde-cts cde-misc cde-test cde-test-misc
motif motif-cts motif-misc x11/misc x11/unsupported x11"
#
# Redirect output
#
if [ "$DEBUG" = "False" ]; then
EXECUTIVE_SUMMARY_LOG=/tmp/$PROG_NAME.execsum.$$
do_register_temporary_file $EXECUTIVE_SUMMARY_LOG
touch $EXECUTIVE_SUMMARY_LOG
exec 9>&1
exec > $EXECUTIVE_SUMMARY_LOG
fi
DATE=`date "$BTAG_DFMT"`
print -u1 " CLEARCASE EVENT SUMMARY FOR: $DATE"
print -u1 " +++++++++++++++++++++++++++++++++++++++++++++++"
print -u1
print -u1
if [ ! -s $SUBMISSION_LOG ]; then
HAVE_EVENTS="False"
print -u1 "NO events were found."
fi
if [ "True" = "$DO_SUMMARY" -a "True" = "$HAVE_EVENTS" ]; then
for p in $PROJECTS
do
COMPONENTS_FILE=$SCRIPTS_DIR/$p.components
if [ -f $COMPONENTS_FILE ]; then
#
# Correct for the missing 'xc' subdirectory in x11.components
#
if [ "$p" = "x11" ]; then
p=x11/xc
fi
for c in `cat $COMPONENTS_FILE`
do
do_executive_summary /proj/$p/$c
done
else
do_executive_summary /proj/$p
fi
done
fi
if [ "True" = "$DO_LISTING" -a "True" = "$HAVE_EVENTS" ]; then
print -u1
print -u1
print -u1 " CLEARCASE EVENT LISTING"
print -u1 " +++++++++++++++++++++++"
print -u1
print -u1
for p in $PROJECTS
do
COMPONENTS_FILE=$SCRIPTS_DIR/$p.components
if [ -f $COMPONENTS_FILE ]; then
#
# Correct for the missing 'xc' subdirectory in x11.components
#
if [ "$p" = "x11" ]; then
p=x11/xc
fi
for c in `cat $COMPONENTS_FILE`
do
do_listing_summary /proj/$p/$c
done
else
do_listing_summary /proj/$p
fi
done
fi
##########################################################################
#
# Complete the build summary and mail it or dump it to stdout
#
if [ "" != "$MAIL_LIST" ]; then
mailx -s "$SUBJECT_SUBMISSIONS (`date $SUBJECT_DATE`)" "$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
##########################################################################
#
# Clean up temporary files and exit
#
if [ "True" = "$DO_DELETE" ]; then
do_exit 0
fi
exit 0