335 lines
7.7 KiB
Bash
Executable File
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
|