Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(76)

Side by Side Diff: scripts/slave/recipes/deterministic_build.py

Issue 1170623002: Add some deterministic build trybots (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/build
Patch Set: Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 # Copyright 2014 The Chromium Authors. All rights reserved. 1 # Copyright 2014 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 """Recipe to test the deterministic build. 5 """Recipe to test the deterministic build.
6
7 Waterfall page: https://build.chromium.org/p/chromium.swarm/waterfall
8 """ 6 """
9 7
10 from infra.libs.infra_types import freeze 8 from infra.libs.infra_types import freeze
11 9
12 DEPS = [ 10 DEPS = [
13 'bot_update', 11 'bot_update',
14 'chromium', 12 'chromium',
15 'chromium_android', 13 'chromium_android',
16 'gclient', 14 'gclient',
17 'isolate', 15 'isolate',
(...skipping 30 matching lines...) Expand all
48 'chromium_config': 'chromium', 46 'chromium_config': 'chromium',
49 'gclient_config': 'chromium', 47 'gclient_config': 'chromium',
50 'platform': 'win', 48 'platform': 'win',
51 }, 49 },
52 'Windows Clang deterministic build': { 50 'Windows Clang deterministic build': {
53 'chromium_config': 'chromium_win_clang', 51 'chromium_config': 'chromium_win_clang',
54 'gclient_config': 'chromium', 52 'gclient_config': 'chromium',
55 'platform': 'win', 53 'platform': 'win',
56 }, 54 },
57 }) 55 })
56 DETERMINISTIC_BUILDERS['android_deterministic'] = (
57 DETERMINISTIC_BUILDERS['Android deterministic build'])
58 DETERMINISTIC_BUILDERS['linux_deterministic'] = (
59 DETERMINISTIC_BUILDERS['Linux deterministic build'])
60 DETERMINISTIC_BUILDERS['mac_deterministic'] = (
61 DETERMINISTIC_BUILDERS['Mac deterministic build'])
62 DETERMINISTIC_BUILDERS['windows_deterministic'] = (
63 DETERMINISTIC_BUILDERS['Windows deterministic build'])
58 64
59 65
60 def MoveBuildDirectory(api, src_dir, dst_dir): 66 def MoveBuildDirectory(api, src_dir, dst_dir):
61 api.python.inline('Move %s to %s' % (src_dir, dst_dir), 67 api.python.inline('Move %s to %s' % (src_dir, dst_dir),
62 """ 68 """
63 import os 69 import os
64 import shutil 70 import shutil
65 import sys 71 import sys
66 if os.path.exists(sys.argv[2]): 72 if os.path.exists(sys.argv[2]):
67 shutil.rmtree(sys.argv[2]) 73 shutil.rmtree(sys.argv[2])
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
133 api.chromium.compile(targets, force_clobber=True, name='Second build') 139 api.chromium.compile(targets, force_clobber=True, name='Second build')
134 api.isolate.remove_build_metadata() 140 api.isolate.remove_build_metadata()
135 if enable_isolate: 141 if enable_isolate:
136 # This should be quick if the build is indeed deterministic. 142 # This should be quick if the build is indeed deterministic.
137 api.isolate.isolate_tests(api.chromium.output_dir) 143 api.isolate.isolate_tests(api.chromium.output_dir)
138 MoveBuildDirectory(api, str(api.chromium.output_dir), 144 MoveBuildDirectory(api, str(api.chromium.output_dir),
139 str(api.chromium.output_dir).rstrip('\\/') + '.2') 145 str(api.chromium.output_dir).rstrip('\\/') + '.2')
140 146
141 # Compare the artifacts from the 2 builds, raise an exception if they're 147 # Compare the artifacts from the 2 builds, raise an exception if they're
142 # not equals. 148 # not equals.
143 # TODO(sebmarchand): Do a smarter comparison.
144 api.isolate.compare_build_artifacts( 149 api.isolate.compare_build_artifacts(
145 str(api.chromium.output_dir).rstrip('\\/') + '.1', 150 str(api.chromium.output_dir).rstrip('\\/') + '.1',
146 str(api.chromium.output_dir).rstrip('\\/') + '.2') 151 str(api.chromium.output_dir).rstrip('\\/') + '.2')
147 152
148 153
149 def _sanitize_nonalpha(text): 154 def _sanitize_nonalpha(text):
150 return ''.join(c if c.isalnum() else '_' for c in text) 155 return ''.join(c if c.isalnum() else '_' for c in text)
151 156
152 157
153 def GenTests(api): 158 def GenTests(api):
154 mastername = 'chromium.swarm' 159 mastername = 'chromium.swarm'
155 for buildername in DETERMINISTIC_BUILDERS: 160 for buildername in DETERMINISTIC_BUILDERS:
156 test_name = 'full_%s_%s' % (_sanitize_nonalpha(mastername), 161 test_name = 'full_%s_%s' % (_sanitize_nonalpha(mastername),
157 _sanitize_nonalpha(buildername)) 162 _sanitize_nonalpha(buildername))
158 yield ( 163 yield (
159 api.test(test_name) + 164 api.test(test_name) +
160 api.properties.scheduled() + 165 api.properties.scheduled() +
161 api.properties.generic(buildername=buildername, 166 api.properties.generic(buildername=buildername,
162 mastername=mastername) + 167 mastername=mastername) +
163 api.platform(DETERMINISTIC_BUILDERS[buildername]['platform'], 32) + 168 api.platform(DETERMINISTIC_BUILDERS[buildername]['platform'], 32) +
164 api.properties(configuration='Release') + 169 api.properties(configuration='Release') +
165 api.step_data('remove_build_metadata', retcode=1) 170 api.step_data('remove_build_metadata', retcode=1)
166 ) 171 )
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698