From ea53719f97eb25b819da475fd05e0c6671dbfd76 Mon Sep 17 00:00:00 2001
From: Simon Rose <simon.rose@ess.eu>
Date: Thu, 21 Oct 2021 12:56:08 +0200
Subject: [PATCH] Synchronised all of the config files in configure/E3 and
 configure/modules in order to merge the two configuration directories.

---
 configure/E3/CONFIG_EPICS        | 16 ++++++++++++++++
 configure/E3/CONFIG_EXPORT       |  2 ++
 configure/E3/CONFIG_REQUIRE      |  6 +-----
 configure/E3/CONFIG_SHELL        |  2 +-
 configure/E3/CONFIG_TEST         |  8 ++++++++
 configure/E3/DECOUPLE_FLAGS      |  7 +++++++
 configure/E3/DEFINES_FT          | 26 ++++++++++++++++++--------
 configure/E3/RULES_DEV           | 29 ++++++++++++++++++++++++++---
 configure/E3/RULES_EPICS         | 14 +++++---------
 configure/E3/RULES_PATCH         |  8 ++++++--
 configure/E3/RULES_REQUIRE       |  9 +++++++++
 configure/E3/RULES_TEST          | 27 ++++++++++++++++++++++++++-
 configure/E3/RULES_VARS          | 13 +++++++++----
 configure/RULES                  |  2 +-
 configure/module/RULES_TEST      |  4 ++++
 configure/modules/CONFIG_REQUIRE |  2 ++
 configure/modules/CONFIG_TEST    |  8 +++++---
 configure/modules/DECOUPLE_FLAGS | 22 ++++++----------------
 configure/modules/DEFINES_FT     |  1 -
 configure/modules/RULES_DEV      |  4 +++-
 configure/modules/RULES_VARS     |  6 ------
 21 files changed, 155 insertions(+), 61 deletions(-)
 create mode 100644 configure/E3/DECOUPLE_FLAGS
 create mode 100644 configure/module/RULES_TEST

diff --git a/configure/E3/CONFIG_EPICS b/configure/E3/CONFIG_EPICS
index 320b00b9..432e0d3f 100644
--- a/configure/E3/CONFIG_EPICS
+++ b/configure/E3/CONFIG_EPICS
@@ -42,6 +42,20 @@ export M_ADSUPPORT
 export M_ADCORE
 export M_OPCUA
 
+## This is needed since the target "epics" (in configure/RULES_MODULE in most modules)
+## uses SUDOBASH to run the make process:
+#
+#.PHONY: epics
+#epics:
+#	$(QUIET)echo "EPICS_BASE:=$(EPICS_BASE)"        > $(TOP)/$(E3_MODULE_SRC_PATH)/configure/RELEASE
+#	$(QUIET)echo "ASYN:=$(M_ASYN)"                  > $(TOP)/$(E3_MODULE_SRC_PATH)/configure/RELEASE
+#	$(QUIET)echo "CHECK_RELEASE:=YES"             > $(TOP)/$(E3_MODULE_SRC_PATH)/configure/CONFIG_SITE
+#	$(QUIET)echo "INSTALL_LOCATION:=$(M_DEVLIB2)"  >> $(TOP)/$(E3_MODULE_SRC_PATH)/configure/CONFIG_SITE
+#	$(SUDOBASH) "$(MAKE) -C $(E3_MODULE_SRC_PATH)"
+#
+## And so that last line will only run if SUDOBASH is defined to be "bash -c"
+SUDOBASH := bash -c
+
 ### Exclude the following variables to display
 VARS_EXCLUDES+=COMMUNITY_EPICS_MODULES
 VARS_EXCLUDES+=M_AUTOSAVE
@@ -63,3 +77,5 @@ VARS_EXCLUDES+=M_IPAC
 VARS_EXCLUDES+=M_ADSUPPORT
 VARS_EXCLUDES+=M_ADCORE
 VARS_EXCLUDES+=M_OPCUA
