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: