From: Yann E. MORIN <yann.morin.1998@free.fr>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH 1/3] Makefile: don't hang the build if there are no file lists
Date: Wed, 18 Mar 2020 22:49:08 +0100 [thread overview]
Message-ID: <20200318214908.GB10025@scaer> (raw)
In-Reply-To: <20200318155814.567-1-patrickdepinguin@gmail.com>
Thomas?, All,
On 2020-03-18 16:58 +0100, Thomas De Schampheleire spake thusly:
> From: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
>
> In very limited configurations, it is possible to have a case where no
> .files-list-staging.txt files are created. In this case:
>
> cat $(sort $(wildcard $(BUILD_DIR)/*/.files-list-staging.txt)) > \
> $(BUILD_DIR)/packages-file-list-staging.txt
>
> becomes:
>
> cat > \
> $(BUILD_DIR)/packages-file-list-staging.txt
>
> which of course makes the build hang.. forever.
>
> So we fix this by checking the list is not empty. To keep the code
> readable, we introduce an intermediate variable to store the list of
> these files.
>
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
> Signed-off-by: Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
> ---
> Makefile | 16 ++++++++++------
> 1 file changed, 10 insertions(+), 6 deletions(-)
>
> diff --git a/Makefile b/Makefile
> index 5455e6662e..29d30a4f70 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -728,6 +728,10 @@ $(TARGETS_ROOTFS): target-finalize
> # Avoid the rootfs name leaking down the dependency chain
> target-finalize: ROOTFS=
>
> +TARGET_DIR_FILES_LISTS = $(sort $(wildcard $(BUILD_DIR)/*/.files-list.txt))
> +HOST_DIR_FILES_LISTS = $(sort $(wildcard $(BUILD_DIR)/*/.files-list-host.txt))
> +STAGING_DIR_FILES_LISTS = $(sort $(wildcard $(BUILD_DIR)/*/.files-list-staging.txt))
> +
> .PHONY: host-finalize
> host-finalize: $(PACKAGES) $(HOST_DIR) $(HOST_DIR_SYMLINK)
> @$(call MESSAGE,"Finalizing host directory")
> @@ -808,12 +812,12 @@ endif # merged /usr
>
> touch $(TARGET_DIR)/usr
>
> - cat $(sort $(wildcard $(BUILD_DIR)/*/.files-list.txt)) > \
> - $(BUILD_DIR)/packages-file-list.txt
> - cat $(sort $(wildcard $(BUILD_DIR)/*/.files-list-host.txt)) > \
> - $(BUILD_DIR)/packages-file-list-host.txt
> - cat $(sort $(wildcard $(BUILD_DIR)/*/.files-list-staging.txt)) > \
> - $(BUILD_DIR)/packages-file-list-staging.txt
> + $(if $(TARGET_DIR_FILES_LISTS), \
> + cat $(TARGET_DIR_FILES_LISTS) > $(BUILD_DIR)/packages-file-list.txt)
> + $(if $(HOST_DIR_FILES_LISTS), \
> + cat $(HOST_DIR_FILES_LISTS) > $(BUILD_DIR)/packages-file-list-host.txt)
> + $(if $(STAGING_DIR_FILES_LISTS), \
> + cat $(STAGING_DIR_FILES_LISTS) > $(BUILD_DIR)/packages-file-list-staging.txt)
So, if there is no file instaleld in staging, the packages-file-list-staging.txt
file is not created. However, in followup patches, you make it (as well
as the other two) available to post-build scripts.
This is not nce, as the scripts will have to be carefull to test if the
files exist.
I would like to suggest an alternative, that guarantees the files are
created, even if empty:
$(if $(STAGING_DIR_FILES_LISTS), \
cat $(STAGING_DIR_FILES_LISTS)) >$(BUILD_DIR)/packages-file-list-staging.txt
Notice how the redirection is outside the conditional, so that if there
is no file, the commadn will be:
> $(BUILD_DIR)/packages-file-list-staging.txt
Which will create an empty file.
Thoughts? Shall I do that when applying the series or will you want to
respin?
Regards,
Yann E. MORIN.
>
> .PHONY: target-post-image
> target-post-image: $(TARGETS_ROOTFS) target-finalize staging-finalize
> --
> 2.24.1
>
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
next prev parent reply other threads:[~2020-03-18 21:49 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-03-18 15:58 [Buildroot] [PATCH 1/3] Makefile: don't hang the build if there are no file lists Thomas De Schampheleire
2020-03-18 15:58 ` [Buildroot] [PATCH 2/3] Makefile: fix package file list if FOO_SUBDIR is set Thomas De Schampheleire
2020-03-28 7:39 ` Peter Korsgaard
2020-03-28 8:58 ` Thomas De Schampheleire
2020-03-28 11:06 ` Peter Korsgaard
2020-03-18 15:58 ` [Buildroot] [PATCH 3/3] Makefile: assemble package file lists before calling post-build scripts Thomas De Schampheleire
2020-03-28 7:39 ` Peter Korsgaard
2020-03-18 21:49 ` Yann E. MORIN [this message]
2020-03-20 21:10 ` [Buildroot] [PATCH 1/3] Makefile: don't hang the build if there are no file lists Thomas Petazzoni
2020-03-20 21:29 ` Yann E. MORIN
2020-03-28 7:37 ` Peter Korsgaard
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200318214908.GB10025@scaer \
--to=yann.morin.1998@free.fr \
--cc=buildroot@busybox.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox