OLD | NEW |
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 | 6 |
7 Waterfall page: https://build.chromium.org/p/chromium.swarm/waterfall | 7 Waterfall page: https://build.chromium.org/p/chromium.swarm/waterfall |
8 """ | 8 """ |
9 | 9 |
10 from infra.libs.infra_types import freeze | 10 from infra.libs.infra_types import freeze |
(...skipping 16 matching lines...) Expand all Loading... |
27 'Android deterministic build': { | 27 'Android deterministic build': { |
28 'chromium_config': 'android', | 28 'chromium_config': 'android', |
29 'chromium_config_kwargs': { | 29 'chromium_config_kwargs': { |
30 'BUILD_CONFIG': 'Release', | 30 'BUILD_CONFIG': 'Release', |
31 'TARGET_BITS': 32, | 31 'TARGET_BITS': 32, |
32 'TARGET_PLATFORM': 'android', | 32 'TARGET_PLATFORM': 'android', |
33 }, | 33 }, |
34 'platform': 'linux', | 34 'platform': 'linux', |
35 'targets': ['all'], | 35 'targets': ['all'], |
36 }, | 36 }, |
37 'IOS deterministic build': { | |
38 'chromium_apply_config': ['ninja'], | |
39 'chromium_config': 'chromium_ios_device', | |
40 'chromium_config_kwargs': { | |
41 'BUILD_CONFIG': 'Release', | |
42 'TARGET_PLATFORM': 'ios', | |
43 'TARGET_BITS': 32, | |
44 }, | |
45 'gclient_config': 'ios', | |
46 'platform': 'mac', | |
47 'targets': ['all'], | |
48 }, | |
49 'Linux deterministic build': { | 37 'Linux deterministic build': { |
50 'chromium_config': 'chromium', | 38 'chromium_config': 'chromium', |
51 'gclient_config': 'chromium', | 39 'gclient_config': 'chromium', |
52 'platform': 'linux', | 40 'platform': 'linux', |
53 }, | 41 }, |
54 'Mac deterministic build': { | 42 'Mac deterministic build': { |
55 'chromium_config': 'chromium', | 43 'chromium_config': 'chromium', |
56 'gclient_config': 'chromium', | 44 'gclient_config': 'chromium', |
57 'platform': 'mac', | 45 'platform': 'mac', |
58 }, | 46 }, |
(...skipping 15 matching lines...) Expand all Loading... |
74 shutil.rmtree(sys.argv[2]) | 62 shutil.rmtree(sys.argv[2]) |
75 shutil.move(sys.argv[1], sys.argv[2])""", | 63 shutil.move(sys.argv[1], sys.argv[2])""", |
76 args=[src_dir, dst_dir]) | 64 args=[src_dir, dst_dir]) |
77 | 65 |
78 | 66 |
79 def ConfigureChromiumBuilder(api, recipe_config): | 67 def ConfigureChromiumBuilder(api, recipe_config): |
80 api.chromium.set_config(recipe_config['chromium_config'], | 68 api.chromium.set_config(recipe_config['chromium_config'], |
81 **recipe_config.get('chromium_config_kwargs', | 69 **recipe_config.get('chromium_config_kwargs', |
82 {'BUILD_CONFIG': 'Release'})) | 70 {'BUILD_CONFIG': 'Release'})) |
83 api.chromium.apply_config('chromium_deterministic_build') | 71 api.chromium.apply_config('chromium_deterministic_build') |
84 for c in recipe_config.get('chromium_apply_config', []): | |
85 api.chromium.apply_config(c) | |
86 api.gclient.set_config(recipe_config['gclient_config'], | 72 api.gclient.set_config(recipe_config['gclient_config'], |
87 **recipe_config.get('gclient_config_kwargs', {})) | 73 **recipe_config.get('gclient_config_kwargs', {})) |
88 | 74 |
89 api.chromium.cleanup_temp() | 75 api.chromium.cleanup_temp() |
90 | 76 |
91 # Checkout chromium. | 77 # Checkout chromium. |
92 api.bot_update.ensure_checkout(force=True) | 78 api.bot_update.ensure_checkout(force=True) |
93 | 79 |
94 | 80 |
95 def ConfigureAndroidBuilder(api, recipe_config): | 81 def ConfigureAndroidBuilder(api, recipe_config): |
(...skipping 11 matching lines...) Expand all Loading... |
107 buildername = api.properties['buildername'] | 93 buildername = api.properties['buildername'] |
108 recipe_config = DETERMINISTIC_BUILDERS[buildername] | 94 recipe_config = DETERMINISTIC_BUILDERS[buildername] |
109 | 95 |
110 targets = recipe_config.get('targets', ['chromium_swarm_tests']) | 96 targets = recipe_config.get('targets', ['chromium_swarm_tests']) |
111 if recipe_config.get('chromium_config_kwargs'): | 97 if recipe_config.get('chromium_config_kwargs'): |
112 target_platform = recipe_config['chromium_config_kwargs'].get( | 98 target_platform = recipe_config['chromium_config_kwargs'].get( |
113 'TARGET_PLATFORM') | 99 'TARGET_PLATFORM') |
114 else: | 100 else: |
115 target_platform = recipe_config.get('platform') | 101 target_platform = recipe_config.get('platform') |
116 | 102 |
117 # TODO(sebmarchand): iOS should be handled differently, fix this. | 103 if target_platform in ('linux', 'mac', 'win'): |
118 if target_platform in ('linux', 'mac', 'win', 'ios'): | |
119 ConfigureChromiumBuilder(api, recipe_config) | 104 ConfigureChromiumBuilder(api, recipe_config) |
120 elif target_platform is 'android': | 105 elif target_platform is 'android': |
121 ConfigureAndroidBuilder(api, recipe_config) | 106 ConfigureAndroidBuilder(api, recipe_config) |
122 api.chromium_android.init_and_sync() | 107 api.chromium_android.init_and_sync() |
123 | 108 |
124 # Enable test isolation. Modifies GYP_DEFINES used in 'runhooks' below. | 109 # Enable test isolation. Modifies GYP_DEFINES used in 'runhooks' below. |
125 api.isolate.set_isolate_environment(api.chromium.c) | 110 api.isolate.set_isolate_environment(api.chromium.c) |
126 | 111 |
127 # Do a first build and move the build artifact to the temp directory. | 112 # Do a first build and move the build artifact to the temp directory. |
128 api.chromium.runhooks() | 113 api.chromium.runhooks() |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
161 _sanitize_nonalpha(buildername)) | 146 _sanitize_nonalpha(buildername)) |
162 yield ( | 147 yield ( |
163 api.test(test_name) + | 148 api.test(test_name) + |
164 api.properties.scheduled() + | 149 api.properties.scheduled() + |
165 api.properties.generic(buildername=buildername, | 150 api.properties.generic(buildername=buildername, |
166 mastername=mastername) + | 151 mastername=mastername) + |
167 api.platform(DETERMINISTIC_BUILDERS[buildername]['platform'], 32) + | 152 api.platform(DETERMINISTIC_BUILDERS[buildername]['platform'], 32) + |
168 api.properties(configuration='Release') + | 153 api.properties(configuration='Release') + |
169 api.step_data('remove_build_metadata', retcode=1) | 154 api.step_data('remove_build_metadata', retcode=1) |
170 ) | 155 ) |
OLD | NEW |