| 1 | #!/bin/bash -x | 
|---|
| 2 | # | 
|---|
| 3 | # here, we check a release for every possible enable/disable combination. | 
|---|
| 4 |  | 
|---|
| 5 | # we enable or disable according to a bit combination of length #packets | 
|---|
| 6 | packets=("debug" "qtgui" "jobmarket" "vmg" "ecut") #"python" | 
|---|
| 7 | length=${#packets[*]} | 
|---|
| 8 | end=`units "2^$length" | awk -F": " {'print $2'}` | 
|---|
| 9 |  | 
|---|
| 10 | function bitcheck { | 
|---|
| 11 | # $1 is the bit array | 
|---|
| 12 | # $2 is the length of the bit array | 
|---|
| 13 | # $3 is the bit to check (starting at 0) | 
|---|
| 14 | # we print 0 or 1 depending on the bit | 
|---|
| 15 | let inverse=$2-$3-1 | 
|---|
| 16 | bits=$1 | 
|---|
| 17 | while [ $inverse -gt 0 ]; do | 
|---|
| 18 | let bits=$bits/2 | 
|---|
| 19 | ((inverse-=1)) | 
|---|
| 20 | done | 
|---|
| 21 | let bit=$bits%2 | 
|---|
| 22 | echo $bit | 
|---|
| 23 | } | 
|---|
| 24 |  | 
|---|
| 25 | if [ -z $1 ]; then | 
|---|
| 26 | echo "Usage: $0 <source repo> <path where to check> <commit> [configure flags]" | 
|---|
| 27 | exit 1 | 
|---|
| 28 | fi | 
|---|
| 29 | SOURCEDIR="$1" | 
|---|
| 30 | shift | 
|---|
| 31 | DIR="$1" | 
|---|
| 32 | shift | 
|---|
| 33 | commit="$1" | 
|---|
| 34 | shift | 
|---|
| 35 |  | 
|---|
| 36 | # variables to define | 
|---|
| 37 | LOG="`pwd`/commitcheck-${commit}" | 
|---|
| 38 | checkdir="commitchecking" | 
|---|
| 39 | cores=12 | 
|---|
| 40 |  | 
|---|
| 41 | # check whether target is empty and create clone of git repo | 
|---|
| 42 | if [ -e $DIR ]; then | 
|---|
| 43 | echo "Target directory $DIR must not be present!" | 
|---|
| 44 | exit 255 | 
|---|
| 45 | fi | 
|---|
| 46 | echo -e "#Begin of Logfile" >${LOG}.log | 
|---|
| 47 | git clone $SOURCEDIR $DIR | tee -a ${LOG}.log | 
|---|
| 48 | DIR=`realpath $DIR` | 
|---|
| 49 | if [ ! $? -eq 0 ]; then | 
|---|
| 50 | echo "Please install realpath package!" | 
|---|
| 51 | exit 128 | 
|---|
| 52 | fi | 
|---|
| 53 | OLDDIR=`pwd` | 
|---|
| 54 | cd $DIR | 
|---|
| 55 |  | 
|---|
| 56 | i=0 | 
|---|
| 57 | while [ $i -lt $end ]; do | 
|---|
| 58 |  | 
|---|
| 59 | # GENERATING configure line | 
|---|
| 60 | configureline="--enable-python " | 
|---|
| 61 | j=0 | 
|---|
| 62 | while [ $j -lt ${#packets[*]} ]; do | 
|---|
| 63 | bit=`bitcheck $i $length $j` | 
|---|
| 64 | if [ $bit -eq 0 ]; then | 
|---|
| 65 | configureline=${configureline}" --disable-${packets[$j]}" | 
|---|
| 66 | else | 
|---|
| 67 | configureline=${configureline}" --enable-${packets[$j]}" | 
|---|
| 68 | fi | 
|---|
| 69 | ((j+=1)) | 
|---|
| 70 | done | 
|---|
| 71 |  | 
|---|
| 72 | # PERFORMING CHECKS | 
|---|
| 73 | git checkout -f ${commit} | 
|---|
| 74 | # copy some overrides | 
|---|
| 75 | for testfile in `find tests -name 'Makefile.am'`; do | 
|---|
| 76 | sed -i -e "s#max_jobs = 4#max_jobs = $cores#" $testfile | 
|---|
| 77 | done | 
|---|
| 78 | ./bootstrap | 
|---|
| 79 | rm -rf $checkdir | 
|---|
| 80 | mkdir -p $checkdir | 
|---|
| 81 | cd $checkdir | 
|---|
| 82 | echo "Now testing version `git describe --dirty --always` with $configureline" &>${LOG}-${i}.log | 
|---|
| 83 | ../configure --prefix=${DIR}/$checkdir ${configureline} "$@" &>>${LOG}-${i}.log | 
|---|
| 84 | make -k -j${cores} check &>>${LOG}-${i}.log | 
|---|
| 85 | resultcode=$? | 
|---|
| 86 | # add failed testsuite.logs | 
|---|
| 87 | echo "#################################################################################" >>${LOG}-${i}.log | 
|---|
| 88 | for failedlog in `find tests/ -regex '.*/[0-9]*/.*' -name 'testsuite.log' -exec grep -l "FAILED" {} \;`; do | 
|---|
| 89 | echo -e "\t$failedlog" >>${LOG}-${i}.log | 
|---|
| 90 | echo "#################################################################################" >>${LOG}-${i}.log | 
|---|
| 91 | cat <$failedlog >>${LOG}-${i}.log | 
|---|
| 92 | echo "#################################################################################" >>${LOG}-${i}.log | 
|---|
| 93 | done | 
|---|
| 94 | if [ $resultcode -gt 0 ]; then | 
|---|
| 95 | echo -e "${i}: `git describe --dirty --always`, ${configureline}: FAILED." >>${LOG}.log | 
|---|
| 96 | else | 
|---|
| 97 | echo -e "${i}: `git describe --dirty --always`, ${configureline}: ok." >>${LOG}.log | 
|---|
| 98 | fi | 
|---|
| 99 | cd .. | 
|---|
| 100 |  | 
|---|
| 101 | ((i+=1)) | 
|---|
| 102 | done | 
|---|
| 103 | cd $OLDDIR | 
|---|