summaryrefslogtreecommitdiffstats
path: root/scripts/lib/ptxd_lib_dgen.awk
diff options
context:
space:
mode:
authorMichael Olbrich <m.olbrich@pengutronix.de>2019-10-06 19:26:17 +0200
committerMichael Olbrich <m.olbrich@pengutronix.de>2019-10-06 20:02:55 +0200
commitec29df1274f596712f375745526f9de27847aa36 (patch)
tree2531a9408014b7deb16bb2e216f04a06b376f8c8 /scripts/lib/ptxd_lib_dgen.awk
parent683521e253aa231e42d9f7ef93ec1251b3dd03c9 (diff)
downloadptxdist-ec29df1274f596712f375745526f9de27847aa36.tar.gz
ptxdist-ec29df1274f596712f375745526f9de27847aa36.tar.xz
ptxd_lib_dgen: speed up hash generation
To create the hash for patch files, ptxdist executes several processes for each package with patches. With many packages with patches, this creates quite a lot of startup overhead. To avoid this, collect all patch directories first and handle them with an extra awk script and one find call. Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
Diffstat (limited to 'scripts/lib/ptxd_lib_dgen.awk')
-rw-r--r--scripts/lib/ptxd_lib_dgen.awk16
1 files changed, 9 insertions, 7 deletions
diff --git a/scripts/lib/ptxd_lib_dgen.awk b/scripts/lib/ptxd_lib_dgen.awk
index 024a3dc48..eeb34fbdb 100644
--- a/scripts/lib/ptxd_lib_dgen.awk
+++ b/scripts/lib/ptxd_lib_dgen.awk
@@ -366,18 +366,15 @@ function write_deps_pkg_active_cfghash(this_PKG, this_pkg) {
print "ifeq ($(" this_PKG "_PATCH_DIR),)" > DGEN_DEPS_POST;
print "undefine " this_PKG "_PATCH_DIR" > DGEN_DEPS_POST;
print "else" > DGEN_DEPS_POST;
- print "ifeq ($(wildcard " PTXDIST_TEMPDIR "/pkghash-" this_PKG "_EXTRACT.done),)" > DGEN_DEPS_POST;
- print "$(call ptx/force-sh, find '$(" this_PKG "_PATCH_DIR)' -type f ! -name '.*' | sort | xargs cat | tee " \
- PTXDIST_TEMPDIR "/pkghash-" this_PKG "_EXTRACT >> " PTXDIST_TEMPDIR "/pkghash-" this_PKG \
- " && touch " PTXDIST_TEMPDIR "/pkghash-" this_PKG "_EXTRACT.done )" > DGEN_DEPS_POST;
+ print "ifeq ($(PTXDIST_PKGHASH_MAKE),)" > DGEN_DEPS_POST;
+ print "$(file >>" PTXDIST_TEMPDIR "/pkghash.list,PATCHES: " this_PKG " $(" this_PKG "_PATCH_DIR))" > DGEN_DEPS_POST;
print "endif" > DGEN_DEPS_POST;
print "endif" > DGEN_DEPS_POST;
print "endif" > DGEN_DEPS_POST;
+ print "ifeq ($(PTXDIST_PKGHASH_MAKE),)" > DGEN_DEPS_POST;
print "ifneq ($(filter /%,$(" this_PKG "_CONFIG)),)" > DGEN_DEPS_POST;
print "ifneq ($(wildcard $(" this_PKG "_CONFIG)),)" > DGEN_DEPS_POST;
- print "ifeq ($(wildcard " PTXDIST_TEMPDIR "/pkghash-" this_PKG ".done),)" > DGEN_DEPS_POST;
- print "$(call ptx/force-sh, cat '$(" this_PKG "_CONFIG)' >> " PTXDIST_TEMPDIR "/pkghash-" this_PKG \
- " && touch " PTXDIST_TEMPDIR "/pkghash-" this_PKG ".done )" > DGEN_DEPS_POST;
+ print "$(file >>" PTXDIST_TEMPDIR "/pkghash.list,CONFIG: " this_PKG " $(" this_PKG "_CONFIG))" > DGEN_DEPS_POST;
print "endif" > DGEN_DEPS_POST;
print "endif" > DGEN_DEPS_POST;
print "endif" > DGEN_DEPS_POST;
@@ -550,10 +547,15 @@ function write_deps_pkg_active_image(this_PKG, this_pkg, prefix) {
}
END {
+ print "PTXDIST_PKGHASH_MAKE := $(wildcard " PTXDIST_TEMPDIR "/pkghash.make)" > DGEN_DEPS_POST;
# extend pkghash files fist
for (this_PKG in active_PKG_to_pkg)
write_deps_pkg_active_cfghash(this_PKG, this_pkg)
+ print "ifeq ($(PTXDIST_PKGHASH_MAKE),)" > DGEN_DEPS_POST;
+ print "$(call ptx/force-sh, $(PTXDIST_LIB_DIR)/ptxd_make_pkghash.awk " PTXDIST_TEMPDIR "/pkghash.list)" > DGEN_DEPS_POST;
+ print "endif" > DGEN_DEPS_POST;
+
print "$(call ptx/force-sh, md5sum " PTXDIST_TEMPDIR "/pkghash-* | " \
"sed 's;^\\([a-z0-9]*\\).*pkghash-\\(.*\\)$$;\\2_CFGHASH := \\1;' > " \
PTXDIST_TEMPDIR "/pkghash.make)" > DGEN_DEPS_POST;