diff --git a/configure/E3/RULES_REQUIRE b/configure/E3/RULES_REQUIRE index e892edba02230fd71a96a799916113eb0debdc88..61134f160867781b87033816697334c5f5667348 100644 --- a/configure/E3/RULES_REQUIRE +++ b/configure/E3/RULES_REQUIRE @@ -27,7 +27,7 @@ E3_REQUIRE_CONF_FILES := $(filter-out $(FILE_FILTER), $(wildcard $(TOP)/configur requireconf: e3-site-path e3-site-conf e3-require-path $(QUIET) install -m 755 $(wildcard $(E3_MODULE_SRC_PATH)/tools/*.tcl) $(E3_REQUIRE_TOOLS)/ $(QUIET) install -m 644 $(E3_MODULE_SRC_PATH)/tools/driver.makefile $(E3_REQUIRE_TOOLS)/ - $(QUIET) install -m 644 $(E3_MODULE_SRC_PATH)/tools/*.sh $(E3_REQUIRE_TOOLS)/ + $(QUIET) install -m 755 $(E3_MODULE_SRC_PATH)/tools/*.sh $(E3_REQUIRE_TOOLS)/ $(QUIET) install -m 755 $(E3_SHELL_FILES) $(E3_REQUIRE_BIN)/ $(QUIET) install -m 644 $(E3_IOC_CFG_FILES) $(E3_REQUIRE_BIN)/ $(QUIET) install -m 644 $(E3_REQUIRE_CONF_FILES) $(E3_REQUIRE_CONFIG)/ diff --git a/configure/modules/CONFIG b/configure/modules/CONFIG index db96806171c3be9e16c746a8ada1deb12924e59b..e9f0067b08900abd574361332de236fef0608301 100644 --- a/configure/modules/CONFIG +++ b/configure/modules/CONFIG @@ -1,5 +1,7 @@ # -*- mode: Makefile;-*- +E3_MODULE_VERSION:=$(E3_MODULE_VERSION)$(shell [[ "$(E3_MODULE_VERSION)" =~ ^[0-9]+\.[0-9]+\.[0-9]+$$ ]] && echo -0) + include $(EPICS_BASE)/configure/CONFIG_BASE_VERSION include $(REQUIRE_CONFIG)/CONFIG_REQUIRE include $(REQUIRE_CONFIG)/CONFIG_CELL diff --git a/require-ess/tools/build_number.sh b/require-ess/tools/build_number.sh new file mode 100755 index 0000000000000000000000000000000000000000..9246201e1ab30aafa176c0a5bc6fcca9f59fe718 --- /dev/null +++ b/require-ess/tools/build_number.sh @@ -0,0 +1,15 @@ +#!/bin/env bash +shopt -s extglob + +[[ $# -ne 3 ]] && exit 1 + +p="$1" +m="$2" +v="$3" + +if [[ $v =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then + # shellcheck disable=SC2012 + basename "$(ls -dvr "$p/$m/$v"?(-+([0-9])) 2>/dev/null | head -n 1)" | sed 's/^[^-]\+$/&-0/' +else + echo "$v" +fi \ No newline at end of file diff --git a/require-ess/tools/driver.makefile b/require-ess/tools/driver.makefile index db6309817557c8d2a3cfce9c8ba2598e445a2b37..8c25f031c229cf12d2befe109573858bdc0dd172 100644 --- a/require-ess/tools/driver.makefile +++ b/require-ess/tools/driver.makefile @@ -547,8 +547,12 @@ EPICS_INCLUDES = # endef # $(eval $(foreach m,$(filter-out $(PRJ),$(notdir $(wildcard ${EPICS_MODULES}/*))),$(call ADD_FOREIGN_INCLUDES,$m))) +define FETCH_BUILD_NUMBER +$(shell $(E3_REQUIRE_TOOLS)/build_number.sh $(E3_SITEMODS_PATH) $(1) $($1_VERSION)) +endef + define ADD_SITEMODS_INCLUDES -INSTALL_INCLUDES += $$(patsubst %,-I${E3_SITEMODS_PATH}/$(1)/%/include,$$($(1)_VERSION)) +INSTALL_INCLUDES += $$(patsubst %,-I${E3_SITEMODS_PATH}/$(1)/%/include,$$(shell $(E3_REQUIRE_TOOLS)/build_number.sh $(E3_SITEMODS_PATH) $(1) $$($(1)_VERSION))) endef $(foreach m,$(filter-out $(PRJ),$(notdir $(wildcard ${E3_SITEMODS_PATH}/*))),$(eval $(call ADD_SITEMODS_INCLUDES,$m))) @@ -676,7 +680,7 @@ DBDFILES += $(patsubst %.gt,%.dbd,$(notdir $(filter %.gt,${SRCS}))) # snc location in 3.14: From latest version of module seq or fall back to globally installed snc. #SNC=$(lastword $(dir ${EPICS_BASE})seq/bin/$(EPICS_HOST_ARCH)/snc $(shell ls -dv ${EPICS_MODULES}/seq/$(or $(seq_VERSION),$(VERSIONGLOB))/bin/${EPICS_HOST_ARCH}/snc 2>/dev/null)) -SNCALL=$(shell ls -dv $(E3_SITEMODS_PATH)/sequencer/$(sequencer_VERSION)/bin/$(EPICS_HOST_ARCH) 2> /dev/null) +SNCALL=$(shell ls -dv $(E3_SITEMODS_PATH)/sequencer/$(call FETCH_BUILD_NUMBER,sequencer)/bin/$(EPICS_HOST_ARCH) 2> /dev/null) SNC=$(lastword $(SNCALL))/snc @@ -1002,15 +1006,13 @@ endef ${DEPFILE}: ${LIBOBJS} $(USERMAKEFILE) @echo "Collecting dependencies" $(RM) $@ - @echo "# Generated file. Do not edit." > $@_tmp + @echo "# Generated file. Do not edit." > $@ # Check dependencies on other module headers. - cat *.d 2>/dev/null | sed 's/ /\n/g' | sed -n '$(DEP_PARSER)' | grep -v "include" | sort -u >> $@_tmp + cat *.d 2>/dev/null | sed 's/ /\n/g' | sed -n '$(DEP_PARSER)' | grep -v "include" | sort -u >> $@ ifneq ($(strip ${REQ}),) # Manully added dependencies: ${REQ} - @$(foreach m,${REQ},echo "$m $(or ${$m_VERSION},$(and $(wildcard ${E3_SITEMODS_PATH}/$m),$(error REQUIRED module $m has no numbered version. Set $m_VERSION)),$(warning REQUIRED module $m not found for ${T_A}.))" >> $@_tmp;) + @$(foreach m,${REQ},echo "$m $(or $(call FETCH_BUILD_NUMBER,$m),$(and $(wildcard ${E3_SITEMODS_PATH}/$m),$(error REQUIRED module $m has no numbered version. Set $m_VERSION)),$(warning REQUIRED module $m not found for ${T_A}.))" >> $@;) endif - bash $(E3_REQUIRE_TOOLS)/add_build_no.sh "$(E3_SITEMODS_PATH)" $@_tmp > $@ - rm $@_tmp # Remove MakefileInclude after we are done because it interfers with our way to build. build: