in benchmark.py [0:0]
def _get_benchmark_config_and_clone_repos(argv):
"""From the flags/config file, get the benchmark units.
Args:
argv: the command line arguments.
Returns:
An instance of BenchmarkConfig that contains the benchmark units.
"""
if FLAGS.benchmark_config:
config = BenchmarkConfig.from_file(FLAGS.benchmark_config)
project_source = config.get_project_source()
project_clone_repo = _setup_project_repo(
PROJECT_CLONE_BASE_PATH + '/' + _get_clone_subdir(project_source),
project_source)
bazel_clone_repo = _setup_project_repo(BAZEL_CLONE_PATH,
config.get_bazel_source())
return config, bazel_clone_repo, project_clone_repo
# Strip off 'benchmark.py' from argv
# argv would be something like:
# ['benchmark.py', 'build', '--nobuild', '//:all']
bazel_args = argv[1:]
# Building Bazel binaries
bazel_binaries = FLAGS.bazel_binaries or []
logger.log('Preparing bazelbuild/bazel repository.')
bazel_source = FLAGS.bazel_source if FLAGS.bazel_source else BAZEL_GITHUB_URL
bazel_clone_repo = _setup_project_repo(BAZEL_CLONE_PATH, bazel_source)
bazel_commits = _get_commits_topological(
FLAGS.bazel_commits,
bazel_clone_repo,
'bazel_commits',
fill_default=not FLAGS.bazel_commits and not bazel_binaries)
# Set up project repo
logger.log('Preparing %s clone.' % FLAGS.project_source)
project_clone_repo = _setup_project_repo(
PROJECT_CLONE_BASE_PATH + '/' + _get_clone_subdir(FLAGS.project_source),
FLAGS.project_source)
project_commits = _get_commits_topological(FLAGS.project_commits,
project_clone_repo,
'project_commits')
config = BenchmarkConfig.from_flags(bazel_commits, bazel_binaries,
project_commits, bazel_source,
FLAGS.project_source, FLAGS.runs,
FLAGS.collect_json_profile,
' '.join(bazel_args))
return config, bazel_clone_repo, project_clone_repo