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