| [97a858] | 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 | 
|---|