Commit 2522fa8e authored by Yann E. MORIN's avatar Yann E. MORIN Committed by Peter Korsgaard
Browse files

pkg-infra: add user-supplied step-hooks



Allow user to supply their own step-hooks by passing a variable
on the make command-line:
    make BR2_INSTRUMENTATION_SCRIPTS=/path/to/my/script

This can be useful to run site-specific actions at each step of the
build process, such as logging installed, removed or modified files,
do sanity checks on installed files...

It is possible to call more than one script, by passing a space-separated
lists of scripts to call.

Signed-off-by: default avatar"Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Thomas De Schampheleire <patrickdepinguin@gmail.com>
Reviewed-by: default avatarThomas De Schampheleire <thomas.de.schampheleire@gmail.com>
Reviewed-by: default avatarSamuel Martin <s.martin49@gmail.com>
Signed-off-by: default avatarPeter Korsgaard <peter@korsgaard.com>
parent 17d4eb1e
Loading
Loading
Loading
Loading
+33 −0
Original line number Diff line number Diff line
// -*- 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
+2 −0
Original line number Diff line number Diff line
@@ -11,3 +11,5 @@ include::adding-packages.txt[]
include::patch-policy.txt[]

include::download-infra.txt[]

include::debugging-buildroot.txt[]
+9 −0
Original line number Diff line number Diff line
@@ -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
################################################################################