diff mbox series

[1/1] Makefile: use order-only dependency so symlinks are made only once

Message ID 20200713011321.6905-1-danomimanchego123@gmail.com
State Accepted
Headers show
Series [1/1] Makefile: use order-only dependency so symlinks are made only once | expand

Commit Message

Danomi Manchego July 13, 2020, 1:13 a.m. UTC
The staging symlink is being created on every invocation of "make" as it
depends on its destination directory, which is modified when the symlink
is created.  This is prevented by changing the destination directory
dependency to be order-only.

Signed-off-by: Danomi Manchego <danomimanchego123@gmail.com>
---
 Makefile | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Yann E. MORIN July 18, 2020, 6:54 a.m. UTC | #1
Danomi, All,

On 2020-07-12 21:13 -0400, Danomi Manchego spake thusly:
> The staging symlink is being created on every invocation of "make" as it
> depends on its destination directory, which is modified when the symlink
> is created.  This is prevented by changing the destination directory
> dependency to be order-only.
> 
> Signed-off-by: Danomi Manchego <danomimanchego123@gmail.com>

I've extended and clarified the comit log, because the wording was a bit
confusing (some would interpret it as "the directory pointed at by the
symlink changes when the symlink is created").

Applied to master, thanks.

Regards,
Yann E. MORIN.

> ---
>  Makefile | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/Makefile b/Makefile
> index 04c29b1c71..a8e0ee02c5 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -457,12 +457,12 @@ endif
>  
>  ifneq ($(HOST_DIR),$(BASE_DIR)/host)
>  HOST_DIR_SYMLINK = $(BASE_DIR)/host
> -$(HOST_DIR_SYMLINK): $(BASE_DIR)
> +$(HOST_DIR_SYMLINK): | $(BASE_DIR)
>  	ln -snf $(HOST_DIR) $(HOST_DIR_SYMLINK)
>  endif
>  
>  STAGING_DIR_SYMLINK = $(BASE_DIR)/staging
> -$(STAGING_DIR_SYMLINK): $(BASE_DIR)
> +$(STAGING_DIR_SYMLINK): | $(BASE_DIR)
>  	ln -snf $(STAGING_DIR) $(STAGING_DIR_SYMLINK)
>  
>  # Quotes are needed for spaces and all in the original PATH content.
> -- 
> 2.17.1
> 
> _______________________________________________
> buildroot mailing list
> buildroot@busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
Peter Korsgaard July 22, 2020, 9:10 a.m. UTC | #2
>>>>> "Danomi" == Danomi Manchego <danomimanchego123@gmail.com> writes:

 > The staging symlink is being created on every invocation of "make" as it
 > depends on its destination directory, which is modified when the symlink
 > is created.  This is prevented by changing the destination directory
 > dependency to be order-only.

 > Signed-off-by: Danomi Manchego <danomimanchego123@gmail.com>

Committed to 2020.02.x and 2020.05.x, thanks.
diff mbox series

Patch

diff --git a/Makefile b/Makefile
index 04c29b1c71..a8e0ee02c5 100644
--- a/Makefile
+++ b/Makefile
@@ -457,12 +457,12 @@  endif
 
 ifneq ($(HOST_DIR),$(BASE_DIR)/host)
 HOST_DIR_SYMLINK = $(BASE_DIR)/host
-$(HOST_DIR_SYMLINK): $(BASE_DIR)
+$(HOST_DIR_SYMLINK): | $(BASE_DIR)
 	ln -snf $(HOST_DIR) $(HOST_DIR_SYMLINK)
 endif
 
 STAGING_DIR_SYMLINK = $(BASE_DIR)/staging
-$(STAGING_DIR_SYMLINK): $(BASE_DIR)
+$(STAGING_DIR_SYMLINK): | $(BASE_DIR)
 	ln -snf $(STAGING_DIR) $(STAGING_DIR_SYMLINK)
 
 # Quotes are needed for spaces and all in the original PATH content.