| 
     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 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 	alpar@cs.elte.hu  | 
         | 
   109 fi  | 
         | 
   110       | 
         | 
   111 #    rm ${LOGFILE} | 
         | 
   112 rm queue/$REV  | 
         | 
   113   |