From e38f360309482f140a051c44452f5ead9fc10f79 Mon Sep 17 00:00:00 2001
From: Simon Rose <simon.rose@ess.eu>
Date: Mon, 21 Mar 2022 13:16:28 +0100
Subject: [PATCH] Minimise contents of module.dep to only those that the given
 module actually depends on

---
 require-ess/tools/driver.makefile | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/require-ess/tools/driver.makefile b/require-ess/tools/driver.makefile
index 16a83dac..ef66a2be 100644
--- a/require-ess/tools/driver.makefile
+++ b/require-ess/tools/driver.makefile
@@ -443,6 +443,7 @@ select = $(strip $(call -select,$(strip $2),$1,$3))
 str-eq = $(if $(subst x$1,,x$2),,t)
 
 _MODULES :=
+_PROCESSED_MODULES :=
 REQ :=
 INSTALLED_MODULES := $(sort $(notdir $(shell ls -d $(E3_SITEMODS_PATH)/* $(EPICS_MODULES)/*)))
 
@@ -452,6 +453,7 @@ define fetch_module_versions
   ifneq ($$(strip $$(filter $(INSTALLED_MODULES),$$(_lm))),)
     $$(_lm)_VERSION := $($1_DEP_VERSION$2)
     _MODULES += $$(_lm)
+    REQ += $$(_lm)
   else
     $$(warning Invalid dependency "$1_DEP_VERSION$2"; pruning)
   endif
@@ -460,25 +462,25 @@ $(foreach m,$(patsubst %_DEP_VERSION,%,$(filter %_DEP_VERSION,$(.VARIABLES))),$(
 $(foreach x,$(VAR_EXTENSIONS),\
   $(foreach m,$(patsubst %_DEP_VERSION_$(x),%,$(filter %_DEP_VERSION_$(x),$(.VARIABLES))),$(eval $(call fetch_module_versions,$m,_$(x))))\
 )
+export REQ
 
 # Fetches the data from .dep files to be parsed by the above
 define fetch_deps
 $(shell cat $(E3_SITEMODS_PATH)/$1/$($1_VERSION)/lib/$(T_A)/$1.dep | sed '1d')
 endef
 
-# Used to recurse through versions: updates REQ and fetches all of the dependencies from the given module
+# Used to recurse through versions: recursively fetches all of the dependencies from the given module
 define update_dep_versions
   m := $$(firstword $$(_MODULES))
-  REQ += $$m
+  _PROCESSED_MODULES += $$m
   $$m_TBL := $$(call fetch_deps,$$m)
   $$m_DEPS := $$(call select,1,$$($$m_TBL),1)
-  _MODULES := $$(filter-out $$(REQ),$$(_MODULES) $$($$m_DEPS))
+  _MODULES := $$(filter-out $$(_PROCESSED_MODULES),$$(_MODULES) $$($$m_DEPS))
   $$(foreach mm,$$($$m_DEPS),$$(eval $$(mm)_VERSION := $$(call select,2,$$($$m_TBL),$$$$(call str-eq,$$$$1,$$(mm)))))
 endef
 $(call while,$$(_MODULES),$(update_dep_versions))
 
-$(foreach m,$(REQ),$(eval export $m_VERSION))
-export REQ
+$(foreach m,$(_PROCESSED_MODULES),$(eval export $m_VERSION))
 
 debug::
 	@echo "===================== Pass 3: T_A = $(T_A) ====================="
-- 
GitLab