From: Herve Codina <herve.codina@bootlin.com>
To: buildroot@buildroot.org
Cc: Herve Codina <herve.codina@bootlin.com>,
Naumann Andreas <ANaumann@ultratronik.de>,
Peter Seiderer <ps.report@gmx.net>,
Julien Corjon <corjon.j@ecagroup.com>,
Thomas Petazzoni <thomas.petazzoni@bootlin.com>,
"Yann E . MORIN" <yann.morin.1998@free.fr>,
Ricardo Martincoski <ricardo.martincoski@gmail.com>
Subject: [Buildroot] [PATCH v3 09/16] Makefile: rsync global {TARGET, HOST}_DIR using exclusion file list
Date: Tue, 17 Aug 2021 10:39:23 +0200 [thread overview]
Message-ID: <20210817083930.3718711-10-herve.codina@bootlin.com> (raw)
In-Reply-To: <20210817083930.3718711-1-herve.codina@bootlin.com>
On a per-package build, rsync final {TARGET,HOST}_DIR using
exclusion file list computed for each packages.
This exclusion list allows to rsync only files generated by a given
package. This is needed to avoid any overwrites in final
{TARGET,HOST}_DIR.
As we rsync only files generated by each packages, we need to
to do this rsync recursively on each dependencies to collect
all needed files. This is done based on existing
<PKG>_FINAL_RECURSIVE_DEPENDENCIES
Signed-off-by: Herve Codina <herve.codina@bootlin.com>
---
Changes v1 to v2:
- Added a note in the commit message related to why this exclusion
list is needed.
- Added $(Q) to mkdir and rsync
- Changed indentations to make calls more readable
Changes v2 to v3:
None
Makefile | 34 ++++++++++++++++++++++++++++++++--
1 file changed, 32 insertions(+), 2 deletions(-)
diff --git a/Makefile b/Makefile
index 3923e5875f..32fad004fe 100644
--- a/Makefile
+++ b/Makefile
@@ -725,10 +725,33 @@ 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))
+ifeq ($(BR2_PER_PACKAGE_DIRECTORIES),y)
+# rsync the contents of per-package directories
+# $1: space-separated list of packages to rsync from
+# $2: 'host' or 'target'
+# $3: destination directory
+# $4: exclude file list to use
+define per-package-rsync-delta
+ $(Q)mkdir -p $(3)
+ $(foreach pkg,$(1),\
+ $(Q)rsync -a --link-dest=$(PER_PACKAGE_DIR)/$(pkg)/$(strip $(2))/ \
+ --filter='merge $($(call UPPERCASE,$(pkg))_DIR)/$(strip $(4))' \
+ $(PER_PACKAGE_DIR)/$(pkg)/$(strip $(2))/ \
+ $(3)$(sep))
+endef
+endif
+
.PHONY: host-finalize
host-finalize: $(PACKAGES) $(HOST_DIR) $(HOST_DIR_SYMLINK)
@$(call MESSAGE,"Finalizing host directory")
- $(call per-package-rsync,$(sort $(PACKAGES)),host,$(HOST_DIR))
+ $(call per-package-rsync-delta, \
+ $(sort $(foreach pkg, $(PACKAGES), \
+ $(pkg) $($(call UPPERCASE,$(pkg))_FINAL_RECURSIVE_DEPENDENCIES)) \
+ ), \
+ host, \
+ $(HOST_DIR), \
+ .files-final-rsync-host.exclude_rsync \
+ )
.PHONY: staging-finalize
staging-finalize: $(STAGING_DIR_SYMLINK)
@@ -736,7 +759,14 @@ staging-finalize: $(STAGING_DIR_SYMLINK)
.PHONY: target-finalize
target-finalize: $(PACKAGES) $(TARGET_DIR) host-finalize
@$(call MESSAGE,"Finalizing target directory")
- $(call per-package-rsync,$(sort $(PACKAGES)),target,$(TARGET_DIR))
+ $(call per-package-rsync-delta, \
+ $(sort $(foreach pkg, $(PACKAGES), \
+ $(pkg) $($(call UPPERCASE,$(pkg))_FINAL_RECURSIVE_DEPENDENCIES)) \
+ ), \
+ target, \
+ $(TARGET_DIR), \
+ .files-final-rsync.exclude_rsync \
+ )
$(foreach hook,$(TARGET_FINALIZE_HOOKS),$($(hook))$(sep))
rm -rf $(TARGET_DIR)/usr/include $(TARGET_DIR)/usr/share/aclocal \
$(TARGET_DIR)/usr/lib/pkgconfig $(TARGET_DIR)/usr/share/pkgconfig \
--
2.31.1
_______________________________________________
buildroot mailing list
buildroot@busybox.net
http://lists.busybox.net/mailman/listinfo/buildroot
next prev parent reply other threads:[~2021-08-17 8:41 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-08-17 8:39 [Buildroot] [PATCH v3 00/16] Overwritten file detection and fixes, one more step to TLP build Herve Codina
2021-08-17 8:39 ` [Buildroot] [PATCH v3 01/16] package/pkg-python: fix PKG_PYTHON_FIXUP_SYSCONFIGDATA Herve Codina
2021-08-17 8:39 ` [Buildroot] [PATCH v3 02/16] package/pkg-python: invalidate precompiled _sysconfigdata*.pyc Herve Codina
2021-08-17 8:39 ` [Buildroot] [PATCH v3 03/16] package/pkg-generic.mk: move python fixup to generic package infrastructure Herve Codina
2021-08-17 8:39 ` [Buildroot] [PATCH v3 04/16] package/owfs: remove Python sysconfigdata fixup Herve Codina
2021-08-17 8:39 ` [Buildroot] [PATCH v3 05/16] qt5: Fix sporadic build failure during top-level parallel build Herve Codina
2021-08-28 16:38 ` Yann E. MORIN
2021-08-28 17:39 ` Yann E. MORIN
2021-08-28 20:19 ` Yann E. MORIN
2021-08-17 8:39 ` [Buildroot] [PATCH v3 06/16] package/pkg-qmake.mk: Move QT5_QT_CONF_FIXUP to post-prepare hook Herve Codina
2021-08-28 20:19 ` Yann E. MORIN
2021-08-17 8:39 ` [Buildroot] [PATCH v3 07/16] package/pkg-generic.mk: detect files overwritten in TARGET_DIR and HOST_DIR Herve Codina
2021-08-28 22:47 ` Yann E. MORIN
2021-08-29 11:39 ` Thomas Petazzoni
2021-08-29 12:51 ` Yann E. MORIN
2021-08-29 16:40 ` Yann E. MORIN
2021-08-30 9:46 ` Arnout Vandecappelle
2021-08-29 15:01 ` Arnout Vandecappelle
2021-08-31 15:35 ` Andreas Naumann
2021-09-17 19:43 ` Yann E. MORIN
2021-08-17 8:39 ` [Buildroot] [PATCH v3 08/16] package/pkg-generic.mk: generate final rsync exclude file list Herve Codina
2021-08-17 8:39 ` Herve Codina [this message]
2021-08-17 8:39 ` [Buildroot] [PATCH v3 10/16] Makefile: breaks hardlinks in global {TARGET, HOST}_DIR on per-package build Herve Codina
2021-09-17 19:51 ` Yann E. MORIN
2023-10-01 12:56 ` Peter Korsgaard
2023-10-13 14:36 ` Peter Korsgaard
2021-08-17 8:39 ` [Buildroot] [PATCH v3 11/16] package/pkg-generic.mk: fix per-package <pkg>-{reconfigure, rebuild, reinstall} Herve Codina
2021-08-17 8:39 ` [Buildroot] [PATCH v3 12/16] package/pkg-generic.mk: remove .files-final-rsync.before temporary file Herve Codina
2021-08-17 8:39 ` [Buildroot] [PATCH v3 13/16] support/testing/infra: add log_file_path() function Herve Codina
2021-08-29 10:42 ` Yann E. MORIN
2021-08-17 8:39 ` [Buildroot] [PATCH v3 14/16] support/testing/tests: add test for check_bin_arch Herve Codina
2021-08-29 10:46 ` Yann E. MORIN
2021-08-17 8:39 ` [Buildroot] [PATCH v3 15/16] support/testing/tests: add test for file overwrite detection Herve Codina
2021-08-17 8:39 ` [Buildroot] [PATCH v3 16/16] package/pkg-generic.mk: move fixup-libtool-files to post-prepare hook Herve Codina
2021-08-28 14:47 ` [Buildroot] [PATCH v3 00/16] Overwritten file detection and fixes, one more step to TLP build Yann E. MORIN
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=20210817083930.3718711-10-herve.codina@bootlin.com \
--to=herve.codina@bootlin.com \
--cc=ANaumann@ultratronik.de \
--cc=buildroot@buildroot.org \
--cc=corjon.j@ecagroup.com \
--cc=ps.report@gmx.net \
--cc=ricardo.martincoski@gmail.com \
--cc=thomas.petazzoni@bootlin.com \
--cc=yann.morin.1998@free.fr \
/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;
as well as URLs for NNTP newsgroup(s).