0
Files
src/tools/code_coverage/build_all_fuzzers.py
Julia Hansbrough afb23b8b70 [coverage] Update utility scripts to use python3.
This should be the new default.

Change-Id: Ib380a0f27497804d3d45aab95219538e8007756b
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4549631
Reviewed-by: Jeff Yoon <jeffyoon@google.com>
Reviewed-by: Prakhar Asthana <pasthana@google.com>
Commit-Queue: Julia Hansbrough <flowerhack@google.com>
Cr-Commit-Position: refs/heads/main@{#1161811}
2023-06-23 17:09:36 +00:00

59 lines
1.7 KiB
Python
Executable File

#!/usr/bin/env python3
# Copyright 2023 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Build all Chromium libfuzzer targets that have corresponding corpora.
* Example usage: build_all_fuzzers.py --output-dir OUTPUT_DIR
"""
import argparse
import coverage_consts
import logging
import subprocess
def _ParseCommandArguments():
"""Adds and parses relevant arguments for tool comands.
Returns:
A dictionary representing the arguments.
"""
arg_parser = argparse.ArgumentParser()
arg_parser.usage = __doc__
arg_parser.add_argument(
'--output-dir',
type=str,
help=('Directory where fuzzers are to be built. GN args are assumed to '
'have already been set.'))
args = arg_parser.parse_args()
return args
args = _ParseCommandArguments()
def try_build(total_fuzzer_target):
subprocess_cmd = ['autoninja', '-C', args.output_dir]
subprocess_cmd.extend(total_fuzzer_target)
logging.info("Build command: %s" % subprocess_cmd)
try:
subprocess.check_call(subprocess_cmd)
except:
logging.error("An error occured while building the fuzzers.")
exit
logging.info("Building all fuzzers")
total_fuzzer_target = []
for count, fuzzer_target in enumerate(coverage_consts.FUZZERS_WITH_CORPORA, 1):
total_fuzzer_target.append(fuzzer_target)
if count % 200 == 0:
# Autoninja throws a "path has too many components" error if you try to
# to build too many targets at once, so clear the buffer every 350 targets.
try_build(total_fuzzer_target)
total_fuzzer_target = []
if total_fuzzer_target:
try_build(total_fuzzer_target)
logging.info("Built all fuzzers")