aboutsummaryrefslogtreecommitdiff
path: root/bisect/README.txt
blob: 83abfb1948954ca1b2b4b3c071c12d409a41cd3e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
LLVM Bisect Scripts
===================

These scripts help you bisect LLVM/Clang for problems on build, check
and test-suite (on a specific test, not all of it). The only script
you should use is 'bisect.pl', as that will call all others in the
correct way for a given command line options.

You can rely on the power of run.sh to build and test (either check-all
or the test-suite), but you can also write your own test.sh script and
pass it to bisect.pl.

Usage:
 $ ./bisect.sh [options] good_rev bad_rev

Options:
  -c checkout_script (default: ./checkout.sh)
  -b build_script    (default: ./run.sh)
  -t test_script     (default: empty)

Notes:

* If the test script is empty, the success status will come from the build
  script. So, if you're bisecting a build issue, or your build script is
  also testing (ex: ./run.sh -c), leaving the test script empty will work
  as expected.

* There is no support for Libc++, LLd etc. But it shouldn't be
  too hard to add it to the list of checkout paths and symlinks on run.sh.

* It assumes your test-suite checkout is correct and on the same directory,
  please see the test-suite scripts to help you set it up. If you have your
  own setup, please write an according test script.

* The script creates a log for each checkout ($rev.log), so that you can tail
  it while building. It will also move the log to .good and .bad once it
  finishes, given run.sh or your test script's return status.

* I *strongly* advise you to use ccache, since we *must* clean up the build
  directory before *every* build to avoid carrying on problems (one of the
  reasons I moved back from a proper bisect).