[Buildroot] [RFC 1/2] Makefile: add target-genimage

Danomi Manchego danomimanchego123 at gmail.com
Sat Feb 14 17:24:16 UTC 2015


Vivean,

A couple nitpicks ...

On Thu, Feb 12, 2015 at 5:33 PM, Vivien Didelot
<vivien.didelot at savoirfairelinux.com> wrote:
> genimage is a convenient host tool which eases the generation of images
> and partition layout by providing simple configuration files.
>
> This patch adds a new BR2_ROOTFS_GENIMAGE_CFG menuconfig entry, which is
> a space-separated list of config files. Indeed, you may want to split
> images in different files, or put them all together in the same file.
>
> BR2_ROOTFS_GENIMAGE_HOST_DEPENDENCIES is meant to auto-select the
> packages that genimage may use, such as mkdosfs or mcopy (which copies
> files from/to unmounted vfat images).
>
> The rational behind adding this to Buildroot is that genimage requires

spelling: "rationale".

> an overhead configuration to use it, like temporary directories, host
> dependencies, and images path, that Buildroot is all aware of. This
> minimal addition is optional and allows the user not to write the same
> post-image script to wrap the genimage call.
>
> Finally, the new "target-genimage" make target is called before
> target-post-image so that the post-image script can still clean
> intermediate generated images and do whatever with the very final image.
>
> Signed-off-by: Vivien Didelot <vivien.didelot at savoirfairelinux.com>
> ---
>  Makefile         | 17 +++++++++++++++--
>  system/Config.in | 22 ++++++++++++++++++++++
>  2 files changed, 37 insertions(+), 2 deletions(-)
>
> diff --git a/Makefile b/Makefile
> index 338c992..1eb1619 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -434,7 +434,7 @@ world: target-post-image
>
>  .PHONY: all world toolchain dirs clean distclean source outputmakefile \
>         legal-info legal-info-prepare legal-info-clean printvars \
> -       target-finalize target-post-image \
> +       target-finalize target-genimage target-post-image \
>         $(TARGETS) $(TARGETS_ROOTFS) \
>         $(TARGETS_DIRCLEAN) $(TARGETS_SOURCE) $(TARGETS_LEGAL_INFO) \
>         $(BUILD_DIR) $(STAGING_DIR) $(TARGET_DIR) \
> @@ -621,7 +621,20 @@ endif
>                 $(call MESSAGE,"Executing post-build script $(s)"); \
>                 $(EXTRA_ENV) $(s) $(TARGET_DIR) $(call qstrip,$(BR2_ROOTFS_POST_SCRIPT_ARGS))$(sep))
>
> -target-post-image: $(TARGETS_ROOTFS) target-finalize
> +target-genimage: $(TARGETS_ROOTFS) target-finalize
> +       @$(foreach cfg, $(call qstrip,$(BR2_ROOTFS_GENIMAGE_CFG)), \
> +       $(call MESSAGE,"Executing genimage with config $(cfg)"); \
> +         T=$$(mktemp -d $(BUILD_DIR)/.genimage.XXXXXXXXXX); \
> +         mkdir -p $$T/{root,tmp}; \
> +         $(EXTRA_ENV) output/host/usr/bin/genimage \
> +         --rootpath $$T/root \
> +         --tmppath $$T/tmp \
> +         --inputpath output/images/ \
> +         --outputpath output/images/ \
> +         --config $(cfg); \
> +         rm -rf $$T$(sep))

I don't think the final $(sep) is needed, since this the last line of
a makefile target, as opposed to, say. a template.

Danomi -


> +
> +target-post-image: target-genimage
>         @$(foreach s, $(call qstrip,$(BR2_ROOTFS_POST_IMAGE_SCRIPT)), \
>                 $(call MESSAGE,"Executing post-image script $(s)"); \
>                 $(EXTRA_ENV) $(s) $(BINARIES_DIR) $(call qstrip,$(BR2_ROOTFS_POST_SCRIPT_ARGS))$(sep))
> diff --git a/system/Config.in b/system/Config.in
> index 95e10ab..2596da8 100644
> --- a/system/Config.in
> +++ b/system/Config.in
> @@ -421,6 +421,28 @@ config BR2_ROOTFS_POST_BUILD_SCRIPT
>           argument. Make sure the exit code of those scripts are 0, otherwise
>           make will stop after calling them.
>
> +config BR2_ROOTFS_GENIMAGE_CFG
> +       string "genimage config files to prepare custom images"
> +       default ""
> +       help
> +         Specify a space-separated list of configuration files for genimage 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 generate a card image with an vfat
> +         partition containing some boot files, and an ext4 rootfs.
> +
> +         genimage is executed from the main Buildroot source directory, with input
> +         and output paths configured to output/images.
> +
> +config BR2_ROOTFS_GENIMAGE_HOST_DEPENDENCIES
> +       bool "genimage host dependencies"
> +       default y
> +       depends on BR2_ROOTFS_GENIMAGE_CFG != ""
> +       select BR2_PACKAGE_HOST_GENIMAGE
> +       select BR2_PACKAGE_HOST_DOSFSTOOLS
> +       select BR2_PACKAGE_HOST_MTOOLS
> +
>  config BR2_ROOTFS_POST_IMAGE_SCRIPT
>         string "Custom scripts to run after creating filesystem images"
>         default ""
> --
> 2.3.0
>
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot


More information about the buildroot mailing list