+
+VARS_EXCLUDES+=SUDOBASH
diff --git a/configure/E3/CONFIG_EXPORT b/configure/E3/CONFIG_EXPORT
index 6aeb4e9b..6d5b6609 100644
--- a/configure/E3/CONFIG_EXPORT
+++ b/configure/E3/CONFIG_EXPORT
@@ -7,6 +7,7 @@ MSI:=$(EPICS_BASE)/bin/$(EPICS_HOST_ARCH)/msi
 EXPORT_VARS+=EPICS_HOST_ARCH
 EXPORT_VARS+=EPICS_BASE
 EXPORT_VARS+=MSI
+EXPORT_VARS+=E3_MODULE_NAME
 EXPORT_VARS+=E3_MODULE_VERSION
 EXPORT_VARS+=E3_SITEMODS_PATH
 EXPORT_VARS+=E3_SITEAPPS_PATH
@@ -16,6 +17,7 @@ EXPORT_VARS+=$(filter E3_REQUIRE_%,$(.VARIABLES))
 EXPORT_VARS+=QUIET
 EXPORT_VARS+=$(filter %_DEP_VERSION,$(.VARIABLES))
 EXPORT_VARS+=$(filter WITH_%,$(.VARIABLES))
+EXPORT_VARS+=$(filter %_EXTERNAL,$(.VARIABLES))
 
 export_version=$(eval export $1)
 $(eval $(foreach v,$(EXPORT_VARS),$(call export_version,$v)))
diff --git a/configure/E3/CONFIG_REQUIRE b/configure/E3/CONFIG_REQUIRE
index 6cdf4a40..1a689389 100644
--- a/configure/E3/CONFIG_REQUIRE
+++ b/configure/E3/CONFIG_REQUIRE
@@ -2,8 +2,7 @@
 # The following VARIABLES are the same as other modules ones.
 #
 
-E3_REQUIRE_LOCATION:=$(EPICS_BASE)/$(E3_REQUIRE_NAME)/$(E3_REQUIRE_VERSION)
-
+E3_REQUIRE_LOCATION?=$(EPICS_BASE)/$(E3_REQUIRE_NAME)/$(E3_REQUIRE_VERSION)
 
 E3_REQUIRE_TOOLS:=$(E3_REQUIRE_LOCATION)/tools
 E3_REQUIRE_BIN:=$(E3_REQUIRE_LOCATION)/bin
@@ -12,6 +11,3 @@ E3_REQUIRE_DB:=$(E3_REQUIRE_LOCATION)/db
 E3_REQUIRE_DBD:=$(E3_REQUIRE_LOCATION)/dbd
 E3_REQUIRE_INC:=$(E3_REQUIRE_LOCATION)/include
 E3_REQUIRE_CONFIG:=$(E3_REQUIRE_LOCATION)/configure
-
-
-EXPORT_VARS+=$(filter E3_REQUIRE_%,$(.VARIABLES))
diff --git a/configure/E3/CONFIG_SHELL b/configure/E3/CONFIG_SHELL
index 931904ed..b35126f3 100644
--- a/configure/E3/CONFIG_SHELL
+++ b/configure/E3/CONFIG_SHELL
@@ -5,4 +5,4 @@ else
   SHELL = /usr/bin/bash
 endif
 
-VARS_EXCLUDES += SHELL
+VARS_EXCLUDES+=SHELL
diff --git a/configure/E3/CONFIG_TEST b/configure/E3/CONFIG_TEST
index 90d16727..d9792f20 100644
--- a/configure/E3/CONFIG_TEST
+++ b/configure/E3/CONFIG_TEST
@@ -1,3 +1,11 @@
 TEST_DIR:=$(TOP)/tests
 
+RUN_IOCSH_TEST_COMMAND = run-iocsh --name "${EPICS_BASE}/require/${E3_REQUIRE_VERSION}/bin/iocsh.bash" -r "$(E3_MODULE_NAME),$(E3_MODULE_VERSION)" -l $(TEMP_CELL_PATH)
+TEMP_CELL_PATH := $(TOP)/testMods-$(shell date +"%y%m%d%H%M%S")
+RMDIR = $(RM) -rf
+
+EXPORT_VARS+=TEMP_CELL_PATH
+
 VARS_EXCLUDES+=TEST_DIR
