| OLD | NEW |
| (Empty) |
| 1 # Copyright 2015 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 from recipe_engine.types import freeze | |
| 6 | |
| 7 | |
| 8 DEPS = [ | |
| 9 'archive', | |
| 10 'depot_tools/bot_update', | |
| 11 'chromium', | |
| 12 'file', | |
| 13 'recipe_engine/json', | |
| 14 'recipe_engine/path', | |
| 15 'recipe_engine/platform', | |
| 16 'recipe_engine/properties', | |
| 17 'recipe_engine/python', | |
| 18 'recipe_engine/raw_io', | |
| 19 'recipe_engine/step', | |
| 20 ] | |
| 21 | |
| 22 | |
| 23 BUILDERS = freeze({ | |
| 24 'chromium.fyi': { | |
| 25 'builders': { | |
| 26 'Win LKGR (DrM)': { | |
| 27 'chromium_config_kwargs': { | |
| 28 'BUILD_CONFIG': 'Release', | |
| 29 'TARGET_BITS': 32, | |
| 30 }, | |
| 31 'upload_bucket': 'chromium-browser-drfuzz', | |
| 32 'upload_directory': 'chromium_win32', | |
| 33 'bot_type': 'builder', | |
| 34 }, | |
| 35 'Win LKGR (DrM 64)': { | |
| 36 'chromium_config_kwargs': { | |
| 37 'BUILD_CONFIG': 'Release', | |
| 38 'TARGET_BITS': 64, | |
| 39 }, | |
| 40 'upload_bucket': 'chromium-browser-drfuzz', | |
| 41 'upload_directory': 'chromium_win64', | |
| 42 'bot_type': 'builder', | |
| 43 }, | |
| 44 }, | |
| 45 }, | |
| 46 }) | |
| 47 | |
| 48 | |
| 49 def gn_refs(api, step_name, args): | |
| 50 """Runs gn refs with given additional arguments. | |
| 51 Returns: the list of matched targets. | |
| 52 """ | |
| 53 step_result = api.python(step_name, | |
| 54 api.path['depot_tools'].join('gn.py'), | |
| 55 ['--root=%s' % str(api.path['checkout']), | |
| 56 'refs', | |
| 57 str(api.chromium.output_dir), | |
| 58 ] + args, | |
| 59 stdout=api.raw_io.output()) | |
| 60 return step_result.stdout.split() | |
| 61 | |
| 62 | |
| 63 def RunSteps(api): | |
| 64 mastername = api.m.properties['mastername'] | |
| 65 buildername, bot_config = api.chromium.configure_bot(BUILDERS, ['mb']) | |
| 66 | |
| 67 checkout_results = api.bot_update.ensure_checkout( | |
| 68 force=True, patch_root=bot_config.get('root_override')) | |
| 69 | |
| 70 api.chromium.runhooks() | |
| 71 | |
| 72 api.chromium.run_mb(mastername, buildername, use_goma=False) | |
| 73 | |
| 74 all_fuzzers = gn_refs( | |
| 75 api, | |
| 76 'calculate all_fuzzers', | |
| 77 ['--all', | |
| 78 '--type=executable', | |
| 79 '--as=output', | |
| 80 '//testing/libfuzzer:libfuzzer_main']) | |
| 81 no_clusterfuzz = gn_refs( | |
| 82 api, | |
| 83 'calculate no_clusterfuzz', | |
| 84 ['--all', | |
| 85 '--type=executable', | |
| 86 '--as=output', | |
| 87 '//testing/libfuzzer:no_clusterfuzz']) | |
| 88 targets = list(set(all_fuzzers).difference(set(no_clusterfuzz))) | |
| 89 api.step.active_result.presentation.logs['all_fuzzers'] = all_fuzzers | |
| 90 api.step.active_result.presentation.logs['no_clusterfuzz'] = no_clusterfuzz | |
| 91 api.step.active_result.presentation.logs['targets'] = targets | |
| 92 api.chromium.compile(targets=targets) | |
| 93 | |
| 94 api.archive.clusterfuzz_archive( | |
| 95 build_dir=api.path['slave_build'].join('src', 'out', 'Release'), | |
| 96 update_properties=checkout_results.json.output['properties'], | |
| 97 gs_bucket=bot_config['upload_bucket'], | |
| 98 archive_prefix='drfuzz', | |
| 99 archive_subdir_suffix=bot_config['upload_directory'], | |
| 100 gs_acl='public-read') | |
| 101 | |
| 102 def GenTests(api): | |
| 103 for test in api.chromium.gen_tests_for_builders(BUILDERS): | |
| 104 yield (test + | |
| 105 api.step_data('calculate all_fuzzers', | |
| 106 stdout=api.raw_io.output('target1 target2 target3')) + | |
| 107 api.step_data('calculate no_clusterfuzz', | |
| 108 stdout=api.raw_io.output('target1')) | |
| 109 ) | |
| 110 | |
| OLD | NEW |