[Buildroot] [RFC, PATCH] Separate target-building make targets from image-building make targets

Arnout Vandecappelle arnout at mind.be
Mon Jul 13 23:40:17 UTC 2015


 Hi Jeremy,

 We have a buildroot hackaton at the moment and finally took the time to discuss
this proposal. It was a long discussion, mainly because it doesn't really solve
the problem (which BTW is mainly in the approach we take for
linux-with-initramfs - that's just a huge hack).

 That said, we basically agree with the approach. So if you're stilling willing
to do it, please post a full series including the change to
boot-wrapper-aarch64, taking into account the comments below. We've marked this
patch as Changes Requested in patchwork.


On 07/03/14 05:56, Jeremy Kerr wrote:
> Currently, it's not possible to have dependencies from an image-building
> target to a rootfs-building target.
> 
> For example, the boot-wrapper-aarch64 package uses the kernel build as
> an input file. It supplies a dependency on 'linux', but this will break
> if we're using BR2_TARGET_ROOTFS_INITRAMFS - the wrapper will include
> the first kernel build, not the rebuild (which contains the embedded
> initramfs).
> 
> This means we'd need to express a dependency from the target build to
> the image build. However, if we do something like:
> 
> -BOOT_WRAPPER_AARCH64_DEPENDENCIES   = linux
> +BOOT_WRAPPER_AARCH64_DEPENDENCIES   = linux26-rebuild-with-initramfs
> 
> - then we get a circular dependency, because boot-wrapper-aarch64 is in
> the TARGETS list, which linux26-rebuild-with-initramfs depends on.
> 
> This change splits the possible targets into two separate lists,
> TARGET_TARGETS (dependencies for building the target dir) and
> IMAGE_TARGETS (dependencies for building images). We keep TARGETS as a
> list of everything, and use TARGET_TARGETS for the rootfs-finalize
> target.
> 
> Signed-off-by: Jeremy Kerr <jk at ozlabs.org>
> 
> ---
>  Makefile               |    6 ++++--
>  package/pkg-generic.mk |    8 ++++++++
>  2 files changed, 12 insertions(+), 2 deletions(-)
> 
> diff --git a/Makefile b/Makefile
> index 0bf709f..708ab19 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -294,6 +294,8 @@ unexport TERMINFO
>  GNU_HOST_NAME := $(shell support/gnuconfig/config.guess)
>  
>  TARGETS :=
> +TARGET_TARGETS :=
> +IMAGE_TARGETS :=

 In the meantime, this has changed into PACKAGES.

 While you're doing this, we'd like to have three lists: PACKAGES_TARGET,
PACKAGES_IMAGE and PACKAGES_HOST.

 Also, PACKAGES could be defined as:

PACKAGES = $(PACKAGES_TARGET) $(PACKAGES_IMAGE) $(PACKAGES_HOST)

>  
>  # silent mode requested?
>  QUIET := $(if $(findstring s,$(MAKEFLAGS)),-q)
> @@ -531,7 +533,7 @@ endif
>  
>  $(TARGETS_ROOTFS): target-finalize
>  
> -target-finalize: $(TARGETS)
> +target-finalize: $(TARGET_TARGETS)

 In general target-finalize may also depend on PACKAGES_HOST (due to the
post-build scripts).

>  	@$(call MESSAGE,"Finalizing target directory")
>  	$(TARGET_PURGE_LOCALES)
>  	rm -rf $(TARGET_DIR)/usr/include $(TARGET_DIR)/usr/share/aclocal \
> @@ -624,7 +626,7 @@ target-generatelocales: host-localedef toolchain
>  	done
>  endif
>  
> -target-post-image: $(TARGETS_ROOTFS) target-finalize
> +target-post-image: $(TARGETS_ROOTFS) $(IMAGE_TARGETS) target-finalize
>  	@$(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/package/pkg-generic.mk b/package/pkg-generic.mk
> index 32a9457..ede1656 100644
> --- a/package/pkg-generic.mk
> +++ b/package/pkg-generic.mk
> @@ -681,6 +681,14 @@ endif
>  
>  TARGETS += $(1)

 This can be removed, i.e. we only assign to the specific PACKAGES variables and
the global one is implied by concatenating the three.


 Regards,
 Arnout

>  
> +ifneq ($$($(2)_INSTALL_STAGING)$$($(2)_INSTALL_TARGET),NONO)
> +TARGET_TARGETS += $(1)
> +endif
> +
> +ifeq ($$($(2)_INSTALL_IMAGES),YES)
> +IMAGE_TARGETS  += $(1)
> +endif
> +
>  ifneq ($$($(2)_PERMISSIONS),)
>  PACKAGES_PERMISSIONS_TABLE += $$($(2)_PERMISSIONS)$$(sep)
>  endif
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
> 


-- 
Arnout Vandecappelle                          arnout at mind be
Senior Embedded Software Architect            +32-16-286500
Essensium/Mind                                http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium           BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF


More information about the buildroot mailing list