+VARS_EXCLUDES+=RMDIR
+VARS_EXCLUDES+=TEMP_CELL_PATH
diff --git a/configure/E3/DECOUPLE_FLAGS b/configure/E3/DECOUPLE_FLAGS
new file mode 100644
index 00000000..476159b4
--- /dev/null
+++ b/configure/E3/DECOUPLE_FLAGS
@@ -0,0 +1,7 @@
+# Legacy file. Needed since <module>.Makefiles include the boilerplate code
+#
+# where_am_I := $(dir $(abspath $(lastword $(MAKEFILE_LIST))))
+# include ${E3_REQUIRE_TOOLS}/driver.makefile
+# include $(E3_REQUIRE_CONFIG)/DECOUPLE_FLAGS
+#
+# which fails if this file does not exist. TODO: Remove this line from all modules
diff --git a/configure/E3/DEFINES_FT b/configure/E3/DEFINES_FT
index 840ac0cf..b88cb9c4 100644
--- a/configure/E3/DEFINES_FT
+++ b/configure/E3/DEFINES_FT
@@ -13,17 +13,27 @@ git submodule update --remote --merge $@/
 endef
 
 define patch_site
-for i in $(wildcard $(TOP)/patch/Site/$(E3_MODULE_VERSION)-*.p0.patch); do\
-	printf "\nPatching %s with the file : %s\n" "$(E3_MODULE_SRC_PATH)" "$$i"; \
-	git apply --directory=$(E3_MODULE_SRC_PATH) --ignore-whitespace -p0 $$i;\
-done
+patches=$$(ls $(TOP)/patch/Site/$(E3_MODULE_VERSION)/*.p0.patch 2> /dev/null); \
+if [ -n "$$patches" ]; then \
+  for i in $$patches; do \
+    printf "\nPatching %s with the file : %s\n" "$(E3_MODULE_SRC_PATH)" "$$i"; \
+    git apply --directory=$(E3_MODULE_SRC_PATH) --ignore-whitespace -p0 $$i; \
+  done; \
+else \
+  echo ">>> No patches to apply" >&2; \
+fi
 endef
 
 define patch_revert_site
-for i in $(wildcard $(TOP)/patch/Site/$(E3_MODULE_VERSION)-*.p0.patch); do\
-	printf "\nReverting applied patch %s with the file : %s\n" "$(E3_MODULE_SRC_PATH)" "$$i"; \
-	git apply -R --directory=$(E3_MODULE_SRC_PATH) --ignore-whitespace -p0 $$i;\
-done
+patches=$$(ls $(TOP)/patch/Site/$(E3_MODULE_VERSION)/*.p0.patch 2> /dev/null); \
+if [ -n "$$patches" ]; then \
+  for i in $$patches; do\
+    printf "\nReverting applied patch %s with the file : %s\n" "$(E3_MODULE_SRC_PATH)" "$$i"; \
+    git apply -R --directory=$(E3_MODULE_SRC_PATH) --ignore-whitespace -p0 $$i;\
+  done \
+else \
+  echo ">>> No patches to revert" >&2; \
+fi
 endef
 
 ifndef VERBOSE
diff --git a/configure/E3/RULES_DEV b/configure/E3/RULES_DEV
index a3887729..2c7e9a9f 100644
--- a/configure/E3/RULES_DEV
+++ b/configure/E3/RULES_DEV
@@ -1,11 +1,12 @@
 # -*- mode: Makefile;-*-
 
-.PHONY: devvars devenv devinit devbuild devclean devinstall devrebuild devuninstall devdistclean devconf devrequireconf
+.PHONY: devvars devenv devinit devbuild devclean devinstall devrebuild devuninstall devdistclean devconf devepics devepics-clean devepics-distclean devpatch devpatchrevert devexistent devdep devvers
 
 devvars: vars
 
 devenv: devvars
 
+## Initializes a dev setup, defined with configure/CONFIG_MODULE_DEV and configure/RELEASE_DEV
 devinit: git-submodule-sync
 	git clone $(E3_MODULE_DEV_GITURL) $(E3_MODULE_SRC_PATH)
 	cd $(E3_MODULE_SRC_PATH) && git checkout $(EPICS_MODULE_TAG)
@@ -24,8 +25,14 @@ devrebuild: nonexists
 devuninstall: nonexists
 devdistclean: nonexists
 devconf: nonexists
-devrequireconf: nonexists
+devepics: nonexists
+devepics-clean: nonexists
+devepics-distclean: nonexists
+devpatch: nonexists
+devpatchrevert: nonexists
 devexistent: nonexists
+devdep: nonexists
+devvers: nonexists
 nonexists:
 	$(QUIET)echo ""
 	$(QUIET)echo "------------------------------------------------------------"
@@ -35,15 +42,31 @@ nonexists:
 	$(QUIET)echo ""
 else
 
+## Displays information about the build process (development mode)
+devdebug: debug
+
+## Build current module (development mode)
 devbuild: build
+
+## Deletes temporary build files (development mode)
 devclean: clean
+
+## Install the current module (development mode)
 devinstall: install
 devrebuild: rebuild
+
+## Uninstall the current module (development mode)
 devuninstall: uninstall
 devconf: conf
-devrequireconf: requireconf
 devdistclean: clean
 	$(QUIET)echo "Removing $(E3_MODULE_SRC_PATH) ......... "
 	rm -rf $(E3_MODULE_SRC_PATH)
+devepics: epics
+devepics-clean: epics-clean
+devepics-distclean: epics-distclean
+devpatch: patch
+devpatchrevert: patchrevert
 devexistent: existent
+devdep: dep
+devvers: vers
 endif
diff --git a/configure/E3/RULES_EPICS b/configure/E3/RULES_EPICS
index c6219140..f7dac66e 100644
--- a/configure/E3/RULES_EPICS
+++ b/configure/E3/RULES_EPICS
@@ -1,14 +1,10 @@
-# -*- mode: Makefile;-*-
-
 # One should define the any dependency modules and EPICS base path
 # in the following directory
 
-# .PHONY: epics epics-clean
+.PHONY: epics-clean epics-distclean
 
-# epics:
-#        $(QUIET)echo "EPICS_BASE=$(EPICS_BASE)"       > $(TOP)/$(E3_MODULE_SRC_PATH)/configure/RELEASE
-#        $(QUIET)echo "INSTALL_LOCATION=$(M_IOCSTATS)" > $(TOP)/$(E3_MODULE_SRC_PATH)/configure/CONFIG_SITE
-#        $(MAKE) -C $(E3_MODULE_SRC_PATH)
+epics-clean:
+	$(MAKE) -C $(E3_MODULE_SRC_PATH) clean
 
-#epics-clean:
-#        $(MAKE) -C $(E3_MODULE_SRC_PATH) clean
+epics-distclean:
+	$(MAKE) -C $(E3_MODULE_SRC_PATH) distclean
diff --git a/configure/E3/RULES_PATCH b/configure/E3/RULES_PATCH
index fb3d8ada..d2a6d0f6 100644
--- a/configure/E3/RULES_PATCH
+++ b/configure/E3/RULES_PATCH
@@ -1,11 +1,15 @@
 
 .PHONY: patch patchrevert
 
+.PHONY: check_for_old_patches
+check_for_old_patches:
+	$(if $(wildcard $(TOP)/patch/Site/$(patsubst %+0,%,$(E3_MODULE_VERSION))*.p0.patch),$(warning Warning: old-style patches detected. Please move them to patch/Site/$$E3_MODULE_VERSION/.))
+
 
 ## Apply Patch Files
-patch:
+patch: check_for_old_patches
 	$(QUIET) $(call patch_site)
 
 ## Revert Patch Files
-patchrevert:
+patchrevert: check_for_old_patches
 	$(QUIET) $(call patch_revert_site)
diff --git a/configure/E3/RULES_REQUIRE b/configure/E3/RULES_REQUIRE
index f1c66a4d..ca535cf9 100644
--- a/configure/E3/RULES_REQUIRE
+++ b/configure/E3/RULES_REQUIRE
@@ -35,6 +35,15 @@ e3-site-path:
 	$(QUIET) install -d -m 755 $(E3_SITEMODS_PATH)
 	$(QUIET) install -d -m 755 $(E3_SITEAPPS_PATH)
 
+.PHONY: epics
+epics:
+	$(QUIET)echo "EPICS_BASE=$(EPICS_BASE)"        > $(TOP)/$(E3_MODULE_SRC_PATH)/configure/RELEASE
+	$(QUIET)echo "CHECK_RELEASE = YES"             > $(TOP)/$(E3_MODULE_SRC_PATH)/configure/CONFIG_SITE
+	$(SUDOBASH) "$(MAKE) -C $(E3_MODULE_SRC_PATH)"
+
+.PHONY: epics-clean
+epics-clean:
+	$(SUDOBASH) "$(MAKE) -C $(E3_MODULE_SRC_PATH) clean"
 
 VARS_EXCLUDES+=FILE_FILTER
 VARS_EXCLUDES+=E3_SHELL_FILES
diff --git a/configure/E3/RULES_TEST b/configure/E3/RULES_TEST
index 5a6e2b84..f542ecb6 100644
--- a/configure/E3/RULES_TEST
+++ b/configure/E3/RULES_TEST
@@ -1,4 +1,29 @@
 .PHONY: test
+## Tests the current build
+test:
+
+ifeq ($(shell command -v run-iocsh > /dev/null 2>&1 ; echo $$?),0)
+
+test: temp_install run_test module_tests cleanup_test
+
+.PHONY: temp_install
+temp_install:
+	$(MAKE) cellinstall E3_CELL_PATH=$(TEMP_CELL_PATH)
+
+.PHONY: run_test
+run_test:
+	$(RUN_IOCSH_TEST_COMMAND)
+
+.PHONY: module_tests
+module_tests:
+
+.PHONY: cleanup_test
+cleanup_test:
+	$(RMDIR) $(TEMP_CELL_PATH)
+
+else  # if the if-run-iocsh-exists test fails
 
 test:
-	pytest $(TEST_DIR) -v
+	$(error run-iocsh must be installed to use the test capability. Please install run-iocsh from PyPI.)
+
+endif
diff --git a/configure/E3/RULES_VARS b/configure/E3/RULES_VARS
index e1e0221a..fa5c1a92 100644
--- a/configure/E3/RULES_VARS
+++ b/configure/E3/RULES_VARS
@@ -6,13 +6,13 @@ DEP_MODULES:=$(filter %_DEP_VERSION, $(E3_MODULES_VARIABLES))
 
 LEVEL?=2
 
-## Print relevant environment variables
-.PHONY: env
-env: vars
+GENERATED_DEP_FILE:=$(E3_MODULES_INSTALL_LOCATION_LIB)/$(EPICS_HOST_ARCH)/$(E3_MODULE_NAME).dep
 
+## Print relevant environment variables
 .PHONY: vars
 vars: header
-	$(foreach v, $(E3_MODULES_VARIABLES), $(info $(v) = $($(v)))) @#noop
+	$(foreach v, $(filter-out %_DEP_VERSION,$(E3_MODULES_VARIABLES)), $(info $(v) = $($(v)))) @#noop
+	$(foreach v, $(filter %_DEP_VERSION,$(E3_MODULES_VARIABLES)), $(info $(v) = $($(v)))) @#noop
 
 .PHONY: header
 header:
@@ -31,11 +31,16 @@ else
 	$(QUIET)tree -L $(LEVEL) $(E3_MODULES_PATH)/$(E3_MODULE_NAME)
 endif
 
+## Displays dependency information, both configured and generated
 .PHONY: dep
 dep:
 	$(QUIET)echo "require $(E3_MODULE_NAME),$(E3_MODULE_VERSION)"
 	$(QUIET)echo "< configured ..."
 	$(foreach v, $(DEP_MODULES), $(info $(v) = $($(v)))) @#noop
+ifneq ("$(wildcard $(GENERATED_DEP_FILE))","")
+	$(QUIET)echo "> generated ..."
+	$(QUIET)tail -n+2 $(GENERATED_DEP_FILE)
+endif
 
 .PHONY: vers
 vers:
diff --git a/configure/RULES b/configure/RULES
index e35fe641..a22a8c59 100644
--- a/configure/RULES
+++ b/configure/RULES
@@ -14,7 +14,7 @@ include $(TOP)/configure/E3/RULES_REQUIRE
 include $(TOP)/configure/E3/RULES_PATCH
 include $(TOP)/configure/E3/RULES_DB
 include $(TOP)/configure/E3/RULES_VARS
-include $(TOP)/configure/E3/RULES_TEST
+include $(TOP)/configure/module/RULES_TEST
 
 
 ifneq (,$(findstring dev,$(MAKECMDGOALS)))
diff --git a/configure/module/RULES_TEST b/configure/module/RULES_TEST
new file mode 100644
index 00000000..5a6e2b84
--- /dev/null
+++ b/configure/module/RULES_TEST
@@ -0,0 +1,4 @@
+.PHONY: test
+
+test:
+	pytest $(TEST_DIR) -v
diff --git a/configure/modules/CONFIG_REQUIRE b/configure/modules/CONFIG_REQUIRE
index 871948ef..1a689389 100644
--- a/configure/modules/CONFIG_REQUIRE
+++ b/configure/modules/CONFIG_REQUIRE
@@ -2,6 +2,8 @@
 # The following VARIABLES are the same as other modules ones.
 #
 
+E3_REQUIRE_LOCATION?=$(EPICS_BASE)/$(E3_REQUIRE_NAME)/$(E3_REQUIRE_VERSION)
+
 E3_REQUIRE_TOOLS:=$(E3_REQUIRE_LOCATION)/tools
 E3_REQUIRE_BIN:=$(E3_REQUIRE_LOCATION)/bin
 E3_REQUIRE_LIB:=$(E3_REQUIRE_LOCATION)/lib
diff --git a/configure/modules/CONFIG_TEST b/configure/modules/CONFIG_TEST
index 9ef0ba0d..d9792f20 100644
--- a/configure/modules/CONFIG_TEST
+++ b/configure/modules/CONFIG_TEST
@@ -1,9 +1,11 @@
+TEST_DIR:=$(TOP)/tests
 
 RUN_IOCSH_TEST_COMMAND = run-iocsh --name "${EPICS_BASE}/require/${E3_REQUIRE_VERSION}/bin/iocsh.bash" -r "$(E3_MODULE_NAME),$(E3_MODULE_VERSION)" -l $(TEMP_CELL_PATH)
 TEMP_CELL_PATH := $(TOP)/testMods-$(shell date +"%y%m%d%H%M%S")
 RMDIR = $(RM) -rf
 
-EXPORT_VARS += TEMP_CELL_PATH
+EXPORT_VARS+=TEMP_CELL_PATH
 
-VARS_EXCLUDES += RMDIR
-VARS_EXCLUDES += TEMP_CELL_PATH
+VARS_EXCLUDES+=TEST_DIR
+VARS_EXCLUDES+=RMDIR
+VARS_EXCLUDES+=TEMP_CELL_PATH
diff --git a/configure/modules/DECOUPLE_FLAGS b/configure/modules/DECOUPLE_FLAGS
index 6904d96a..476159b4 100644
--- a/configure/modules/DECOUPLE_FLAGS
+++ b/configure/modules/DECOUPLE_FLAGS
@@ -1,17 +1,7 @@
-# *** ISSUES
-# driver.makefile recursively read all include directories which were installed.
-# The only way to exclude header files is to set $(module)_VERSION to a blank.
-
-# We first collect all installed modules from $(E3_SITEMODS_PATH) ...
-#$(foreach dir,$(patsubst $(E3_SITEMODS_PATH)/%,%,$(wildcard $(E3_SITEMODS_PATH)/*)),$(eval DECOUPLE_MODULES += $(dir)))
-
-# ... except that we don't want to overwrite the versions from required modules, so keep those.
-#$(foreach mod,$(filter-out $(REQ),$(DECOUPLE_MODULES)),$(eval $(mod)_VERSION =))
-
-# In addition to decouple the existent e3 module,
-# We use this opportunatiy in order to apply global configuration
-# space. For example, common compiler options
+# Legacy file. Needed since <module>.Makefiles include the boilerplate code
 #
-#ifeq ($(T_A),linux-x86_64)
-#USR_LDFLAGS += -Wl,--compress-debug-sections=zlib
-#endif
+# where_am_I := $(dir $(abspath $(lastword $(MAKEFILE_LIST))))
+# include ${E3_REQUIRE_TOOLS}/driver.makefile
+# include $(E3_REQUIRE_CONFIG)/DECOUPLE_FLAGS
+#
+# which fails if this file does not exist. TODO: Remove this line from all modules
diff --git a/configure/modules/DEFINES_FT b/configure/modules/DEFINES_FT
index a91260bb..fc7d5628 100644
--- a/configure/modules/DEFINES_FT
+++ b/configure/modules/DEFINES_FT
@@ -1,4 +1,3 @@
-
 # Keep always the module up-to-date
 define git_update =
 git submodule deinit -f $@/
diff --git a/configure/modules/RULES_DEV b/configure/modules/RULES_DEV
index 02e2df96..2c7e9a9f 100644
--- a/configure/modules/RULES_DEV
+++ b/configure/modules/RULES_DEV
@@ -1,6 +1,6 @@
 # -*- mode: Makefile;-*-
 
-.PHONY: devvars devenv devinit devbuild devclean devinstall devrebuild devuninstall devdistclean devepics devepics-clean devepics-distclean devpatch devpatchrevert devexistent devdep devvers
+.PHONY: devvars devenv devinit devbuild devclean devinstall devrebuild devuninstall devdistclean devconf devepics devepics-clean devepics-distclean devpatch devpatchrevert devexistent devdep devvers
 
 devvars: vars
 
@@ -24,6 +24,7 @@ devinstall: nonexists
 devrebuild: nonexists
 devuninstall: nonexists
 devdistclean: nonexists
+devconf: nonexists
 devepics: nonexists
 devepics-clean: nonexists
 devepics-distclean: nonexists
@@ -56,6 +57,7 @@ devrebuild: rebuild
 
 ## Uninstall the current module (development mode)
 devuninstall: uninstall
+devconf: conf
 devdistclean: clean
 	$(QUIET)echo "Removing $(E3_MODULE_SRC_PATH) ......... "
 	rm -rf $(E3_MODULE_SRC_PATH)
diff --git a/configure/modules/RULES_VARS b/configure/modules/RULES_VARS
index 518a3256..fa5c1a92 100644
--- a/configure/modules/RULES_VARS
+++ b/configure/modules/RULES_VARS
@@ -48,12 +48,6 @@ vers:
 	$(QUIET)echo "E3_MODULE_VERSION:=$(E3_MODULE_VERSION), origin : $(origin E3_MODULE_VERSION)"
 
 # https://www.cmcrossroads.com/article/printing-value-makefile-variable
-PRINT.%:
-	$(QUIET)echo $* = $($*)
-	$(QUIET)echo $*\'s origin is $(origin $*)
-
 print-%:
 	$(QUIET)echo $* = $($*)
 	$(QUIET)echo $*\'s origin is $(origin $*)
-
-FORCE:
-- 
GitLab