OLD | NEW |
1 #!/usr/bin/python | 1 #!/usr/bin/python |
2 | 2 |
3 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 3 # Copyright (c) 2012 The Chromium Authors. All rights reserved. |
4 # Use of this source code is governed by a BSD-style license that can be | 4 # Use of this source code is governed by a BSD-style license that can be |
5 # found in the LICENSE file. | 5 # found in the LICENSE file. |
6 | 6 |
7 """ | 7 """ |
8 Shared code for use in the buildbot scripts. | 8 Shared code for use in the buildbot scripts. |
9 """ | 9 """ |
10 | 10 |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
83 def __enter__(self): | 83 def __enter__(self): |
84 print '@@@BUILD_STEP %s@@@' % self.name | 84 print '@@@BUILD_STEP %s@@@' % self.name |
85 | 85 |
86 def __exit__(self, type, value, traceback): | 86 def __exit__(self, type, value, traceback): |
87 if value: | 87 if value: |
88 print '@@@STEP_FAILURE@@@' | 88 print '@@@STEP_FAILURE@@@' |
89 if self.swallow_error and isinstance(value, OSError): | 89 if self.swallow_error and isinstance(value, OSError): |
90 return True | 90 return True |
91 | 91 |
92 | 92 |
93 def RunBot(parse_name, custom_steps): | 93 def BuildSDK(build_info): |
| 94 """ |
| 95 Builds the SDK. |
| 96 |
| 97 - build_info: the buildInfo object, containing information about what sort of |
| 98 build and test to be run. |
| 99 """ |
| 100 with BuildStep('Build SDK'): |
| 101 args = [sys.executable, './tools/build.py', '--mode=' + build_info.mode, |
| 102 'create_sdk'] |
| 103 print 'Building SDK: %s' % (' '.join(args)) |
| 104 RunProcess(args) |
| 105 |
| 106 |
| 107 def RunBot(parse_name, custom_steps, build_step=BuildSDK): |
94 """ | 108 """ |
95 The main function for running a buildbot. | 109 The main function for running a buildbot. |
96 | 110 |
97 A buildbot script should invoke this once. The parse_name function will be | 111 A buildbot script should invoke this once. The parse_name function will be |
98 called with the name of the buildbot and should return an instance of | 112 called with the name of the buildbot and should return an instance of |
99 BuildInfo. This function will then set up the bot, build the SDK etc. When | 113 BuildInfo. This function will then set up the bot, build the SDK etc. When |
100 that's done, it will call custom_steps, passing in the BuildInfo object. | 114 that's done, it will call custom_steps, passing in the BuildInfo object. |
101 | 115 |
102 In that, you can perform any bot-specific build steps. | 116 In that, you can perform any bot-specific build steps. |
103 | 117 |
(...skipping 11 matching lines...) Expand all Loading... |
115 sys.exit(1) | 129 sys.exit(1) |
116 | 130 |
117 # Print out the buildinfo for easy debugging. | 131 # Print out the buildinfo for easy debugging. |
118 build_info.PrintBuildInfo() | 132 build_info.PrintBuildInfo() |
119 | 133 |
120 # Make sure we are in the dart directory | 134 # Make sure we are in the dart directory |
121 os.chdir(DART_PATH) | 135 os.chdir(DART_PATH) |
122 | 136 |
123 try: | 137 try: |
124 Clobber(build_info.mode) | 138 Clobber(build_info.mode) |
125 BuildSDK(build_info.mode, build_info.system) | 139 build_step(build_info) |
126 | 140 |
127 custom_steps(build_info) | 141 custom_steps(build_info) |
128 except OSError as e: | 142 except OSError as e: |
129 sys.exit(e.errno) | 143 sys.exit(e.errno) |
130 | 144 |
131 sys.exit(0) | 145 sys.exit(0) |
132 | 146 |
133 | 147 |
134 def GetBotName(): | 148 def GetBotName(): |
135 """ | 149 """ |
(...skipping 29 matching lines...) Expand all Loading... |
165 return | 179 return |
166 | 180 |
167 with BuildStep('Clobber'): | 181 with BuildStep('Clobber'): |
168 cmd = [sys.executable, | 182 cmd = [sys.executable, |
169 './tools/clean_output_directory.py', | 183 './tools/clean_output_directory.py', |
170 '--mode=' + mode] | 184 '--mode=' + mode] |
171 print 'Clobbering %s' % (' '.join(cmd)) | 185 print 'Clobbering %s' % (' '.join(cmd)) |
172 RunProcess(cmd) | 186 RunProcess(cmd) |
173 | 187 |
174 | 188 |
175 def BuildSDK(mode, system): | |
176 """ | |
177 Builds the SDK. | |
178 | |
179 - mode: either 'debug' or 'release' | |
180 - system: either 'linux', 'mac', or 'win7' | |
181 """ | |
182 with BuildStep('Build SDK'): | |
183 args = [sys.executable, './tools/build.py', '--mode=' + mode, 'create_sdk'] | |
184 print 'Building SDK: %s' % (' '.join(args)) | |
185 RunProcess(args) | |
186 | |
187 | |
188 def RunTest(name, build_info, targets, flags=None): | 189 def RunTest(name, build_info, targets, flags=None): |
189 """ | 190 """ |
190 Runs test.py with the given settings. | 191 Runs test.py with the given settings. |
191 """ | 192 """ |
192 if not flags: | 193 if not flags: |
193 flags = [] | 194 flags = [] |
194 | 195 |
195 step_name = GetStepName(name, flags) | 196 step_name = GetStepName(name, flags) |
196 with BuildStep(step_name): | 197 with BuildStep(step_name): |
197 sys.stdout.flush() | 198 sys.stdout.flush() |
(...skipping 29 matching lines...) Expand all Loading... |
227 if exit_code != 0: | 228 if exit_code != 0: |
228 raise OSError(exit_code) | 229 raise OSError(exit_code) |
229 | 230 |
230 | 231 |
231 def GetStepName(name, flags): | 232 def GetStepName(name, flags): |
232 """ | 233 """ |
233 Filters out flags with '=' as this breaks the /stats feature of the buildbot. | 234 Filters out flags with '=' as this breaks the /stats feature of the buildbot. |
234 """ | 235 """ |
235 flags = [x for x in flags if not '=' in x] | 236 flags = [x for x in flags if not '=' in x] |
236 return ('%s tests %s' % (name, ' '.join(flags))).strip() | 237 return ('%s tests %s' % (name, ' '.join(flags))).strip() |
OLD | NEW |