OLD | NEW |
---|---|
1 #!/bin/bash | 1 #!/bin/bash |
2 # Copyright (c) 2011 The Native Client Authors. All rights reserved. | 2 # Copyright (c) 2011 The Native Client Authors. All rights reserved. |
3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
5 | 5 |
6 set -o xtrace | 6 set -o xtrace |
7 set -o nounset | 7 set -o nounset |
8 set -o errexit | 8 set -o errexit |
9 | 9 |
10 ###################################################################### | 10 ###################################################################### |
11 # SCRIPT CONFIG | 11 # SCRIPT CONFIG |
12 ###################################################################### | 12 ###################################################################### |
13 | 13 |
14 CLOBBER=${CLOBBER:-yes} | 14 CLOBBER=${CLOBBER:-yes} |
15 SCONS_TRUSTED="./scons --mode=opt-host -j8" | 15 SCONS_TRUSTED="./scons --mode=opt-host -j8" |
16 SCONS_NACL="./scons --mode=opt-host,nacl -j8" | 16 SCONS_NACL="./scons --mode=opt-host,nacl -j8" |
17 SPEC_HARNESS=${SPEC_HARNESS:-${HOME}/cpu2000-redhat64-ia32}/ | 17 SPEC_HARNESS=${SPEC_HARNESS:-${HOME}/cpu2000-redhat64-ia32}/ |
18 UTMAN=tools/llvm/utman.sh | 18 UTMAN=tools/llvm/utman.sh |
19 | 19 |
20 # Rough test running time classification for ARM which is our bottleneck | 20 TRYBOT_TESTS="176.gcc 179.art 181.mcf 197.parser 252.eon 254.gap" |
21 FAST_ARM="176.gcc 181.mcf 197.parser 254.gap" | 21 TRYBOT_TRANSLATOR_TESTS="176.gcc" |
22 MEDIUM_ARM="164.gzip 175.vpr 179.art 186.crafty 252.eon \ | |
23 256.bzip2 255.vortex 300.twolf" | |
24 SLOW_ARM="177.mesa 183.equake 188.ammp 253.perlbmk" | |
25 | 22 |
26 SPEC_BASE="tests/spec2k" | 23 SPEC_BASE="tests/spec2k" |
27 | 24 |
28 TestsToBuild() { | 25 RETCODE=0 |
29 local setup=$1 | |
30 case ${setup} in | |
31 SetupPnaclArmOpt) | |
32 # we expect arm to diverge | |
33 echo ${FAST_ARM} 252.eon 179.art | |
34 ;; | |
35 SetupPnaclTranslator*) | |
36 echo 176.gcc | |
37 ;; | |
38 *) | |
39 echo ${FAST_ARM} 252.eon 179.art | |
40 ;; | |
41 esac | |
42 } | |
43 | |
44 TestsToRun() { | |
45 local setup=$1 | |
46 case ${setup} in | |
47 SetupPnaclArmOpt) | |
48 # we expect arm to diverge | |
49 echo ${FAST_ARM} 252.eon 179.art | |
50 ;; | |
51 SetupPnaclTranslator*) | |
52 echo 176.gcc | |
53 ;; | |
54 *) | |
55 echo ${FAST_ARM} 252.eon 179.art | |
56 ;; | |
57 esac | |
58 } | |
59 | 26 |
60 ###################################################################### | 27 ###################################################################### |
61 # SCRIPT ACTION | 28 # SCRIPT ACTION |
62 ###################################################################### | 29 ###################################################################### |
63 | 30 |
64 clobber() { | 31 clobber() { |
65 echo "@@@BUILD_STEP clobber@@@" | 32 if [ "${CLOBBER}" == "yes" ] ; then |
66 rm -rf scons-out toolchain | 33 echo "@@@BUILD_STEP clobber@@@" |
34 rm -rf scons-out toolchain | |
67 | 35 |
68 echo "@@@BUILD_STEP gclient_runhooks@@@" | 36 echo "@@@BUILD_STEP gclient_runhooks@@@" |
69 gclient runhooks --force | 37 gclient runhooks --force |
38 fi | |
70 } | 39 } |
71 | 40 |
72 basic-setup-nacl() { | 41 basic-setup-nacl() { |
73 local platforms=$1 | 42 local platforms=$1 |
74 build-sel_ldr "${platforms}" | 43 build-sel_ldr "${platforms}" |
75 build-libs "${platforms}" | 44 build-libs "${platforms}" |
76 } | 45 } |
77 | 46 |
78 basic-setup-pnacl() { | 47 basic-setup-pnacl() { |
79 local platforms=$1 | 48 local platforms=$1 |
(...skipping 21 matching lines...) Expand all Loading... | |
101 build-libs() { | 70 build-libs() { |
102 local platforms=$1 | 71 local platforms=$1 |
103 shift 1 | 72 shift 1 |
104 for platform in ${platforms} ; do | 73 for platform in ${platforms} ; do |
105 echo "@@@BUILD_STEP scons build_lib [${platform}] $* @@@" | 74 echo "@@@BUILD_STEP scons build_lib [${platform}] $* @@@" |
106 ${SCONS_NACL} platform=${platform} build_lib "$@" | 75 ${SCONS_NACL} platform=${platform} build_lib "$@" |
107 done | 76 done |
108 } | 77 } |
109 | 78 |
110 build-and-run-some() { | 79 build-and-run-some() { |
111 local harness=$1 | 80 local setups="$1" |
112 local setups=$2 | 81 local tests="$2" |
113 | 82 |
114 pushd ${SPEC_BASE} | 83 pushd ${SPEC_BASE} |
115 for setup in ${setups}; do | 84 for setup in ${setups}; do |
116 echo "@@@BUILD_STEP spec2k build [${setup}] [train-some]@@@" | 85 echo "@@@BUILD_STEP spec2k build [${setup}] [train-some]@@@" |
117 ./run_all.sh CleanBenchmarks | 86 ./run_all.sh CleanBenchmarks |
118 ./run_all.sh PopulateFromSpecHarness ${harness} | 87 ./run_all.sh PopulateFromSpecHarness "${SPEC_HARNESS}" |
119 MAKEOPTS=-j8 \ | 88 MAKEOPTS=-j8 \ |
120 ./run_all.sh BuildBenchmarks 0 ${setup} $(TestsToBuild ${setup}) | 89 ./run_all.sh BuildBenchmarks 0 ${setup} ${tests} |
121 | 90 |
122 echo "@@@BUILD_STEP spec2k run [${setup}] [train-some]@@@" | 91 echo "@@@BUILD_STEP spec2k run [${setup}] [train-some]@@@" |
123 ./run_all.sh RunBenchmarks ${setup} train $(TestsToRun ${setup}) || \ | 92 ./run_all.sh RunBenchmarks ${setup} train ${tests} || \ |
124 { RETCODE=$? && echo "@@@STEP_FAILURE@@@"; } | 93 { RETCODE=$? && echo "@@@STEP_FAILURE@@@"; } |
125 done | 94 done |
126 popd | 95 popd |
127 } | 96 } |
128 | 97 |
129 build-and-run-all-timed() { | 98 build-and-run-all() { |
130 local harness=$1 | 99 local setups="$1" |
131 local setups=$2 | |
132 | 100 |
133 pushd ${SPEC_BASE} | 101 pushd ${SPEC_BASE} |
134 for setup in ${setups}; do | 102 for setup in ${setups}; do |
135 echo "@@@BUILD_STEP spec2k build [${setup}] [train]@@@" | 103 echo "@@@BUILD_STEP spec2k build [${setup}] [train]@@@" |
136 ./run_all.sh CleanBenchmarks | 104 ./run_all.sh CleanBenchmarks |
137 ./run_all.sh PopulateFromSpecHarness ${harness} | 105 ./run_all.sh PopulateFromSpecHarness "${SPEC_HARNESS}" |
138 MAKEOPTS=-j8 \ | 106 MAKEOPTS=-j8 \ |
139 ./run_all.sh BuildBenchmarks 1 ${setup} train | 107 ./run_all.sh BuildBenchmarks 1 ${setup} train |
140 | 108 |
141 echo @@@BUILD_STEP spec2k run [${setup}] [train]@@@ | 109 echo @@@BUILD_STEP spec2k run [${setup}] [train]@@@ |
142 # NOTE: we intentionally do not parallelize the build because | 110 # NOTE: we intentionally do not parallelize the build because |
143 # we are measuring build times | 111 # we are measuring build times |
144 ./run_all.sh RunTimedBenchmarks ${setup} train || \ | 112 ./run_all.sh RunTimedBenchmarks ${setup} train || \ |
145 { RETCODE=$? && echo "@@@STEP_FAILURE@@@"; } | 113 { RETCODE=$? && echo "@@@STEP_FAILURE@@@"; } |
146 done | 114 done |
147 popd | 115 popd |
148 } | 116 } |
149 | 117 |
150 | 118 |
151 ###################################################################### | 119 ###################################################################### |
152 # NOTE: trybots only runs a subset of the the spec2k tests | 120 # NOTE: trybots only runs a subset of the the spec2k tests |
153 # TODO: elminate this long running bot in favor per arch sharded bots | 121 # TODO: elminate this long running bot in favor per arch sharded bots |
154 mode-spec-pnacl-trybot() { | 122 pnacl-trybot() { |
155 clobber | 123 clobber |
156 basic-setup-pnacl "arm x86-64 x86-32" | 124 basic-setup-pnacl "arm x86-64 x86-32" |
157 build-and-run-some ${SPEC_HARNESS} "SetupPnaclArmOpt \ | 125 build-and-run-some SetupPnaclArmOpt "${TRYBOT_TESTS}" |
158 SetupPnaclX8632Opt \ | 126 build-and-run-some SetupPnaclX8632Opt "${TRYBOT_TESTS}" |
159 SetupPnaclX8664Opt \ | 127 build-and-run-some SetupPnaclX8664Opt "${TRYBOT_TESTS}" |
160 SetupPnaclTranslatorX8632Opt \ | 128 build-and-run-some SetupPnaclTranslatorX8632Opt "${TRYBOT_TRANSLATOR_TESTS}" |
161 SetupPnaclTranslatorX8664Opt" | 129 build-and-run-some SetupPnaclTranslatorX8664Opt "${TRYBOT_TRANSLATOR_TESTS}" |
162 } | 130 } |
163 | 131 |
164 mode-spec-pnacl-trybot-arm() { | 132 pnacl-trybot-arm() { |
165 clobber | 133 clobber |
166 basic-setup-pnacl "arm" | 134 basic-setup-pnacl "arm" |
167 build-and-run-some ${SPEC_HARNESS} "SetupPnaclArmOpt" | 135 build-and-run-some SetupPnaclArmOpt "${TRYBOT_TESTS}" |
168 } | 136 } |
169 | 137 |
170 mode-spec-pnacl-trybot-x8632() { | 138 pnacl-trybot-x8632() { |
171 clobber | 139 clobber |
172 basic-setup-pnacl "x86-32" | 140 basic-setup-pnacl "x86-32" |
173 build-and-run-some ${SPEC_HARNESS} "SetupPnaclX8632Opt \ | 141 build-and-run-some SetupPnaclX8632Opt "${TRYBOT_TESTS}" |
174 SetupPnaclTranslatorX8632Opt" | 142 build-and-run-some SetupPnaclTranslatorX8632Opt "${TRANSLATOR_TESTS}" |
jvoung - send to chromium...
2011/07/28 23:48:54
TRANSLATOR_TESTS -> TRYBOT_TRANSLATOR_TESTS
pdox
2011/07/29 00:05:55
oh, good catch
| |
175 } | 143 } |
176 | 144 |
177 mode-spec-pnacl-trybot-x8664() { | 145 pnacl-trybot-x8664() { |
178 clobber | 146 clobber |
179 basic-setup-pnacl "x86-64" | 147 basic-setup-pnacl "x86-64" |
180 build-and-run-some ${SPEC_HARNESS} "SetupPnaclX8664Opt \ | 148 build-and-run-some SetupPnaclX8664Opt "${TRYBOT_TESTS}" |
181 SetupPnaclTranslatorX8664Opt" | 149 build-and-run-some SetupPnaclTranslatorX8664Opt "${TRANSLATOR_TESTS}" |
182 } | 150 } |
183 | 151 |
184 | 152 pnacl-arm() { |
185 mode-spec-pnacl-arm() { | |
186 clobber | 153 clobber |
187 basic-setup-pnacl "arm" | 154 basic-setup-pnacl "arm" |
188 # arm takes a long time and we do not have sandboxed tests working | 155 # arm takes a long time and we do not have sandboxed tests working |
189 build-and-run-all-timed ${SPEC_HARNESS} "SetupPnaclArmOpt" | 156 build-and-run-all "SetupPnaclArmOpt" |
190 } | 157 } |
191 | 158 |
192 mode-spec-pnacl-x8664() { | 159 pnacl-x8664() { |
193 clobber | 160 clobber |
194 basic-setup-pnacl "x86-64" | 161 basic-setup-pnacl "x86-64" |
195 build-and-run-all-timed ${SPEC_HARNESS} \ | 162 build-and-run-all "SetupPnaclX8664 \ |
196 "SetupPnaclX8664 \ | 163 SetupPnaclX8664Opt \ |
197 SetupPnaclX8664Opt \ | 164 SetupPnaclTranslatorX8664 \ |
198 SetupPnaclTranslatorX8664 \ | 165 SetupPnaclTranslatorX8664Opt" |
199 SetupPnaclTranslatorX8664Opt" | |
200 } | 166 } |
201 | 167 |
202 mode-spec-pnacl-x8632() { | 168 pnacl-x8632() { |
203 clobber | 169 clobber |
204 basic-setup-pnacl "x86-32" | 170 basic-setup-pnacl "x86-32" |
205 build-and-run-all-timed ${SPEC_HARNESS} \ | 171 build-and-run-all "SetupPnaclX8632 \ |
206 "SetupPnaclX8632 \ | 172 SetupPnaclX8632Opt \ |
207 SetupPnaclX8632Opt \ | 173 SetupPnaclTranslatorX8632 \ |
208 SetupPnaclTranslatorX8632 \ | 174 SetupPnaclTranslatorX8632Opt" |
209 SetupPnaclTranslatorX8632Opt" | |
210 } | 175 } |
211 | 176 |
212 # scheduled to be obsolete | 177 nacl-x8632() { |
213 # TODO(robertm): delete this target | |
214 mode-spec-nacl() { | |
215 clobber | 178 clobber |
216 basic-setup-nacl "x86-32 x86-64" | 179 basic-setup-nacl "x86-32" |
217 build-and-run-all-timed ${SPEC_HARNESS} \ | 180 build-and-run-all "SetupNaclX8632 \ |
218 "SetupNaclX8664 \ | 181 SetupNaclX8632Opt" |
219 SetupNaclX8664Opt \ | |
220 SetupNaclX8632 \ | |
221 SetupNaclX8632Opt" | |
222 } | 182 } |
223 | 183 |
224 mode-spec-nacl-x8632() { | 184 nacl-x8664() { |
225 clobber | |
226 basic-setup-nacl "x86-32" | |
227 build-and-run-all-timed ${SPEC_HARNESS} \ | |
228 "SetupNaclX8632 \ | |
229 SetupNaclX8632Opt" | |
230 } | |
231 | |
232 mode-spec-nacl-x8664() { | |
233 clobber | 185 clobber |
234 basic-setup-nacl "x86-64" | 186 basic-setup-nacl "x86-64" |
235 build-and-run-all-timed ${SPEC_HARNESS} \ | 187 build-and-run-all "SetupNaclX8664 \ |
236 "SetupNaclX8664 \ | 188 SetupNaclX8664Opt" |
237 SetupNaclX8664Opt" | |
238 | 189 |
239 } | 190 } |
240 | 191 |
241 | 192 |
242 ###################################################################### | 193 ###################################################################### |
243 # Script assumed to be run in native_client/ | 194 # Script assumed to be run in native_client/ |
244 if [[ $(pwd) != */native_client ]]; then | 195 if [[ $(pwd) != */native_client ]]; then |
245 echo "ERROR: must be run in native_client!" | 196 echo "ERROR: must be run in native_client!" |
246 exit 1 | 197 exit 1 |
247 fi | 198 fi |
248 | 199 |
249 | 200 |
250 if [[ $# -eq 0 ]] ; then | 201 if [[ $# -eq 0 ]] ; then |
251 echo "you must specify a mode on the commandline:" | 202 echo "you must specify a mode on the commandline:" |
252 exit 1 | 203 exit 1 |
253 fi | 204 fi |
254 | 205 |
255 if [ "$(type -t $1)" != "function" ]; then | 206 if [ "$(type -t $1)" != "function" ]; then |
256 Usage | 207 Usage |
257 echo "ERROR: unknown mode '$1'." >&2 | 208 echo "ERROR: unknown mode '$1'." >&2 |
258 exit 1 | 209 exit 1 |
259 fi | 210 fi |
260 | 211 |
261 eval "$@" | 212 "$@" |
262 | 213 |
214 if [[ ${RETCODE} != 0 ]]; then | |
215 echo "@@@BUILD_STEP summary@@@" | |
216 echo There were failed stages. | |
217 exit ${RETCODE} | |
218 fi | |
219 | |
OLD | NEW |