// -*- mode:doc; -*-
// vim: set syntax=asciidoc:

[[debugging-buildroot]]

== Debugging Buildroot

It is possible to instrument the steps +Buildroot+ does when building
packages. Define the variable +BR2_INSTRUMENTATION_SCRIPTS+ to contain
the path of one or more scripts (or other executables), in a
space-separated list, you want called before and after each step. The
scripts are called in sequence, with three parameters:

  - +start+ or +end+ to denote the start (resp. the end) of a step;
  - the name of the step about to be started, or which just ended;
  - the name of the package.

For example :

----
make BR2_INSTRUMENTATION_SCRIPTS="/path/to/my/script1 /path/to/my/script2"
----

The list of steps is:

  - +extract+
  - +patch+
  - +configure+
  - +build+
  - +install-host+, when a host-package is installed in +$(HOST_DIR)+
  - +install-target+, when a target-package is installed in +$(TARGET_DIR)+
  - +install-staging+, when a target-package is installed in +$(STAGING_DIR)+
  - +install-image+, when a target-package installs files in +$(BINARIES_DIR)+

The script has access to the following variables:

  - +BR2_CONFIG+: the path to the Buildroot .config file
  - +HOST_DIR+, +STAGING_DIR+, +TARGET_DIR+: see
    xref:generic-package-reference[]
  - +BUILD_DIR+: the directory where packages are extracted and built
  - +BINARIES_DIR+: the place where all binary files (aka images) are
    stored
  - +BASE_DIR+: the base output directory
  - +PARALLEL_JOBS+: the number of jobs to use when running parallel processes.
