d98b5712410efa01246fbf05dba61f2fbad032ef
[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 BASE_CHROOT="sid_$ARCH-dchroot"
46
47 schroot -e -c $mysid || true
48 schroot -b -c $BASE_CHROOT -n $mysid
49 dd-schroot-cmd -y -c $mysid apt-get update
50 dd-schroot-cmd -y -c $mysid apt-get build-dep strace
51 dd-schroot-cmd -y -c $mysid apt-get install git autotools-dev gawk dh-autoreconf
52
53 DATETIME=$(date -u '+%Y-%m-%d-%H%M%S')
54 BDIR=~/build/strace/build-test-${DATETIME}
55
56 mkdir -p ${BDIR}
57 cd ${BDIR}
58
59 cat > ~/build/strace/inside-schroot-test.sh << EOF
60 #!/bin/sh
61 cd ${BDIR}
62 git clone -q http://git.code.sf.net/p/strace/code strace.git
63 echo "BUILD ENVIRONMENT INFORMATION"
64 echo "============================="
65 echo "Debian architecture"
66 echo "-------------------"
67 dpkg-architecture -q DEB_BUILD_ARCH
68 echo "Hostname"
69 echo "--------"
70 hostname
71 echo "uname -rm"
72 echo "---------"
73 uname -rm
74 echo "Version of kernel headers (linux-libc-dev)"
75 echo "------------------------------------------"
76 dpkg -s linux-libc-dev
77 echo "Version of libc"
78 echo "---------------"
79 dpkg -s libc6-dev
80 echo "Version of gcc"
81 echo "--------------"
82 dpkg -s gcc
83 cd strace.git
84 git checkout $POINT
85 git log | head -1
86 ./bootstrap
87 ./configure
88 make $PARALLEL && make check VERBOSE=1 && echo SUCCESS > ${BDIR}/RESULT
89 EOF
90
91 chmod +x ~/build/strace/inside-schroot-test.sh
92
93 cd ~
94
95 # Run the command, outout to typescript
96 script -c "schroot -r -c $mysid ~/build/strace/inside-schroot-test.sh"
97
98 if [ ! -f ${BDIR}/RESULT ] ; then
99     echo "BUILD FAILED - not doing cleanup"
100     echo "Results in ${BDIR}"
101 fi
102
103 rm -rf ${BDIR}
104 rm -f ~/build/strace/inside-schroot-test.sh
105 mv typescript typescript-$ARCH-$HOSTNAME-${DATETIME}.txt
106 gzip -9 typescript-$ARCH-$HOSTNAME-${DATETIME}.txt
107 FILE="typescript-$ARCH-$HOSTNAME-${DATETIME}.txt.gz"
108 (echo "START $FILE" ; \
109  base64 < $FILE ; \
110  echo "END $FILE") | \
111     mailx -s "strace-build-test $ARCH-$HOSTNAME-${DATETIME} log" \
112           steve-strace@einval.com
113 rm -f $FILE
114
115 # Check to see if we have a package build to test too, run it in a
116 # separate log file but using the same chroot for speed
117 rm -rf ~/build/strace/package-test
118 set +e
119 wget -O /dev/null $PKG_TEST
120 if [ $? -eq 0 ]; then
121     # Time to grab sources
122     mkdir ~/build/strace/package-test
123     cd ~/build/strace/package-test
124     wget -r -nd -np $PKG_TEST
125     DSC=$(ls *.dsc)
126
127     cat > ~/build/strace/inside-schroot-test.sh << EOF
128 #!/bin/sh
129 cd ~/build/strace/package-test
130 dpkg-source -x *.dsc
131 cd strace-*
132 debuild
133 EOF
134     chmod +x ~/build/strace/inside-schroot-test.sh
135     set -e
136     cd ~
137     # Run the command, outout to typescript
138     script -c "schroot -r -c $mysid ~/build/strace/inside-schroot-test.sh"
139
140     rm -rf ~/build/strace/package-test
141     rm -f ~/build/strace/inside-schroot-test.sh
142     cat typescript | \
143         mailx -s "$DSC package build log: $ARCH on $HOSTNAME " \
144               steve@einval.com
145     rm -f typescript
146 fi
147
148 schroot -e -c $mysid
149