From 1ff542795469713241354ac9c8e6267bc45f9101 Mon Sep 17 00:00:00 2001 From: Nikolai Merinov Date: Tue, 11 Feb 2025 14:03:35 +0200 Subject: [PATCH] BuildSystem: Add /Makefile.append files in all active feeds as dependency for /Makefile Problem: With the new Overlay Feeds feature Makefile.append files would be appended to /Makefile code, as result OpenWRT build system should interpret this files as /Makefile dependency in same manner as includes defined with SCAN_DEPS variable. Cause: Overlay Feeds is a new feature and requires support for new files. Solution: Scan all enabled feeds for Makefile.append files and add "$(TOPDIR)/feeds//path/to//Makefie.append" as dependency for "tmp/info/.packageinfo-" files. References: PCF-1616 Signed-off-by: Nikolai Merinov --- include/scan.awk | 20 +++++++++++++++----- include/scan.mk | 7 ++++--- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/include/scan.awk b/include/scan.awk index 0f02782326..f7d8741875 100644 --- a/include/scan.awk +++ b/include/scan.awk @@ -1,4 +1,10 @@ -BEGIN { FS="/" } +BEGIN { + FS="/" + while ("for feed in $(./scripts/feeds list -n); do find -L feeds/${feed} -name Makefile.append | sort; done" | getline APPEND) { + nf=split(APPEND, parts) + APPENDS[parts[nf-1]]="$(TOPDIR)/" APPEND "\n" APPENDS[parts[nf-1]] + } +} $1 ~ /^feeds/ { FEEDS[$NF]=$0 } $1 !~ /^feeds/ { PKGS[$NF]=$0 } END { @@ -8,12 +14,16 @@ END { print PKGS[pkg] > of delete PKGS[pkg] } - n = asort(PKGS) + n = asorti(PKGS, PKGKEYS) for (i=1; i <= n; i++) { - print PKGS[i] + print PKGS[PKGKEYS[i]] + if (PKGKEYS[i] in APPENDS) + printf "%s", APPENDS[PKGKEYS[i]] } - n = asort(FEEDS) + n = asorti(FEEDS, FEEDKEYS) for (i=1; i <= n; i++){ - print FEEDS[i] + print FEEDS[FEEDKEYS[i]] + if (FEEDKEYS[i] in APPENDS) + printf "%s", APPENDS[FEEDKEYS[i]] } } diff --git a/include/scan.mk b/include/scan.mk index 2e0ee0c960..b92c48b088 100644 --- a/include/scan.mk +++ b/include/scan.mk @@ -78,14 +78,15 @@ $(FILELIST): $(OVERRIDELIST) $(TMP_DIR)/info/.files-$(SCAN_TARGET).mk: $(FILELIST) ( \ - cat $< | awk '{print "$(SCAN_DIR)/" $$0 "/Makefile" }' | xargs grep -HE '^ *SCAN_DEPS *= *' | awk -F: '{ gsub(/^.*DEPS *= */, "", $$2); print "DEPS_" $$1 "=" $$2 }'; \ + cat $< | grep -v '^[$$]' | awk '{print "$(SCAN_DIR)/" $$0 "/Makefile" }' | xargs grep -HE '^ *SCAN_DEPS *= *' | awk -F: '{ gsub(/^.*DEPS *= */, "", $$2); print "DEPS_" $$1 "=" $$2 }'; \ + cat $< | grep '^[$$]' -B1 | awk '/^[^$$]/ {MAKEFILE="$(SCAN_DIR)/" $$0 "/Makefile"} /^[$$]/ {print "DEPS_" MAKEFILE "+=" $$0}'; \ awk -F/ -v deps="$$DEPS" -v of="$(OVERRIDELIST)" ' \ BEGIN { \ while (getline < (of)) \ override[$$NF]=$$0; \ close(of) \ } \ - { \ + /^[^$$]/ { \ info=$$0; \ gsub(/\//, "_", info); \ dir=$$0; \ @@ -113,7 +114,7 @@ $(TARGET_STAMP):: $(TMP_DIR)/.$(SCAN_TARGET): $(TARGET_STAMP) $(call progress,Collecting $(SCAN_NAME) info: merging...) - -cat $(FILELIST) | awk '{gsub(/\//, "_", $$0);print "$(TMP_DIR)/info/.$(SCAN_TARGET)-" $$0}' | xargs cat > $@ 2>/dev/null + -cat $(FILELIST) | grep -v '^[$$]' | awk '{gsub(/\//, "_", $$1);print "$(TMP_DIR)/info/.$(SCAN_TARGET)-" $$1}' | xargs cat > $@ 2>/dev/null $(call progress,Collecting $(SCAN_NAME) info: done) echo