Message ID | 1be7266b22b1c6104d2050be1b1f5e75cbf0e362.1384127173.git.yann.morin.1998@free.fr |
---|---|
State | Changes Requested |
Headers | show |
Hi Yann, On Mon, Nov 11, 2013 at 12:51 AM, Yann E. MORIN <yann.morin.1998@free.fr> wrote: > From: "Yann E. MORIN" <yann.morin.1998@free.fr> > > Allow user to supply their own step-hooks by passing a variable > on the make command-line: > make BR2_STEP_USER_HOOK=/path/to/my/script > > This can be usefull to run site-specific actions at each step of the useful > 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: "Yann E. MORIN" <yann.morin.1998@free.fr> > --- > docs/manual/debugging-buildroot.txt | 33 +++++++++++++++++++++++++++++++++ > docs/manual/developer-guide.txt | 2 ++ > package/pkg-generic.mk | 9 +++++++++ > 3 files changed, 44 insertions(+) > create mode 100644 docs/manual/debugging-buildroot.txt > > diff --git a/docs/manual/debugging-buildroot.txt b/docs/manual/debugging-buildroot.txt > new file mode 100644 > index 0000000..7e66208 > --- /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_STEPS_USER_HOOKS+ 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 script is called 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_STEPS_USER_HOOKS="/path/to/my/script1 /path/to/my/script2" > +---- I think this variable should be named more in accordance with the name GLOBAL_INSTRUMENTATION_HOOKS. For example: BR2_USER_INSTRUMENTATION_HOOKS or plainly: BR2_INSTRUMENTATION_HOOKS (or something else) Best regards, Thomas
diff --git a/docs/manual/debugging-buildroot.txt b/docs/manual/debugging-buildroot.txt new file mode 100644 index 0000000..7e66208 --- /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_STEPS_USER_HOOKS+ 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 script is called 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_STEPS_USER_HOOKS="/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 8125ad5..9054dee 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 5dba216..a8dd7da 100644 --- a/package/pkg-generic.mk +++ b/package/pkg-generic.mk @@ -54,6 +54,15 @@ define step_time endef GLOBAL_INSTRUMENTATION_HOOKS += step_time +# User-supplied script +define step_user + @$(foreach user_hook, $(BR2_STEPS_USER_HOOKS), \ + $(USER_HOOKS_EXTRA_ENV) $(user_hook) "$(1)" "$(2)" "$(3)"$(sep)) +endef +ifneq ($(BR2_STEPS_USER_HOOKS),) +GLOBAL_INSTRUMENTATION_HOOKS += step_user +endif + ################################################################################ # Implicit targets -- produce a stamp file for each step of a package build ################################################################################