Patchwork [v2,1/5] Add a post-image script mechanism

login
register
mail settings
Submitter Thomas Petazzoni
Date Feb. 6, 2013, 9:49 p.m.
Message ID <1360187346-30258-2-git-send-email-thomas.petazzoni@free-electrons.com>
Download mbox | patch
Permalink /patch/218775/
State Superseded
Headers show

Comments

Thomas Petazzoni - Feb. 6, 2013, 9:49 p.m.
Just like we have a post-build script mechanism that gets executed
after the build of all packages but before the creation of the
filesystem images, let's introduce a post-image script mechanism, that
gets executed once all filesystem images have been generated.

This can for example be used to call a tool building a firmware image
from different images generated by Buildroot, or automatically extract
the tarball root filesystem image into some location exported by NFS,
or any other custom action.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Tested-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Acked-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Acked-by: Luca Ceresoli <luca@lucaceresoli.net>
---
 Makefile         |    9 +++++++++
 system/Config.in |   18 ++++++++++++++++++
 2 files changed, 27 insertions(+)
Samuel Martin - Feb. 7, 2013, 2:36 p.m.
Hi Thomas,

2013/2/6 Thomas Petazzoni <thomas.petazzoni@free-electrons.com>:
> Just like we have a post-build script mechanism that gets executed
> after the build of all packages but before the creation of the
> filesystem images, let's introduce a post-image script mechanism, that
> gets executed once all filesystem images have been generated.
>
> This can for example be used to call a tool building a firmware image
> from different images generated by Buildroot, or automatically extract
> the tarball root filesystem image into some location exported by NFS,
> or any other custom action.
>
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
> Tested-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
> Acked-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
> Acked-by: Luca Ceresoli <luca@lucaceresoli.net>
> ---
>  Makefile         |    9 +++++++++
>  system/Config.in |   18 ++++++++++++++++++
>  2 files changed, 27 insertions(+)
>
> diff --git a/Makefile b/Makefile
> index d9e5f24..3996d01 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -353,6 +353,8 @@ endif
>
>  include fs/common.mk
>
> +TARGETS+=target-post-image
> +
>  TARGETS_CLEAN:=$(patsubst %,%-clean,$(TARGETS))
>  TARGETS_SOURCE:=$(patsubst %,%-source,$(TARGETS) $(BASE_TARGETS))
>  TARGETS_DIRCLEAN:=$(patsubst %,%-dirclean,$(TARGETS))
> @@ -555,6 +557,13 @@ target-generatelocales: host-localedef
>         done
>  endif
>
> +target-post-image:
> +ifneq ($(BR2_ROOTFS_POST_IMAGE_SCRIPT),)
> +       @$(call MESSAGE,"Executing post-image script\(s\)")
> +       @$(foreach s, $(call qstrip,$(BR2_ROOTFS_POST_IMAGE_SCRIPT)), \
> +               $(s) $(BINARIES_DIR)$(sep))
> +endif
> +
>  toolchain-eclipse-register:
>         ./support/scripts/eclipse-register-toolchain `readlink -f $(O)` $(notdir $(TARGET_CROSS)) $(BR2_ARCH)
>
> diff --git a/system/Config.in b/system/Config.in
> index fa01d91..94ef70b 100644
> --- a/system/Config.in
> +++ b/system/Config.in
> @@ -276,4 +276,22 @@ config BR2_ROOTFS_POST_BUILD_SCRIPT
>           only argument. Make sure the exit code of those scripts are 0,
>           otherwise make will stop after calling them.
>
> +config BR2_ROOTFS_POST_IMAGE_SCRIPT
well, it's a bit weird to have singular here since it stores a list of
scripts...

anyway, it's the same for BR2_ROOTFS_POST_BUILD_SCRIPT.

> +       string "Custom script to run after creating filesystem images"
s/Custom script/Custom scripts/

> +       default ""
> +       help
> +         Specify a space-separated list of scripts to be run after
> +         the build has finished and after Buildroot has packed the
> +         files into selected filesystem images.
> +
> +         This can for example be used to call a tool building a
> +         firmware image from different images generated by Buildroot,
> +         or automatically extract the tarball root filesystem image
> +         into some location exported by NFS, or any other custom
> +         action.
> +
> +         These scripts are called with the images directory name as
> +         first and only argument. The script is executed from the
> +         main Buildroot source directory as the current directory.
> +
>  endmenu
> --

Regards,

Patch

diff --git a/Makefile b/Makefile
index d9e5f24..3996d01 100644
--- a/Makefile
+++ b/Makefile
@@ -353,6 +353,8 @@  endif
 
 include fs/common.mk
 
+TARGETS+=target-post-image
+
 TARGETS_CLEAN:=$(patsubst %,%-clean,$(TARGETS))
 TARGETS_SOURCE:=$(patsubst %,%-source,$(TARGETS) $(BASE_TARGETS))
 TARGETS_DIRCLEAN:=$(patsubst %,%-dirclean,$(TARGETS))
@@ -555,6 +557,13 @@  target-generatelocales: host-localedef
 	done
 endif
 
+target-post-image:
+ifneq ($(BR2_ROOTFS_POST_IMAGE_SCRIPT),)
+	@$(call MESSAGE,"Executing post-image script\(s\)")
+	@$(foreach s, $(call qstrip,$(BR2_ROOTFS_POST_IMAGE_SCRIPT)), \
+		$(s) $(BINARIES_DIR)$(sep))
+endif
+
 toolchain-eclipse-register:
 	./support/scripts/eclipse-register-toolchain `readlink -f $(O)` $(notdir $(TARGET_CROSS)) $(BR2_ARCH)
 
diff --git a/system/Config.in b/system/Config.in
index fa01d91..94ef70b 100644
--- a/system/Config.in
+++ b/system/Config.in
@@ -276,4 +276,22 @@  config BR2_ROOTFS_POST_BUILD_SCRIPT
 	  only argument. Make sure the exit code of those scripts are 0,
 	  otherwise make will stop after calling them.
 
+config BR2_ROOTFS_POST_IMAGE_SCRIPT
+	string "Custom script to run after creating filesystem images"
+	default ""
+	help
+	  Specify a space-separated list of scripts to be run after
+	  the build has finished and after Buildroot has packed the
+	  files into selected filesystem images.
+
+	  This can for example be used to call a tool building a
+	  firmware image from different images generated by Buildroot,
+	  or automatically extract the tarball root filesystem image
+	  into some location exported by NFS, or any other custom
+	  action.
+
+	  These scripts are called with the images directory name as
+	  first and only argument. The script is executed from the
+	  main Buildroot source directory as the current directory.
+
 endmenu