borenet | 1ed2ae4 | 2016-07-26 11:52:17 -0700 | [diff] [blame] | 1 | # Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 | # Use of this source code is governed by a BSD-style license that can be |
| 3 | # found in the LICENSE file. |
| 4 | |
| 5 | |
| 6 | # Recipe module for Skia Swarming compile. |
| 7 | |
| 8 | |
| 9 | DEPS = [ |
borenet | 1436a09 | 2016-08-03 08:23:10 -0700 | [diff] [blame] | 10 | 'core', |
borenet | 1ed2ae4 | 2016-07-26 11:52:17 -0700 | [diff] [blame] | 11 | 'recipe_engine/json', |
| 12 | 'recipe_engine/path', |
| 13 | 'recipe_engine/platform', |
| 14 | 'recipe_engine/properties', |
borenet | 1436a09 | 2016-08-03 08:23:10 -0700 | [diff] [blame] | 15 | 'recipe_engine/python', |
| 16 | 'flavor', |
| 17 | 'run', |
| 18 | 'vars', |
borenet | 1ed2ae4 | 2016-07-26 11:52:17 -0700 | [diff] [blame] | 19 | ] |
| 20 | |
| 21 | |
| 22 | TEST_BUILDERS = { |
| 23 | 'client.skia.compile': { |
| 24 | 'skiabot-linux-swarm-000': [ |
borenet | 1ed2ae4 | 2016-07-26 11:52:17 -0700 | [diff] [blame] | 25 | 'Build-Mac-Clang-Arm7-Release-iOS', |
Mike Klein | 6749af4 | 2016-11-07 15:38:48 -0500 | [diff] [blame] | 26 | 'Build-Mac-Clang-arm64-Debug-GN_iOS', |
mtklein | 82023d5 | 2016-08-29 13:14:55 -0700 | [diff] [blame] | 27 | 'Build-Mac-Clang-mipsel-Debug-GN_Android', |
borenet | 1ed2ae4 | 2016-07-26 11:52:17 -0700 | [diff] [blame] | 28 | 'Build-Mac-Clang-x86_64-Debug-CommandBuffer', |
mtklein | da8f654 | 2016-08-31 12:35:21 -0700 | [diff] [blame] | 29 | 'Build-Mac-Clang-x86_64-Release-GN', |
mtklein | 82023d5 | 2016-08-29 13:14:55 -0700 | [diff] [blame] | 30 | 'Build-Ubuntu-Clang-arm64-Release-GN_Android', |
mtklein | 357f9d2 | 2016-09-13 13:50:09 -0700 | [diff] [blame] | 31 | 'Build-Ubuntu-Clang-arm64-Release-GN_Android_Vulkan', |
mtklein | 2b3c2a3 | 2016-09-08 08:39:34 -0700 | [diff] [blame] | 32 | 'Build-Ubuntu-Clang-x86_64-Debug-ASAN', |
borenet | 3f5a475 | 2016-08-04 12:16:03 -0700 | [diff] [blame] | 33 | 'Build-Ubuntu-Clang-x86_64-Debug-GN', |
mtklein | 122fac3 | 2016-09-19 07:26:41 -0700 | [diff] [blame] | 34 | 'Build-Ubuntu-Clang-arm64-Debug-GN_Android-Trybot', |
| 35 | 'Build-Ubuntu-Clang-arm64-Debug-GN_Android_FrameworkDefs', |
borenet | 151aee4 | 2016-07-27 14:05:54 -0700 | [diff] [blame] | 36 | 'Build-Ubuntu-GCC-x86-Debug', |
jcgregorio | ba59595 | 2016-07-28 09:38:59 -0700 | [diff] [blame] | 37 | 'Build-Ubuntu-GCC-x86_64-Debug-GN', |
mtklein | 82023d5 | 2016-08-29 13:14:55 -0700 | [diff] [blame] | 38 | 'Build-Ubuntu-GCC-x86_64-Debug-MSAN', |
borenet | e715d2d | 2016-09-15 09:08:48 -0700 | [diff] [blame] | 39 | 'Build-Ubuntu-GCC-x86_64-Debug-NoGPU', |
borenet | 2c3112d | 2016-08-05 06:30:10 -0700 | [diff] [blame] | 40 | 'Build-Ubuntu-GCC-x86_64-Debug-SK_USE_DISCARDABLE_SCALEDIMAGECACHE', |
| 41 | 'Build-Ubuntu-GCC-x86_64-Release-ANGLE', |
borenet | 2c3112d | 2016-08-05 06:30:10 -0700 | [diff] [blame] | 42 | 'Build-Ubuntu-GCC-x86_64-Release-Fast', |
| 43 | 'Build-Ubuntu-GCC-x86_64-Release-Mesa', |
borenet | 1ed2ae4 | 2016-07-26 11:52:17 -0700 | [diff] [blame] | 44 | 'Build-Ubuntu-GCC-x86_64-Release-PDFium', |
Eric Boren | 3dc73f3 | 2016-12-13 08:48:46 -0500 | [diff] [blame^] | 45 | 'Build-Ubuntu-GCC-x86_64-Release-PDFium_SkiaPaths', |
borenet | 1ed2ae4 | 2016-07-26 11:52:17 -0700 | [diff] [blame] | 46 | 'Build-Ubuntu-GCC-x86_64-Release-Valgrind', |
Mike Klein | 86c2c0f | 2016-11-02 13:13:16 -0400 | [diff] [blame] | 47 | 'Build-Win-Clang-arm64-Release-GN_Android', |
borenet | 1ed2ae4 | 2016-07-26 11:52:17 -0700 | [diff] [blame] | 48 | 'Build-Win-MSVC-x86-Debug', |
Mike Klein | 97e4a86 | 2016-10-15 11:09:30 -0400 | [diff] [blame] | 49 | 'Build-Win-MSVC-x86-Debug-ANGLE', |
borenet | 2c3112d | 2016-08-05 06:30:10 -0700 | [diff] [blame] | 50 | 'Build-Win-MSVC-x86-Debug-Exceptions', |
| 51 | 'Build-Win-MSVC-x86-Release-GDI', |
jcgregorio | ba59595 | 2016-07-28 09:38:59 -0700 | [diff] [blame] | 52 | 'Build-Win-MSVC-x86-Release-GN', |
borenet | 1ed2ae4 | 2016-07-26 11:52:17 -0700 | [diff] [blame] | 53 | 'Build-Win-MSVC-x86_64-Release-Vulkan', |
| 54 | ], |
| 55 | }, |
| 56 | } |
| 57 | |
| 58 | |
borenet | e2251ac | 2016-08-05 05:40:59 -0700 | [diff] [blame] | 59 | def build_targets_from_builder_dict(builder_dict): |
| 60 | """Return a list of targets to build, depending on the builder type.""" |
| 61 | if builder_dict.get('extra_config') == 'iOS': |
| 62 | return ['iOSShell'] |
mtklein | 3b10b37 | 2016-09-08 09:30:20 -0700 | [diff] [blame] | 63 | return ['most'] |
borenet | e2251ac | 2016-08-05 05:40:59 -0700 | [diff] [blame] | 64 | |
| 65 | |
| 66 | def get_extra_env_vars(builder_dict): |
| 67 | env = {} |
| 68 | if builder_dict.get('compiler') == 'Clang': |
| 69 | env['CC'] = '/usr/bin/clang' |
| 70 | env['CXX'] = '/usr/bin/clang++' |
| 71 | |
| 72 | # SKNX_NO_SIMD, SK_USE_DISCARDABLE_SCALEDIMAGECACHE, etc. |
| 73 | extra_config = builder_dict.get('extra_config', '') |
| 74 | if extra_config.startswith('SK') and extra_config.isupper(): |
borenet | 2c3112d | 2016-08-05 06:30:10 -0700 | [diff] [blame] | 75 | env['CPPFLAGS'] = '-D' + extra_config |
borenet | e2251ac | 2016-08-05 05:40:59 -0700 | [diff] [blame] | 76 | |
| 77 | return env |
| 78 | |
| 79 | |
| 80 | def get_gyp_defines(builder_dict): |
| 81 | gyp_defs = {} |
| 82 | |
borenet | e2251ac | 2016-08-05 05:40:59 -0700 | [diff] [blame] | 83 | if (builder_dict.get('os') == 'iOS' or |
| 84 | builder_dict.get('extra_config') == 'iOS'): |
Mike Klein | b9eb887 | 2016-10-17 14:36:18 -0400 | [diff] [blame] | 85 | gyp_defs['skia_arch_type'] = 'arm' |
borenet | e2251ac | 2016-08-05 05:40:59 -0700 | [diff] [blame] | 86 | gyp_defs['skia_clang_build'] = '1' |
Mike Klein | b9eb887 | 2016-10-17 14:36:18 -0400 | [diff] [blame] | 87 | gyp_defs['skia_os'] = 'ios' |
| 88 | gyp_defs['skia_warnings_as_errors'] = 1 |
borenet | e715d2d | 2016-09-15 09:08:48 -0700 | [diff] [blame] | 89 | |
borenet | e2251ac | 2016-08-05 05:40:59 -0700 | [diff] [blame] | 90 | return gyp_defs |
| 91 | |
| 92 | |
borenet | 1ed2ae4 | 2016-07-26 11:52:17 -0700 | [diff] [blame] | 93 | def RunSteps(api): |
borenet | 1436a09 | 2016-08-03 08:23:10 -0700 | [diff] [blame] | 94 | api.core.setup() |
| 95 | |
borenet | e2251ac | 2016-08-05 05:40:59 -0700 | [diff] [blame] | 96 | env = get_extra_env_vars(api.vars.builder_cfg) |
| 97 | gyp_defs = get_gyp_defines(api.vars.builder_cfg) |
| 98 | gyp_defs_list = ['%s=%s' % (k, v) for k, v in gyp_defs.iteritems()] |
| 99 | gyp_defs_list.sort() |
| 100 | env['GYP_DEFINES'] = ' '.join(gyp_defs_list) |
borenet | d460a3c | 2016-08-05 05:18:05 -0700 | [diff] [blame] | 101 | |
borenet | e2251ac | 2016-08-05 05:40:59 -0700 | [diff] [blame] | 102 | build_targets = build_targets_from_builder_dict(api.vars.builder_cfg) |
borenet | d460a3c | 2016-08-05 05:18:05 -0700 | [diff] [blame] | 103 | |
borenet | 1436a09 | 2016-08-03 08:23:10 -0700 | [diff] [blame] | 104 | try: |
borenet | d460a3c | 2016-08-05 05:18:05 -0700 | [diff] [blame] | 105 | for target in build_targets: |
| 106 | api.flavor.compile(target, env=env) |
borenet | 1436a09 | 2016-08-03 08:23:10 -0700 | [diff] [blame] | 107 | api.run.copy_build_products( |
| 108 | api.flavor.out_dir, |
| 109 | api.vars.swarming_out_dir.join( |
| 110 | 'out', api.vars.configuration)) |
| 111 | api.flavor.copy_extra_build_products(api.vars.swarming_out_dir) |
| 112 | finally: |
| 113 | if 'Win' in api.vars.builder_cfg.get('os', ''): |
| 114 | api.python.inline( |
| 115 | name='cleanup', |
| 116 | program='''import psutil |
| 117 | for p in psutil.process_iter(): |
| 118 | try: |
| 119 | if p.name in ('mspdbsrv.exe', 'vctip.exe', 'cl.exe', 'link.exe'): |
| 120 | p.kill() |
| 121 | except psutil._error.AccessDenied: |
| 122 | pass |
| 123 | ''', |
| 124 | infra_step=True) |
| 125 | |
borenet | bc20a70 | 2016-08-03 10:38:44 -0700 | [diff] [blame] | 126 | api.flavor.cleanup_steps() |
borenet | 1436a09 | 2016-08-03 08:23:10 -0700 | [diff] [blame] | 127 | api.run.check_failure() |
borenet | 1ed2ae4 | 2016-07-26 11:52:17 -0700 | [diff] [blame] | 128 | |
| 129 | |
| 130 | def GenTests(api): |
| 131 | for mastername, slaves in TEST_BUILDERS.iteritems(): |
| 132 | for slavename, builders_by_slave in slaves.iteritems(): |
| 133 | for builder in builders_by_slave: |
| 134 | test = ( |
| 135 | api.test(builder) + |
| 136 | api.properties(buildername=builder, |
| 137 | mastername=mastername, |
| 138 | slavename=slavename, |
| 139 | buildnumber=5, |
| 140 | revision='abc123', |
| 141 | path_config='kitchen', |
| 142 | swarm_out_dir='[SWARM_OUT_DIR]') + |
| 143 | api.path.exists( |
Ravi Mistry | 9bcca6a | 2016-11-21 16:06:19 -0500 | [diff] [blame] | 144 | api.path['start_dir'].join('tmp', 'uninteresting_hashes.txt') |
borenet | 1ed2ae4 | 2016-07-26 11:52:17 -0700 | [diff] [blame] | 145 | ) |
| 146 | ) |
| 147 | if 'Win' in builder: |
| 148 | test += api.platform('win', 64) |
| 149 | elif 'Mac' in builder: |
| 150 | test += api.platform('mac', 64) |
| 151 | else: |
| 152 | test += api.platform('linux', 64) |
borenet | 1ed2ae4 | 2016-07-26 11:52:17 -0700 | [diff] [blame] | 153 | if 'Trybot' in builder: |
| 154 | test += api.properties(issue=500, |
| 155 | patchset=1, |
| 156 | rietveld='https://codereview.chromium.org') |
| 157 | |
| 158 | yield test |
| 159 | |
| 160 | mastername = 'client.skia.compile' |
| 161 | slavename = 'skiabot-win-compile-000' |
Mike Klein | 97e4a86 | 2016-10-15 11:09:30 -0400 | [diff] [blame] | 162 | buildername = 'Build-Win-MSVC-x86-Debug' |
borenet | 1ed2ae4 | 2016-07-26 11:52:17 -0700 | [diff] [blame] | 163 | yield ( |
| 164 | api.test('big_issue_number') + |
| 165 | api.properties(buildername=buildername, |
| 166 | mastername=mastername, |
| 167 | slavename=slavename, |
| 168 | buildnumber=5, |
| 169 | revision='abc123', |
| 170 | path_config='kitchen', |
| 171 | swarm_out_dir='[SWARM_OUT_DIR]', |
| 172 | rietveld='https://codereview.chromium.org', |
| 173 | patchset=1, |
| 174 | issue=2147533002L) + |
| 175 | api.path.exists( |
Ravi Mistry | 9bcca6a | 2016-11-21 16:06:19 -0500 | [diff] [blame] | 176 | api.path['start_dir'].join('tmp', 'uninteresting_hashes.txt') |
borenet | 1ed2ae4 | 2016-07-26 11:52:17 -0700 | [diff] [blame] | 177 | ) + |
| 178 | api.platform('win', 64) |
| 179 | ) |
rmistry | 3f1c9c0 | 2016-08-24 05:07:06 -0700 | [diff] [blame] | 180 | |
rmistry | 3f1c9c0 | 2016-08-24 05:07:06 -0700 | [diff] [blame] | 181 | yield ( |
| 182 | api.test('recipe_with_gerrit_patch') + |
| 183 | api.properties( |
| 184 | buildername=buildername + '-Trybot', |
| 185 | mastername=mastername, |
| 186 | slavename=slavename, |
| 187 | buildnumber=5, |
| 188 | path_config='kitchen', |
| 189 | swarm_out_dir='[SWARM_OUT_DIR]', |
| 190 | revision='abc123', |
borenet | 96b3842 | 2016-10-27 06:35:51 -0700 | [diff] [blame] | 191 | patch_storage='gerrit') + |
| 192 | api.properties.tryserver( |
| 193 | buildername=buildername + '-Trybot', |
| 194 | gerrit_project='skia', |
| 195 | gerrit_url='https://skia-review.googlesource.com/', |
| 196 | ) + |
rmistry | 3f1c9c0 | 2016-08-24 05:07:06 -0700 | [diff] [blame] | 197 | api.platform('win', 64) |
| 198 | ) |
borenet | 98b2e7a | 2016-10-13 06:23:45 -0700 | [diff] [blame] | 199 | |
| 200 | yield ( |
| 201 | api.test('buildbotless_trybot_rietveld') + |
| 202 | api.properties( |
| 203 | repository='skia', |
| 204 | buildername=buildername, |
| 205 | mastername=mastername, |
| 206 | slavename=slavename, |
| 207 | buildnumber=5, |
| 208 | path_config='kitchen', |
| 209 | swarm_out_dir='[SWARM_OUT_DIR]', |
| 210 | revision='abc123', |
| 211 | nobuildbot='True', |
| 212 | issue=500, |
| 213 | patchset=1, |
| 214 | patch_storage='rietveld', |
| 215 | rietveld='https://codereview.chromium.org') + |
| 216 | api.platform('win', 64) |
| 217 | ) |
| 218 | |
| 219 | yield ( |
| 220 | api.test('buildbotless_trybot_gerrit') + |
| 221 | api.properties( |
| 222 | repository='skia', |
| 223 | buildername=buildername, |
| 224 | mastername=mastername, |
| 225 | slavename=slavename, |
| 226 | buildnumber=5, |
| 227 | path_config='kitchen', |
| 228 | swarm_out_dir='[SWARM_OUT_DIR]', |
| 229 | revision='abc123', |
| 230 | nobuildbot='True', |
borenet | 96b3842 | 2016-10-27 06:35:51 -0700 | [diff] [blame] | 231 | patch_issue=500, |
| 232 | patch_set=1, |
| 233 | patch_storage='gerrit') + |
| 234 | api.properties.tryserver( |
| 235 | buildername=buildername, |
| 236 | gerrit_project='skia', |
| 237 | gerrit_url='https://skia-review.googlesource.com/', |
| 238 | ) + |
borenet | 98b2e7a | 2016-10-13 06:23:45 -0700 | [diff] [blame] | 239 | api.platform('win', 64) |
| 240 | ) |