Why Rebuild Report

The Why Rebuild report displays a prioritized list of reasons for object rebuilds in a “no-touch” build. This report is useful for quickly identifying why objects were rebuilt in incremental builds. This report lets you differentiate between eMake-only reasons (for example, reasons related to eDepend or Ledger) and make-related reasons (for example, the job target was absent or out of data). The report displays all targets that were rebuilt.

“Why rebuild” data is available only for jobs incorporated from eMake annotation (not for “jobs” created to represent unaccelerated BitBake tasks).

Jobs are categorized by reason (such as target-absent ). Each job includes the job duration (in seconds), the job ID, and the corresponding target. Following is an example of jobs that ran because the targets did not exist:

rep whyrebuild

Following is an example of a target named build_number.txt that changed, which triggered jobs to be run because of the eDepend ( --emake-autodepend=1 ) feature:

rep whyrebuildautodepprereq

In the following example, build_number.txt is a prerequisite for the classes-full-debug.jar target indented underneath it (highlighted below), which is a prerequisite for classes.jarjar.jar indented underneath classes-full-debug.jar, and so on:

rep whyrebuildautodepprereqdependencyhighlighted

Following are the possible reasons that a job could be run:

always-make
autodep-prereq
double-colon-no-prereq
dryrun-prereq
intermediate-newer
invalid-charset
ledger
not-run
phony
prereq-absent
prereq-did-work
prereq-newer
target-absent

For details about the complete list of possible reasons, see the documentation for the <why> annotation tag in the CloudBees Accelerator Annotation Guide.

This report is also available from the command line. For details, see Why Rebuild Report .