[1/1] Makefile: add $BINARIES_DIR dependency to target-post-image target
diff mbox series

Message ID 20190712160925.6027-1-bgenerous@impinj.com
State New
Headers show
Series
  • [1/1] Makefile: add $BINARIES_DIR dependency to target-post-image target
Related show

Commit Message

Brent Generous July 12, 2019, 4:10 p.m. UTC
Without this dependency, there is no guarantee that the $BINARIES_DIR
has been created before this point. This can cause commands that intend
to copy a file into $BINARIES_DIR to instead copy to a file named
$BINARIES_DIR, causing later commands to create this directory to fail.

A comment above the target for $BINARIES_DIR mentions "do NOT list these
as dependencies anywhere else". It wasn't clear from the git history why
that should be the case. This seems like the correct way to handle the
dependency on this directory.

Signed-off-by: Brent Generous <bgenerous@impinj.com>
---
 Makefile | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

Comments

Yann E. MORIN Aug. 4, 2019, 2:42 p.m. UTC | #1
Brent, All,

Thanks for your contribution.

On 2019-07-12 16:10 +0000, Brent Generous spake thusly:
> Without this dependency, there is no guarantee that the $BINARIES_DIR
> has been created before this point. This can cause commands that intend
> to copy a file into $BINARIES_DIR to instead copy to a file named
> $BINARIES_DIR, causing later commands to create this directory to fail.
> 
> A comment above the target for $BINARIES_DIR mentions "do NOT list these
> as dependencies anywhere else". It wasn't clear from the git history why
> that should be the case. This seems like the correct way to handle the
> dependency on this directory.

We've discussed this today during the developpers meeting, andwe
concluded that the real solution would be to create the directory right
before calling the post-image scripts. I've respun a v2:

    https://patchwork.ozlabs.org/patch/1141759/

Can you confirm this also fixes your issue?

Regards,
Yann E. MORIN.

> Signed-off-by: Brent Generous <bgenerous@impinj.com>
> ---
>  Makefile | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)
> 
> diff --git a/Makefile b/Makefile
> index c98a0ed87e..2ea7220484 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -606,7 +606,6 @@ BR2_SDK_PREFIX ?= $(GNU_TARGET_NAME)_sdk-buildroot
>  sdk: prepare-sdk $(BR2_TAR_HOST_DEPENDENCY)
>  	@$(call MESSAGE,"Generating SDK tarball")
>  	$(if $(BR2_SDK_PREFIX),,$(error BR2_SDK_PREFIX can not be empty))
> -	$(Q)mkdir -p $(BINARIES_DIR)
>  	$(TAR) czf "$(BINARIES_DIR)/$(BR2_SDK_PREFIX).tar.gz" \
>  		--owner=0 --group=0 --numeric-owner \
>  		--transform='s#^$(patsubst /%,%,$(HOST_DIR))#$(BR2_SDK_PREFIX)#' \
> @@ -810,7 +809,7 @@ endif # merged /usr
>  	touch $(TARGET_DIR)/usr
>  
>  .PHONY: target-post-image
> -target-post-image: $(TARGETS_ROOTFS) target-finalize staging-finalize
> +target-post-image: $(TARGETS_ROOTFS) target-finalize staging-finalize | $(BINARIES_DIR)
>  	@rm -f $(ROOTFS_COMMON_TAR)
>  	@$(foreach s, $(call qstrip,$(BR2_ROOTFS_POST_IMAGE_SCRIPT)), \
>  		$(call MESSAGE,"Executing post-image script $(s)"); \
> -- 
> 2.17.2
> 
> _______________________________________________
> buildroot mailing list
> buildroot@busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
Brent Generous Aug. 5, 2019, 6:07 p.m. UTC | #2
Hi Yann,

On Sun, 2019-08-04 at 16:42 +0200, Yann E. MORIN wrote:
> Brent, All,
> 
> Thanks for your contribution.
> 
> On 2019-07-12 16:10 +0000, Brent Generous spake thusly:
> > Without this dependency, there is no guarantee that the
> $BINARIES_DIR
> > has been created before this point. This can cause commands that
> intend
> > to copy a file into $BINARIES_DIR to instead copy to a file named
> > $BINARIES_DIR, causing later commands to create this directory to
> fail.
> > 
> > A comment above the target for $BINARIES_DIR mentions "do NOT list
> these
> > as dependencies anywhere else". It wasn't clear from the git
> history why
> > that should be the case. This seems like the correct way to handle
> the
> > dependency on this directory.
> 
> We've discussed this today during the developpers meeting, andwe
> concluded that the real solution would be to create the directory
> right
> before calling the post-image scripts. I've respun a v2:
> 
> https://patchwork.ozlabs.org/patch/1141759/
> 
> Can you confirm this also fixes your issue?

This looks like a mix of two patches that do the same thing. The patch
in d57e7307 that was applied to master however does fix my original
issue.

I'm curious though -- d57e7307 does not have the order-only
prerequisite, and instead uses `mkdir -p` in the recipe. Do you know
why this is preferred over the order-only prerequisite?

Thanks,
Brent

Patch
diff mbox series

diff --git a/Makefile b/Makefile
index c98a0ed87e..2ea7220484 100644
--- a/Makefile
+++ b/Makefile
@@ -606,7 +606,6 @@  BR2_SDK_PREFIX ?= $(GNU_TARGET_NAME)_sdk-buildroot
 sdk: prepare-sdk $(BR2_TAR_HOST_DEPENDENCY)
 	@$(call MESSAGE,"Generating SDK tarball")
 	$(if $(BR2_SDK_PREFIX),,$(error BR2_SDK_PREFIX can not be empty))
-	$(Q)mkdir -p $(BINARIES_DIR)
 	$(TAR) czf "$(BINARIES_DIR)/$(BR2_SDK_PREFIX).tar.gz" \
 		--owner=0 --group=0 --numeric-owner \
 		--transform='s#^$(patsubst /%,%,$(HOST_DIR))#$(BR2_SDK_PREFIX)#' \
@@ -810,7 +809,7 @@  endif # merged /usr
 	touch $(TARGET_DIR)/usr
 
 .PHONY: target-post-image
-target-post-image: $(TARGETS_ROOTFS) target-finalize staging-finalize
+target-post-image: $(TARGETS_ROOTFS) target-finalize staging-finalize | $(BINARIES_DIR)
 	@rm -f $(ROOTFS_COMMON_TAR)
 	@$(foreach s, $(call qstrip,$(BR2_ROOTFS_POST_IMAGE_SCRIPT)), \
 		$(call MESSAGE,"Executing post-image script $(s)"); \