Skip to content
Snippets Groups Projects
Commit 556a5d39 authored by Lucas Magalhães's avatar Lucas Magalhães
Browse files

Move module_VERSION definitions to first make call (fix E3-1112)

From e3-require 4.0.0 to 5.0.0 we changed FETCH_BUILD_NUMBER to
FETCH_REVISION_NUMBER. But the following error happens if you try to
build e3-adandor, for example:

2023-01-19 13:41:49,129 [  DEBUG  ] e3.utils: stderr: HEAD is now at 6f3a1f4... Merge pull request #44 from sudilav/master
msi: Can't open file 'ADBase.template'
input: 'include "ADBase.template"
' at line 5 of  file andorApp/Db/andorCCD.template

The root cause is a mixture of two things, a change we made for 5.0.0
and an old behavior:
1. We changed when the db expansions happen in
b226a847c403eba79bc91efee18d225ed2753c7
2. The variables holding the dependency versions are defined on the
second make call after defining T_A.

This commit fixes the issue by moving the module_VERISON definitions
to the first make call. Whit this we restrict the usage of
FETCH_REVISION_NUMBER to the modules defined as a dependency in
configure/CONFIG_MODULE.
parent 907e894a
No related branches found
No related tags found
No related merge requests found
......@@ -143,6 +143,20 @@ endef
define FETCH_REVISION_NUMBER
$(shell $(MAKEHOME)/revision_number $(1) $(2) $($(2)_VERSION))
endef
# Create the module_VERSION variables giving the module and check if the module
# is actually installed. Add the module to the MODULES and REQ variables. That
# will be used later.
define fetch_module_versions
lm := $$(shell echo $1 | tr '[:upper:]' '[:lower:]')
ifneq ($$(strip $$(filter $(INSTALLED_MODULES),$$(lm))),)
$$(lm)_VERSION := $($1_DEP_VERSION$2)
$$(lm)_VERSION := $$(lastword $$(call FETCH_REVISION_NUMBER,$(E3_SITEMODS_PATH),$$(lm)) $$(call FETCH_REVISION_NUMBER,$(EPICS_MODULES),$$(lm)))
MODULES += $$(lm)
REQ += $$(lm)
else
$$(warning Invalid dependency "$1_DEP_VERSION$2"; pruning)
endif
endef
# Functions used for recursive dependency fetching. These are modified from https://github.com/markpiffer/gmtt.git
space := $(strip) $(strip)#
......@@ -282,6 +296,20 @@ $1-%: | $(COMMON_DIR)
endef
$(foreach target,install build debug,$(eval $(call target_rule,$(target))))
MODULES :=
REQ :=
INSTALLED_MODULES := $(sort $(notdir $(wildcard $(E3_SITEMODS_PATH)/* $(EPICS_MODULES)/*)))
export INSTALLED_MODULES
# Converts all of the X_DEP_VERSIONs to x_VERSION and records them
# Calls fetch_module_version for each module that appears in a
# module_DEP_VERSION variable. This is defined on the wrapper CONFIG_MODULE
$(foreach m,$(patsubst %_DEP_VERSION,%,$(filter %_DEP_VERSION,$(.VARIABLES))),$(eval $(call fetch_module_versions,$m)))
export REQ
export MODULES
$(foreach m,$(MODULES),$(eval export $m_VERSION))
.SECONDEXPANSION:
# This has to fit under .SECONDEXPANSION in order to catch TMPS and SUBS, which are typically defined
......@@ -306,37 +334,14 @@ ARCH_PARTS = ${T_A} $(subst -, ,${T_A}) ${OS_CLASS}
VAR_EXTENSIONS = ${EPICSVERSION} ${ARCH_PARTS} ${ARCH_PARTS:%=${EPICSVERSION}_%}
export VAR_EXTENSIONS
MODULES :=
PROCESSED_MODULES :=
REQ :=
INSTALLED_MODULES := $(sort $(notdir $(wildcard $(E3_SITEMODS_PATH)/* $(EPICS_MODULES)/*)))
# Converts all of the X_DEP_VERSIONs to x_VERSION and records them
# Create the module_VERSION variables giving the module and check if the module
# is actually installed. Add the module to the MODULES and REQ variables. That
# will be used later.
define fetch_module_versions
lm := $$(shell echo $1 | tr '[:upper:]' '[:lower:]')
ifneq ($$(strip $$(filter $(INSTALLED_MODULES),$$(lm))),)
$$(lm)_VERSION := $($1_DEP_VERSION$2)
$$(lm)_VERSION := $$(lastword $$(call FETCH_REVISION_NUMBER,$(E3_SITEMODS_PATH),$$(lm)) $$(call FETCH_REVISION_NUMBER,$(EPICS_MODULES),$$(lm)))
MODULES += $$(lm)
REQ += $$(lm)
else
$$(warning Invalid dependency "$1_DEP_VERSION$2"; pruning)
endif
endef
# Calls fetch_module_version for each module that appears in a
# module_DEP_VERSION variable. This is defined on the wrapper CONFIG_MODULE
$(foreach m,$(patsubst %_DEP_VERSION,%,$(filter %_DEP_VERSION,$(.VARIABLES))),$(eval $(call fetch_module_versions,$m)))
# Look for dependencies on extension files the same way as above
$(foreach x,$(VAR_EXTENSIONS),\
$(foreach m,$(patsubst %_DEP_VERSION_$(x),%,$(filter %_DEP_VERSION_$(x),$(.VARIABLES))),$(eval $(call fetch_module_versions,$m,_$(x))))\
)
export REQ
export MODULES
PROCESSED_MODULES :=
# Fetches the data from .dep files to be parsed by the above
define fetch_deps
$(shell cat $(or \
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment