Don't assume that enable-mpers will work
[strace-test.git] / strace-build-test
1 #!/bin/bash
2
3 POINT=HEAD
4 ARCH=$(dpkg-architecture -q DEB_BUILD_ARCH)
5 HOSTNAME=$(hostname)
6 PKG_TEST="https://www.einval.com/debian/strace/package-test"
7
8 while getopts ":p:a:" opt; do
9   case $opt in
10     p)
11       POINT=$OPTARG
12       ;;
13     a)
14       ARCH=$OPTARG
15       set +e
16       chk=`dpkg-architecture -a$ARCH > /dev/null 2>&1 ; echo $?`
17       set -e
18       if [ $chk != 0 ]; then
19           echo "Did not recognise ${ARCH} as a Debian architecture name. Exit."
20           exit 1
21       fi
22       ARCH=${ARCH}
23       ;;
24     \?)
25       echo "Invalid option: -$OPTARG" >&2
26       ;;
27   esac
28 done
29
30 PATH=/usr/local/sbin:/usr/local/bin:$PATH
31 export PATH
32
33 NUMCPUS=$(grep processor /proc/cpuinfo | wc -l)
34 if [ $NUMCPUS -gt 1 ]; then
35     PARALLEL="-j $NUMCPUS"
36 else
37     PARALLEL=""
38 fi
39
40 set -e
41 set -x
42
43 mysid=sid-93sam-strace-$RANDOM
44
45 cleanup () {
46     schroot -e -c $mysid
47 }
48
49 trap cleanup 0
50
51 BASE_CHROOT="sid_$ARCH-dchroot"
52
53 schroot -e -c $mysid || true
54 schroot -b -c $BASE_CHROOT -n $mysid
55 dd-schroot-cmd -y -c $mysid apt-get update
56 dd-schroot-cmd -y -c $mysid apt-get build-dep strace
57 dd-schroot-cmd -y -c $mysid apt-get install git autotools-dev gawk dh-autoreconf wget ca-certificates
58
59 # Separate as we allow this to fail where it doesn't exist
60 dd-schroot-cmd -y -c $mysid apt-get install gcc-multilib || true
61
62 DATETIME=$(date -u '+%Y-%m-%d-%H%M%S')
63 BDIR=~/build/strace/build-test-${DATETIME}
64
65 mkdir -p ${BDIR}
66 cd ${BDIR} 
67 GIT="git -c http.sslcainfo=/etc/ssl/certs/ca-certificates.crt"
68
69 cat > ~/build/strace/inside-schroot-test.sh << EOF
70 #!/bin/sh
71 set -e
72 cd ${BDIR}
73 ${GIT} clone -q https://github.com/strace/strace strace.git
74 echo "BUILD ENVIRONMENT INFORMATION"
75 echo "============================="
76 echo "Debian architecture"
77 echo "-------------------"
78 dpkg-architecture -q DEB_BUILD_ARCH
79 echo "Hostname"
80 echo "--------"
81 hostname
82 echo "uname -rm"
83 echo "---------"
84 uname -rm
85 echo "Version of kernel headers (linux-libc-dev)"
86 echo "------------------------------------------"
87 dpkg -s linux-libc-dev
88 echo "Version of libc"
89 echo "---------------"
90 dpkg -s libc6-dev
91 echo "Version of gcc"
92 echo "--------------"
93 dpkg -s gcc
94 cd strace.git
95 ${GIT} checkout $POINT
96 ${GIT} log | head -1
97 ./bootstrap
98 ./configure --enable-mpers=check
99 make $PARALLEL && make check VERBOSE=1 && echo SUCCESS > ${BDIR}/RESULT
100 EOF
101
102 chmod +x ~/build/strace/inside-schroot-test.sh
103
104 cd ~
105
106 # Run the command, outout to typescript
107 script -c "schroot -r -c $mysid ~/build/strace/inside-schroot-test.sh"
108
109 if [ ! -f ${BDIR}/RESULT ] ; then
110     echo "BUILD FAILED - not doing cleanup"
111     echo "Results in ${BDIR}"
112 fi
113
114 rm -rf ${BDIR}
115 rm -f ~/build/strace/inside-schroot-test.sh
116 mv typescript typescript-$ARCH-$HOSTNAME-${DATETIME}.txt
117 gzip -9 typescript-$ARCH-$HOSTNAME-${DATETIME}.txt
118 FILE="typescript-$ARCH-$HOSTNAME-${DATETIME}.txt.gz"
119 (echo "START $FILE" ; \
120  base64 < $FILE ; \
121  echo "END $FILE") | \
122     mailx -s "strace-build-test $ARCH-$HOSTNAME-${DATETIME} log" \
123           -r "Strace git build logs <93sam@debian.org>" \
124           steve-strace@einval.com
125 rm -f $FILE
126
127 # Check to see if we have a package build to test too, run it in a
128 # separate log file but using the same chroot for speed
129 rm -rf ~/build/strace/package-test
130 set +e
131 WGET="wget --ca-certificate=/home/93sam/.CA/ca-certificates.crt"
132 $WGET -O /dev/null $PKG_TEST/MANIFEST
133 if [ $? -eq 0 ]; then
134     # Time to grab sources
135     mkdir ~/build/strace/package-test
136     cd ~/build/strace/package-test
137     $WGET $PKG_TEST/MANIFEST
138     for file in $(cat MANIFEST); do
139         $WGET $PKG_TEST/$file
140     done
141     DSC=$(ls *.dsc)
142
143     cat > ~/build/strace/inside-schroot-test.sh << EOF
144 #!/bin/sh
145 cd ~/build/strace/package-test
146 dpkg-source -x *.dsc
147 cd strace-*
148 debuild -i -us -uc -b
149 EOF
150     chmod +x ~/build/strace/inside-schroot-test.sh
151     set -e
152     cd ~
153     # Run the command, outout to typescript
154     script -c "schroot -r -c $mysid ~/build/strace/inside-schroot-test.sh"
155
156     rm -rf ~/build/strace/package-test
157     rm -f ~/build/strace/inside-schroot-test.sh
158     gzip -9 typescript
159     FILE=typescript.gz
160     (echo "START $FILE" ; \
161      base64 < $FILE ; \
162      echo "END $FILE") | \
163         mailx -s "$DSC package build log: $ARCH on $HOSTNAME " \
164               -r "Strace package build log <93sam@debian.org>" \
165               steve@einval.com
166     rm -f $FILE
167 fi