mirror of https://github.com/google/oss-fuzz.git
[infra] Make mount location configurable in build_fuzzers (#5744)
Exposing the mount location for local sources to a command-line argument makes it possible to reproduce findings with local source even for umbrella projects with WORKDIR $SRC/.
This commit is contained in:
parent
7004ced0d3
commit
cbc4293c37
|
@ -230,7 +230,7 @@ def build_fuzzers_from_commit(commit,
|
||||||
architecture=build_data.architecture,
|
architecture=build_data.architecture,
|
||||||
env_to_add=None,
|
env_to_add=None,
|
||||||
source_path=host_src_path,
|
source_path=host_src_path,
|
||||||
mount_location='/src')
|
mount_path='/src')
|
||||||
if result or i == num_retry:
|
if result or i == num_retry:
|
||||||
break
|
break
|
||||||
|
|
||||||
|
|
|
@ -153,6 +153,10 @@ def get_parser(): # pylint: disable=too-many-statements
|
||||||
build_fuzzers_parser.add_argument('source_path',
|
build_fuzzers_parser.add_argument('source_path',
|
||||||
help='path of local source',
|
help='path of local source',
|
||||||
nargs='?')
|
nargs='?')
|
||||||
|
build_fuzzers_parser.add_argument('--mount_path',
|
||||||
|
dest='mount_path',
|
||||||
|
help='path to mount local source in '
|
||||||
|
'(defaults to WORKDIR)')
|
||||||
build_fuzzers_parser.add_argument('--clean',
|
build_fuzzers_parser.add_argument('--clean',
|
||||||
dest='clean',
|
dest='clean',
|
||||||
action='store_true',
|
action='store_true',
|
||||||
|
@ -519,7 +523,7 @@ def build_fuzzers_impl( # pylint: disable=too-many-arguments,too-many-locals,to
|
||||||
env_to_add,
|
env_to_add,
|
||||||
source_path,
|
source_path,
|
||||||
no_cache=False,
|
no_cache=False,
|
||||||
mount_location=None):
|
mount_path=None):
|
||||||
"""Builds fuzzers."""
|
"""Builds fuzzers."""
|
||||||
if not build_image_impl(project_name, no_cache=no_cache):
|
if not build_image_impl(project_name, no_cache=no_cache):
|
||||||
return False
|
return False
|
||||||
|
@ -574,10 +578,10 @@ def build_fuzzers_impl( # pylint: disable=too-many-arguments,too-many-locals,to
|
||||||
command = ['--cap-add', 'SYS_PTRACE'] + _env_to_docker_args(env)
|
command = ['--cap-add', 'SYS_PTRACE'] + _env_to_docker_args(env)
|
||||||
if source_path:
|
if source_path:
|
||||||
workdir = _workdir_from_dockerfile(project_name)
|
workdir = _workdir_from_dockerfile(project_name)
|
||||||
if mount_location:
|
if mount_path:
|
||||||
command += [
|
command += [
|
||||||
'-v',
|
'-v',
|
||||||
'%s:%s' % (_get_absolute_path(source_path), mount_location),
|
'%s:%s' % (_get_absolute_path(source_path), mount_path),
|
||||||
]
|
]
|
||||||
else:
|
else:
|
||||||
if workdir == '/src':
|
if workdir == '/src':
|
||||||
|
@ -618,9 +622,14 @@ def build_fuzzers_impl( # pylint: disable=too-many-arguments,too-many-locals,to
|
||||||
|
|
||||||
def build_fuzzers(args):
|
def build_fuzzers(args):
|
||||||
"""Builds fuzzers."""
|
"""Builds fuzzers."""
|
||||||
return build_fuzzers_impl(args.project_name, args.clean, args.engine,
|
return build_fuzzers_impl(args.project_name,
|
||||||
args.sanitizer, args.architecture, args.e,
|
args.clean,
|
||||||
args.source_path)
|
args.engine,
|
||||||
|
args.sanitizer,
|
||||||
|
args.architecture,
|
||||||
|
args.e,
|
||||||
|
args.source_path,
|
||||||
|
mount_path=args.mount_path)
|
||||||
|
|
||||||
|
|
||||||
def _add_oss_fuzz_ci_if_needed(env):
|
def _add_oss_fuzz_ci_if_needed(env):
|
||||||
|
|
Loading…
Reference in New Issue