scripts/server-services/repocheck/commit-checker
author alpar
Mon, 04 Dec 2006 18:09:09 +0000
changeset 2327 596e48d6e77b
parent 2323 8b18b6fed090
child 2365 751a14b992f2
permissions -rwxr-xr-x
More sophisticated warning messages.
     1 #!/bin/bash
     2 
     3 ROOT=$PWD
     4 REV=$1
     5 LOGFILE=${ROOT}/logs/${REV}.log
     6 
     7 function im-not-the-next() {
     8     for i in `ls queue`
     9     do
    10 	if [ $i -lt $REV ]; then
    11 	    true
    12 	    return
    13 	fi
    14     done
    15     false
    16 }
    17 
    18 function make-dir () {
    19     if [ ! -d $1 ]; then
    20 	mkdir $1
    21     fi
    22 }
    23 
    24 function makecheck () {
    25     if [ `which $(echo $CXX|cut -f1 -d' ' )` ]; then
    26 	make-dir $ODIR &&
    27 	cd $ODIR &&
    28 	time ../trunk/configure $* &&
    29 	time make check &&
    30 	cd .. 
    31     else
    32 	echo
    33 	echo '***************************************************************'
    34 	echo "  COMPILER $CXX CANNOT BE FOUND"
    35 	echo '***************************************************************'
    36 	echo
    37     fi
    38 }
    39 
    40 function check-compilers() {
    41 cd trunk &&
    42 autoreconf -vi &&
    43 cd .. &&
    44 ODIR=gcc-3.3 CXX=g++-3.3 CXXFLAGS='-W -Wall -Werror' makecheck --enable-demo --enable-benchmark &&
    45 ODIR=gcc-3.4 CXX=g++-3.4 CXXFLAGS='-W -Wall -Werror' makecheck --enable-demo --enable-benchmark &&
    46 ODIR=gcc-4.0 CXX=g++-4.0 CXXFLAGS='-W -Wall -Werror' makecheck --enable-demo --enable-benchmark &&
    47 ODIR=gcc-4.1 CXX=g++-4.1 CXXFLAGS='-W -Wall -Werror' makecheck --enable-demo --enable-benchmark &&
    48 # # ODIR=icc-8.0 CXX=icpc-8.0 CXXFLAGS='-Werror' makecheck --enable-demo --enable-benchmark &&
    49 # ODIR=icc-9.0 CXX='icpc-9.0' CXXFLAGS='-Werror' makecheck --enable-demo --enable-benchmark &&
    50 # ODIR=mingw CXX='g++' makecheck --with-msw --target=i586-mingw32msvc --host=i586-mingw32msvc --build=i386-linux --without-glpk &&
    51 echo &&
    52 echo '**********************************************************************' &&
    53 echo '   REPOSITORY SEEMS OK' &&
    54 echo '**********************************************************************' &&
    55 echo
    56 }
    57 
    58 if [ $# -eq 0 ]; then
    59     echo 'Usage:'
    60     echo '   commit-checker --init'
    61     echo '   commit-checker revision'
    62     exit 1
    63 elif [ $1 = '--init' ]; then
    64     rm -rf queue
    65     mkdir queue
    66     make-dir logs
    67     rm -rf trunk
    68     svn co https://lemon.cs.elte.hu/svn/hugo/trunk
    69     exit 0
    70 fi
    71 
    72 touch ${ROOT}/queue/$REV
    73 
    74 while im-not-the-next; do
    75     sleep 10
    76 done
    77 
    78 # echo RUN $REV
    79 
    80 svn up -r$REV trunk >${LOGFILE} 2>&1
    81 
    82 AUTHOR=`svn info trunk|grep 'Last Changed Author:'|cut -d ' ' -f 4`
    83 EMAIL=`awk '$1=="'${AUTHOR}'" {print $2}' <${ROOT}/e-mails`
    84 
    85 echo '
    86 
    87 *************************************************************
    88 Check revision '${REV}' of '${AUTHOR}' ('${EMAIL}')
    89 *************************************************************
    90 
    91 '>>${LOGFILE} 2>&1
    92 
    93 if check-compilers >>${LOGFILE} 2>&1
    94 then
    95     echo -n
    96 else
    97     echo 'Dear '${AUTHOR}',
    98 Your svn commit -r'${REV}' made the repository broken, or at least
    99 the compiler emits warnings during the build process.
   100 The compilation log is attached.
   101 Please fix the problem as soon as possible.
   102 
   103 Best regards,
   104 LEMON Commit Checking Service
   105 '|
   106     mail -a ${LOGFILE} -s '[LEMON-SVN] WARNING: Revision '${REV}' is broken' \
   107 	${EMAIL} alpar@cs.elte.hu
   108 
   109     echo 'Commit -r'${REV}' made the repository broken, or at least
   110 the compiler emits warnings during the build process.
   111 Do not update until this bug is fixed, unless you really need it.
   112 
   113 Best regards,
   114 LEMON Commit Checking Service
   115 '|
   116     mail -s 'WARNING: Revision '${REV}' is broken' \
   117 	${EMAIL} lemon-commits@lemon.cs.elte.hu
   118 fi
   119     
   120 #    rm ${LOGFILE}
   121 rm ${ROOT}/queue/$REV
   122