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 |
|