##// END OF EJS Templates
nodemap: add a todo list for getting out of experimental...
nodemap: add a todo list for getting out of experimental This is all the requirement I can think off. More might be added as they emerge. The first ones are mostly simple technical matters that will be taken care of soon. The question about the "status" of the persistent nodemap and the revlogs that will use it requires more discussion and thinking. Differential Revision: https://phab.mercurial-scm.org/D8181
marmoute -
r45001:15a033ca default
Show More
Name Size Modified Last Commit Author
/ contrib / fuzz
FuzzedDataProvider.h Loading ...
Makefile Loading ...
README.rst Loading ...
bdiff.cc Loading ...
dirs.cc Loading ...
dirs_corpus.py Loading ...
dirstate.cc Loading ...
dirstate_corpus.py Loading ...
fm1readmarkers.cc Loading ...
fm1readmarkers_corpus.py Loading ...
fncache.cc Loading ...
fuzzutil.h Loading ...
jsonescapeu8fast.cc Loading ...
manifest.cc Loading ...
manifest_corpus.py Loading ...
mpatch.cc Loading ...
mpatch_corpus.py Loading ...
pyutil.cc Loading ...
pyutil.h Loading ...
revlog.cc Loading ...
revlog_corpus.py Loading ...
standalone_fuzz_target_runner.cc Loading ...
xdiff.cc Loading ...

How to add fuzzers (partially cribbed from oss-fuzz[0]):

  1. git clone https://github.com/google/oss-fuzz
  2. cd oss-fuzz
  3. python infra/helper.py build_image mercurial
  4. docker run --cap-add=SYS_PTRACE -it -v $HG_REPO_PATH:/hg-new
    gcr.io/oss-fuzz/mercurial bash
  5. cd /src
  6. rm -r mercurial
  7. ln -s /hg-new mercurial
  8. cd mercurial
  9. compile
  10. ls $OUT

Step 9 is literally running the command "compile", which is part of the docker container. Once you have that working, you can build the fuzzers like this (in the oss-fuzz repo):

python infra/helper.py build_fuzzers --sanitizer address mercurial $HG_REPO_PATH

(you can also say "memory", "undefined" or "coverage" for sanitizer). Then run the built fuzzers like this:

python infra/helper.py run_fuzzer mercurial -- $FUZZER

0: https://github.com/google/oss-fuzz/blob/master/docs/new_project_guide.md