Force a from address that might 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 http://git.code.sf.net/p/strace/code strace.git || \
74     (rm -rf strace.git && \
75     ${GIT} clone -q https://github.com/strace/strace strace.git)
76 echo "BUILD ENVIRONMENT INFORMATION"
77 echo "============================="
78 echo "Debian architecture"
79 echo "-------------------"
80 dpkg-architecture -q DEB_BUILD_ARCH
81 echo "Hostname"
82 echo "--------"
83 hostname
84 echo "uname -rm"
85 echo "---------"
86 uname -rm
87 echo "Version of kernel headers (linux-libc-dev)"
88 echo "------------------------------------------"
89 dpkg -s linux-libc-dev
90 echo "Version of libc"
91 echo "---------------"
92 dpkg -s libc6-dev
93 echo "Version of gcc"
94 echo "--------------"
95 dpkg -s gcc
96 cd strace.git
97 ${GIT} checkout $POINT
98 ${GIT} log | head -1
99 ./bootstrap
100 ./configure
101 make $PARALLEL && make check VERBOSE=1 && echo SUCCESS > ${BDIR}/RESULT
102 EOF
103
104 chmod +x ~/build/strace/inside-schroot-test.sh
105
106 cd ~
107
108 # Run the command, outout to typescript
109 script -c "schroot -r -c $mysid ~/build/strace/inside-schroot-test.sh"
110
111 if [ ! -f ${BDIR}/RESULT ] ; then
112     echo "BUILD FAILED - not doing cleanup"
113     echo "Results in ${BDIR}"
114 fi
115
116 rm -rf ${BDIR}
117 rm -f ~/build/strace/inside-schroot-test.sh
118 mv typescript typescript-$ARCH-$HOSTNAME-${DATETIME}.txt
119 gzip -9 typescript-$ARCH-$HOSTNAME-${DATETIME}.txt
120 FILE="typescript-$ARCH-$HOSTNAME-${DATETIME}.txt.gz"
121 (echo "START $FILE" ; \
122  base64 < $FILE ; \
123  echo "END $FILE") | \
124     mailx -s "strace-build-test $ARCH-$HOSTNAME-${DATETIME} log" \
125           -r "Strace git build logs <93sam@debian.org>" \
126           steve-strace@einval.com
127 rm -f $FILE
128
129 # Check to see if we have a package build to test too, run it in a
130 # separate log file but using the same chroot for speed
131 rm -rf ~/build/strace/package-test
132 set +e
133 WGET="wget --ca-certificate=/home/93sam/.CA/ca-certificates.crt"
134 $WGET -O /dev/null $PKG_TEST/MANIFEST
135 if [ $? -eq 0 ]; then
136     # Time to grab sources
137     mkdir ~/build/strace/package-test
138     cd ~/build/strace/package-test
139     $WGET $PKG_TEST/MANIFEST
140     for file in $(cat MANIFEST); do
141         $WGET $PKG_TEST/$file
142     done
143     DSC=$(ls *.dsc)
144
145     cat > ~/build/strace/inside-schroot-test.sh << EOF
146 #!/bin/sh
147 cd ~/build/strace/package-test
148 dpkg-source -x *.dsc
149 cd strace-*
150 debuild -i -us -uc -b
151 EOF
152     chmod +x ~/build/strace/inside-schroot-test.sh
153     set -e
154     cd ~
155     # Run the command, outout to typescript
156     script -c "schroot -r -c $mysid ~/build/strace/inside-schroot-test.sh"
157
158     rm -rf ~/build/strace/package-test
159     rm -f ~/build/strace/inside-schroot-test.sh
160     gzip -9 typescript
161     FILE=typescript.gz
162     (echo "START $FILE" ; \
163      base64 < $FILE ; \
164      echo "END $FILE") | \
165         mailx -s "$DSC package build log: $ARCH on $HOSTNAME " \
166               -r "Strace package build log <93sam@debian.org>" \
167               steve@einval.com
168     rm -f $FILE
169 fi