scripts/repocheck/commit-checker
changeset 2317 6d3ed14efb68
parent 2299 227ea098a6b6
equal deleted inserted replaced
3:c7c112faab6f -1:000000000000
     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 #    echo OK $AUTHOR $EMAIL $REV
       
    97 else
       
    98 #    echo NEMOK $AUTHOR $EMAIL $REV
       
    99     echo 'Dear '${AUTHOR}',
       
   100 Your svn commit -r'${REV}' made the repository broken.
       
   101 The compilation log is attached.
       
   102 Please fix the problem as soon as possible.
       
   103 
       
   104 Best regards,
       
   105 LEMON Commit Checking Service
       
   106 '|
       
   107     mail -a ${LOGFILE} -s '[LEMON-SVN] WARNING: Broken repository' \
       
   108 	${EMAIL} alpar@cs.elte.hu
       
   109 fi
       
   110     
       
   111 #    rm ${LOGFILE}
       
   112 rm ${ROOT}/queue/$REV
       
   113