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