scripts/server-services/repocheck/commit-checker
author alpar
Mon, 04 Dec 2006 15:00:24 +0000
changeset 2323 8b18b6fed090
parent 2319 99b1f7aec9d5
child 2327 596e48d6e77b
permissions -rwxr-xr-x
Check for gcc version 3.3, 3.4 and 4.0 as well
     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.
    99 The compilation log is attached.
   100 Please fix the problem as soon as possible.
   101 
   102 Best regards,
   103 LEMON Commit Checking Service
   104 '|
   105     mail -a ${LOGFILE} -s '[LEMON-SVN] WARNING: Revision '${REV}' is broken' \
   106 	${EMAIL} alpar@cs.elte.hu
   107 
   108     echo 'Commit -r'${REV}' made the repository broken.
   109 Do not update until this bug is fixed, unless you really need it.
   110 
   111 Best regards,
   112 LEMON Commit Checking Service
   113 '|
   114     mail -s 'WARNING: Revision '${REV}' is broken' \
   115 	${EMAIL} lemon-commits@lemon.cs.elte.hu
   116 fi
   117     
   118 #    rm ${LOGFILE}
   119 rm ${ROOT}/queue/$REV
   120