OLD | NEW |
1 # Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 # Copyright (c) 2013 The Chromium Authors. All rights reserved. |
2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
4 | 4 |
5 """Base class for all slave-side build steps. """ | 5 """Base class for all slave-side build steps. """ |
6 | 6 |
7 import config | 7 import config |
8 # pylint: disable=W0611 | 8 # pylint: disable=W0611 |
9 import flavor_utils | 9 import flavor_utils |
10 import imp | 10 import imp |
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
146 'flavor_utils.%s' % flavor_utils_module_name, flavor_utils_path) | 146 'flavor_utils.%s' % flavor_utils_module_name, flavor_utils_path) |
147 flavor_utils_class_name = ''.join([part.title() for part in | 147 flavor_utils_class_name = ''.join([part.title() for part in |
148 flavor.split('_')]) | 148 flavor.split('_')]) |
149 flavor_utils_class = getattr(flavor_utils_module, | 149 flavor_utils_class = getattr(flavor_utils_module, |
150 '%sBuildStepUtils' % flavor_utils_class_name) | 150 '%sBuildStepUtils' % flavor_utils_class_name) |
151 self._flavor_utils = flavor_utils_class(self) | 151 self._flavor_utils = flavor_utils_class(self) |
152 except (ImportError, IOError) as e: | 152 except (ImportError, IOError) as e: |
153 raise Exception('Unrecognized build flavor: %s\n%s' % (flavor, e)) | 153 raise Exception('Unrecognized build flavor: %s\n%s' % (flavor, e)) |
154 | 154 |
155 self._configuration = args['configuration'] | 155 self._configuration = args['configuration'] |
156 self._gm_image_subdir = args['gm_image_subdir'] | |
157 | 156 |
158 self._target_platform = args['target_platform'] | 157 self._target_platform = args['target_platform'] |
159 self._deps_target_os = \ | 158 self._deps_target_os = \ |
160 None if args['deps_target_os'] == 'None' else args['deps_target_os'] | 159 None if args['deps_target_os'] == 'None' else args['deps_target_os'] |
161 self._revision = \ | 160 self._revision = \ |
162 None if args['revision'] == 'None' or args['revision'] == 'HEAD' \ | 161 None if args['revision'] == 'None' or args['revision'] == 'HEAD' \ |
163 else int(args['revision']) | 162 else int(args['revision']) |
164 self._got_revision = \ | 163 self._got_revision = \ |
165 None if args['got_revision'] == 'None' else int(args['got_revision']) | 164 None if args['got_revision'] == 'None' else int(args['got_revision']) |
166 self._do_upload_results = (False if args['do_upload_results'] == 'None' | 165 self._do_upload_results = (False if args['do_upload_results'] == 'None' |
167 else args['do_upload_results'] == 'True') | 166 else args['do_upload_results'] == 'True') |
168 # Figure out where we are going to store images generated by GM. | 167 # Figure out where we are going to store images generated by GM. |
169 self._gm_actual_basedir = os.path.join(os.pardir, os.pardir, 'gm', 'actual') | 168 self._gm_actual_basedir = os.path.join(os.pardir, os.pardir, 'gm', 'actual') |
170 self._gm_merge_basedir = os.path.join(os.pardir, os.pardir, 'gm', 'merge') | 169 self._gm_merge_basedir = os.path.join(os.pardir, os.pardir, 'gm', 'merge') |
171 self._gm_expected_dir = os.path.join('expectations', 'gm', | 170 self._gm_expected_dir = os.path.join('expectations', 'gm', |
172 self._gm_image_subdir) | 171 self._builder_name) |
173 self._gm_actual_dir = os.path.join(self._gm_actual_basedir, | 172 self._gm_actual_dir = os.path.join(self._gm_actual_basedir, |
174 self._gm_image_subdir) | 173 self._builder_name) |
175 self._gm_actual_svn_baseurl = '%s/%s' % (args['autogen_svn_baseurl'], | 174 self._gm_actual_svn_baseurl = '%s/%s' % (args['autogen_svn_baseurl'], |
176 'gm-actual') | 175 'gm-actual') |
177 self._resource_dir = 'resources' | 176 self._resource_dir = 'resources' |
178 self._autogen_svn_username_file = '.autogen_svn_username' | 177 self._autogen_svn_username_file = '.autogen_svn_username' |
179 self._autogen_svn_password_file = '.autogen_svn_password' | 178 self._autogen_svn_password_file = '.autogen_svn_password' |
180 self._make_flags = shlex.split(args['make_flags'].replace('"', '')) | 179 self._make_flags = shlex.split(args['make_flags'].replace('"', '')) |
181 self._test_args = shlex.split(args['test_args'].replace('"', '')) | 180 self._test_args = shlex.split(args['test_args'].replace('"', '')) |
182 self._gm_args = shlex.split(args['gm_args'].replace('"', '')) | 181 self._gm_args = shlex.split(args['gm_args'].replace('"', '')) |
183 self._gm_args.append('--serialize') | 182 self._gm_args.append('--serialize') |
184 self._bench_args = shlex.split(args['bench_args'].replace('"', '')) | 183 self._bench_args = shlex.split(args['bench_args'].replace('"', '')) |
185 self._is_try = args['is_try'] == 'True' | 184 self._is_try = args['is_try'] == 'True' |
186 | 185 |
187 if os.name == 'nt': | 186 if os.name == 'nt': |
188 self._default_make_flags = [] | 187 self._default_make_flags = [] |
189 else: | 188 else: |
190 # Set the jobs limit to 4, since we have multiple slaves running on each | 189 # Set the jobs limit to 4, since we have multiple slaves running on each |
191 # machine. | 190 # machine. |
192 self._default_make_flags = ['--jobs', '4', '--max-load=4.0'] | 191 self._default_make_flags = ['--jobs', '4', '--max-load=4.0'] |
193 | 192 |
194 # Adding the playback directory transfer objects. | 193 # Adding the playback directory transfer objects. |
195 self._local_playback_dirs = LocalSkpPlaybackDirs( | 194 self._local_playback_dirs = LocalSkpPlaybackDirs( |
196 self._builder_name, self._gm_image_subdir, | 195 self._builder_name, |
197 None if args['perf_output_basedir'] == 'None' | 196 None if args['perf_output_basedir'] == 'None' |
198 else args['perf_output_basedir']) | 197 else args['perf_output_basedir']) |
199 self._storage_playback_dirs = StorageSkpPlaybackDirs( | 198 self._storage_playback_dirs = StorageSkpPlaybackDirs( |
200 self._builder_name, self._gm_image_subdir, | 199 self._builder_name, |
201 None if args['perf_output_basedir'] == 'None' | 200 None if args['perf_output_basedir'] == 'None' |
202 else args['perf_output_basedir']) | 201 else args['perf_output_basedir']) |
203 | 202 |
204 self._skp_dir = self._local_playback_dirs.PlaybackSkpDir() | 203 self._skp_dir = self._local_playback_dirs.PlaybackSkpDir() |
205 | 204 |
206 # Figure out where we are going to store performance output. | 205 # Figure out where we are going to store performance output. |
207 if args['perf_output_basedir'] != 'None': | 206 if args['perf_output_basedir'] != 'None': |
208 self._perf_data_dir = os.path.join(args['perf_output_basedir'], | 207 self._perf_data_dir = os.path.join(args['perf_output_basedir'], |
209 self._builder_name, 'data') | 208 self._builder_name, 'data') |
210 self._perf_graphs_dir = os.path.join(args['perf_output_basedir'], | 209 self._perf_graphs_dir = os.path.join(args['perf_output_basedir'], |
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
379 else: | 378 else: |
380 raise BuildStepFailure('Build step failed.') | 379 raise BuildStepFailure('Build step failed.') |
381 except Exception: | 380 except Exception: |
382 print traceback.format_exc() | 381 print traceback.format_exc() |
383 if attempt + 1 >= step.attempts: | 382 if attempt + 1 >= step.attempts: |
384 raise | 383 raise |
385 # pylint: disable=W0212 | 384 # pylint: disable=W0212 |
386 step._WaitFunc(attempt) | 385 step._WaitFunc(attempt) |
387 attempt += 1 | 386 attempt += 1 |
388 print '**** %s, attempt %d ****' % (StepType.__name__, attempt + 1) | 387 print '**** %s, attempt %d ****' % (StepType.__name__, attempt + 1) |
OLD | NEW |