]> git.ozlabs.org Git - next-scripts/blob - do_build
do_build: only care if the logs are longer
[next-scripts] / do_build
1 #!/bin/sh
2
3 tree=
4 if [ "$1" ]; then
5         tree=$1
6         shift
7 fi
8
9 tools_dir=$(dirname "$0")
10 . "$tools_dir/common.sh"
11
12 set -e
13
14 bparent=$(dirname "$build_dir")
15
16 line="$(tail -n 1 $SHA1_FILE)"
17
18 # strip everything after the first tab character
19 stree=${line%%  *}
20 if [ "$tree" ]; then
21         [ "$tree" = "$stree" ] || {
22                 echo "That is not the last tree merged ($tree v $stree)" 1>&2
23                 exit 1
24         }
25 else
26         tree="$stree"
27 fi
28 obdir="$bparent/old/$tree"
29
30 cmd="/bin/sh"
31 [ "$build_host" ] &&
32         cmd="ssh root@$build_host unshare -n su $(id -u -n)"
33
34 $cmd <<-EOF
35
36         echo Building on \$(hostname)
37
38         echo \$PATH | grep -q "\$HOME/bin" || export PATH="\$HOME/bin:\$PATH"
39         export LANG=C
40
41         cd "$build_dir" || exit 1
42
43         export CCACHE_DIR="$bparent/.ccache"
44         export TMPDIR="$bparent/tmp"
45
46         git reset --hard next || exit 1
47         touch .scmversion || exit 1
48
49         [ -d "$obdir" ] || mkdir -p "$obdir" || exit 1
50
51         echo Building: x86_64 allmodconfig
52         d="$bparent/x86_64_allmodconfig"
53         [ -d \$d ] || mkdir \$d || exit 1
54         log_x86=\$d.log
55         e=\$d.except
56         echo CONFIG_BUILD_DOCSRC=n >\$e || exit 1
57         echo CONFIG_MODULES=y >>\$e || exit 1
58         KCONFIG_ALLCONFIG=\$e cross -n -N -a x86_64 -c "$gcc_version" O=\$d allmodconfig || exit 1
59         echo "Forking x86 build ..."
60         /usr/bin/time cross -n -N -a x86_64 -c "$gcc_version" O=\$d -j"$j_factor" -s > \$log_x86 2>&1 &
61         x86_64_pid=\$!
62
63         echo Building: powerpc ppc64_defconfig
64         d="$bparent/powerpc_ppc64_defconfig"
65         [ -d \$d ] || mkdir \$d || exit 1
66         log_ppc=\$d.log
67         cross -n -N -a powerpc64 -k powerpc -c "$gcc_ppc_version" O=\$d ppc64_defconfig || exit 1
68         echo "Forking powerpc build ..."
69         /usr/bin/time cross -n -N -a powerpc64 -k powerpc -c "$gcc_ppc_version" O=\$d -j"$j_factor" -s > \$log_ppc 2>&1 &
70         ppc64_pid=\$!
71
72         echo Building: arm multi_v7_defconfig
73         d="$bparent/arm_multi_v7_defconfig"
74         [ -d \$d ] || mkdir \$d || exit 1
75         log_arm=\$d.log
76         cross -n -N -a arm -c "$gcc_version" O=\$d multi_v7_defconfig || exit 1
77         echo "Forking arm build ..."
78         /usr/bin/time cross -n -N -a arm -c "$gcc_version" O=\$d -j"$j_factor" -s > \$log_arm 2>&1 &
79         arm_pid=\$!
80
81         echo Building: perf
82         d="$bparent/perf"
83         [ -d \$d ] || mkdir \$d || exit 1
84         log_perf=\$d.log
85         echo "Forking perf build ..."
86         /usr/bin/time make -s -C tools/perf JOBS="$j_factor" O=\$d > \$log_perf 2>&1 &
87         perf_pid=\$!
88
89         wait \$perf_pid
90         rc=\$?
91
92         if [ \$rc -ne 0 ]; then
93                 echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
94                 echo "ERROR: perf build failed - log follows"
95                 echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
96                 cat \$log_perf
97                 kill \$x86_64_pid
98                 kill \$ppc64_pid
99                 kill \$arm_pid
100                 killall make
101                 rm .scmversion
102                 exit 1
103         else
104                 echo "============================"
105                 echo " perf build OK - log follows"
106                 echo "============================"
107                 cat \$log_perf
108         fi
109
110         wait \$arm_pid
111         rc=\$?
112
113         if [ \$rc -ne 0 ]; then
114                 echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
115                 echo "ERROR: arm multi_v7_defconfig build failed - log follows"
116                 echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
117                 cat \$log_arm
118                 kill \$x86_64_pid
119                 kill \$ppd64_pid
120                 killall make
121                 rm .scmversion
122                 exit 1
123         else
124                 echo "=================================================="
125                 echo " ARM build OK - log follows"
126                 echo "=================================================="
127                 cat \$log_arm
128         fi
129
130         wait \$ppc64_pid
131         rc=\$?
132
133         if [ \$rc -ne 0 ]; then
134                 echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
135                 echo "ERROR: powerpc ppc64_defconfig build failed - log follows"
136                 echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
137                 cat \$log_ppc
138                 kill \$x86_64_pid
139                 killall make
140                 rm .scmversion
141                 exit 1
142         else
143                 echo "=================================================="
144                 echo " powerpc build OK - log follows"
145                 echo "=================================================="
146                 cat \$log_ppc
147         fi
148
149         wait \$x86_64_pid
150         rc=\$?
151
152         if [ \$rc -ne 0 ]; then
153                 echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
154                 echo "ERROR: x86_64 allmodconfig build failed - log follows"
155                 echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
156                 cat \$log_x86
157                 rm .scmversion
158                 exit 1
159         else
160                 echo "=================================================="
161                 echo " x86 build OK - log follows"
162                 echo "=================================================="
163                 cat \$log_x86
164         fi
165
166         for i in \$log_x86 \$log_ppc \$log_arm \$log_perf; do
167                 b=\$(basename \$i)
168                 if [ -f $obdir/\$b ]; then
169                         if [ \$(wc -l <$obdir/\$b) -lt \$(wc -l <\$i) ]; then
170                                 echo "=================================================="
171                                 echo " log \$i increased number of lines"
172                                 echo "=================================================="
173                                 diff -u $obdir/\$b \$i 2>&1 | less
174                         fi
175                 fi
176                 mv \$i $obdir/\$b
177         done
178
179         rm .scmversion
180 EOF