path: root/Makefile
diff options
authorGravatar Yann E. MORIN <yann.morin.1998@free.fr>2017-10-28 17:30:59 +0200
committerGravatar Thomas Petazzoni <thomas.petazzoni@free-electrons.com>2017-11-27 23:02:19 +0100
commit1b8ad2d08e4ff95873e7c7e9d18860a69baa4b33 (patch)
tree6e6410ce6fc0b14b16173a9f8dfa699413d5d457 /Makefile
parent0c02bf829b363a49a648517be4a48ad91050d789 (diff)
core: check files are not touched by more than one package
Currently, we do nothing about packages that touch the same file: given a specific configuration, the result is reproducible (even though it might not be what the user expected) because the build order is guaranteed. However, when we later introduce top-level parallel build, we will no longer be able to guarantee a build order, by the mere way of it being parallel. Reconciliating all those modified files will be impossible to do automatically. The only way will be to refuse such situations. As a preliminary step, introduce a helper script that detects files that are being moified by two or more packages, and reports them and the impacted packages, at the end of the build. The list being reported at the end of the build will make it prominently visible in autobuilder results, so we can assess the problem, if any. Later on, calling that helper script can be done right after the package installation step, to bail out early. Thanks Arnout for the pythonist way to write default dictionaries! ;-) Note: doing it in python rather than a shell script is impressively faster: where the shell script takes ~1.2s on a minimalist build, the python script only takes ~0.015s, that is about 80 times faster. Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Cc: Arnout Vandecappelle <arnout@mind.be> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Cc: Peter Korsgaard <peter@korsgaard.com> Cc: Baruch Siach <baruch@tkos.co.il> Cc: Peter Seiderer <ps.report@gmx.net> [Thomas: rename script without .py extension.] Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Diffstat (limited to 'Makefile')
1 files changed, 4 insertions, 0 deletions
diff --git a/Makefile b/Makefile
index 55409b99af..ef10c90489 100644
--- a/Makefile
+++ b/Makefile
@@ -679,6 +679,10 @@ $(TARGETS_ROOTFS): target-finalize
.PHONY: target-finalize
target-finalize: $(PACKAGES)
@$(call MESSAGE,"Finalizing target directory")
+ # Check files that are touched by more than one package
+ ./support/scripts/check-uniq-files -t target $(BUILD_DIR)/packages-file-list.txt
+ ./support/scripts/check-uniq-files -t staging $(BUILD_DIR)/packages-file-list-staging.txt
+ ./support/scripts/check-uniq-files -t host $(BUILD_DIR)/packages-file-list-host.txt
$(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 \