summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--docs/manual/debugging-buildroot.txt33
-rw-r--r--docs/manual/developer-guide.txt2
-rw-r--r--package/pkg-generic.mk9
3 files changed, 44 insertions, 0 deletions
diff --git a/docs/manual/debugging-buildroot.txt b/docs/manual/debugging-buildroot.txt
new file mode 100644
index 0000000000..5fa05b0ee5
--- /dev/null
+++ b/docs/manual/debugging-buildroot.txt
@@ -0,0 +1,33 @@
+// -*- 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"
+----
+
+That script has access to the following variables:
+
+ - +BUILDROOT_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
diff --git a/docs/manual/developer-guide.txt b/docs/manual/developer-guide.txt
index 8125ad5ca3..9054deef80 100644
--- a/docs/manual/developer-guide.txt
+++ b/docs/manual/developer-guide.txt
@@ -11,3 +11,5 @@ include::adding-packages.txt[]
include::patch-policy.txt[]
include::download-infra.txt[]
+
+include::debugging-buildroot.txt[]
diff --git a/package/pkg-generic.mk b/package/pkg-generic.mk
index 619974e167..fc6e8c64d1 100644
--- a/package/pkg-generic.mk
+++ b/package/pkg-generic.mk
@@ -55,6 +55,15 @@ define step_time
endef
GLOBAL_INSTRUMENTATION_HOOKS += step_time
+# User-supplied script
+define step_user
+ @$(foreach user_hook, $(BR2_INSTRUMENTATION_SCRIPTS), \
+ $(USER_HOOKS_EXTRA_ENV) $(user_hook) "$(1)" "$(2)" "$(3)"$(sep))
+endef
+ifneq ($(BR2_INSTRUMENTATION_SCRIPTS),)
+GLOBAL_INSTRUMENTATION_HOOKS += step_user
+endif
+
################################################################################
# Implicit targets -- produce a stamp file for each step of a package build
################################################################################
OpenPOWER on IntegriCloud