xref: /aosp_15_r20/build/bazel/scripts/incremental_build/README.md (revision 7594170e27e0732bc44b93d1440d87a54b6ffe7c)
1*7594170eSAndroid Build Coastguard Worker# How to Use
2*7594170eSAndroid Build Coastguard Worker
3*7594170eSAndroid Build Coastguard WorkerThe most basic invocation, e.g. `incremental_build.sh --cujs "modify Android.bp$" -- libc`, is logically
4*7594170eSAndroid Build Coastguard Workerequivalent to
5*7594170eSAndroid Build Coastguard Worker
6*7594170eSAndroid Build Coastguard Worker1. running `m --skip-soong-tests libc` and then
7*7594170eSAndroid Build Coastguard Worker2. parsing `$OUTDIR/soong_metrics`, `$OUTDIR/bp2build_metrics.pb` etc
8*7594170eSAndroid Build Coastguard Worker3. Adding timing-related metrics from step 2 into `out/timing_logs/metrics.csv`
9*7594170eSAndroid Build Coastguard Worker4. Now it's "warmed-up", for each cuj:
10*7594170eSAndroid Build Coastguard Worker   1. apply changes associate with the cuj
11*7594170eSAndroid Build Coastguard Worker   1. repeat steps 1 through 3
12*7594170eSAndroid Build Coastguard Worker
13*7594170eSAndroid Build Coastguard WorkerCUJs are defined in `cuj_catalog.py`
14*7594170eSAndroid Build Coastguard WorkerEach row in `metrics.csv` has the timings of various "phases" of a build.
15*7594170eSAndroid Build Coastguard Worker
16*7594170eSAndroid Build Coastguard WorkerTry `incremental_build.sh --help` and `canoncial_perf.sh --help` for help on
17*7594170eSAndroid Build Coastguard Workerusage.
18*7594170eSAndroid Build Coastguard Worker
19*7594170eSAndroid Build Coastguard Worker## CUJ groups
20*7594170eSAndroid Build Coastguard Worker
21*7594170eSAndroid Build Coastguard WorkerSince most CUJs involve making changes to the source code, we group a number of cujs together such that when any of them is specified, all CUJs