| 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 |