Why Rebuild report

1 minute read

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:

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:

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:

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 Build Acceleration Annotation Guide.

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