diff --git a/CHANGELOG.md b/CHANGELOG.md index 90216055d4c9ef81c7e4de4f635af94a7e7399d6..cd039f3dca282c377aa7fe9bb85a3c5079aaa2b3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,15 +1,19 @@ -# Pending release +# CHANGELOG +All notable changes to this project will be documented in this file. -## New Features +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [Unreleased] + +### New Features * Added back `promptE3Env.bash`, which runs `setE3Env.bash` and then sets the bash prompt. * Added descriptions for more targets when running `make help` * Added a new test target for individual modules, available as `make test` * Added script in `tools/test_installed_modules.sh` that tests all modules in an installation * Build numbers are now prefixed with a `+`. -## Bugfixes - +### Bugfixes * Removed `loadIocsh` function, which was just a cover for `runScript`. * Removed references to `INSTBASE` * Fixed issue where `make cellinstall` would recompile a module. @@ -22,11 +26,11 @@ * Issue involving priority between some test versions fixed * `make patch` when there are no patch files will no longer return an error code. -## Other changes +### Other changes * Removed `require` as a submodule and merged it into `e3-require`. +* Removed `plotdep` target. -# 3.3.0 - +## [3.3.0] 3.3.0 is a relatively major release with many bugfixes and a number of features added based on consultation with developers. One major change is that versions are now parsed as MAJOR.MINOR.PATCH-BUILD (with build number being optional, assumed to be zero if not present). This has proven to be necessary in the NFS @@ -38,8 +42,7 @@ setting for a number of separate reasons to handle dependencies properly. Note t A second major change (mostly via bugfixes) is that the local install command, `make cellinstall` which installs the module in a local directory now works properly, which allows developers and integrators to simply mount the NFS E3 build and work with that instead of needing to install E3 locally. -## New Features - +### New Features * Removed all EPICS 3.* and VxWorks code, as these are not to be supported at ESS. * Consistent with the philosophy of not requiring module version pinning, if one specifies a dependent module with e.g. `REQUIRED += asyn` then the latest version of asyn will be used. No version need @@ -57,8 +60,7 @@ A second major change (mostly via bugfixes) is that the local install command, ` * Added a `prebuild` target that runs before build so module developers can run specific code before the build process. * A module developer can now install dbd files separate from the module dbd file by using `DBD_INSTALLS += file.dbd`. -## Bugfixes - +### Bugfixes * Ensures that lowercase module names are enforced consistently * Vendor libraries are only installed at install time, not at build time * Vendor libraries are uninstalled when `make uninstall` is run @@ -72,8 +74,7 @@ A second major change (mostly via bugfixes) is that the local install command, ` * Assorted minor typos in scripts * Re-added functionality to have `iocsh.bash` automagically source `setE3Env.bash`. -# 3.2.0 - +## [3.2.0] Require 3.2.0 is the first version of require used during our initial return to the NFS implementation of E3. It maintains some of the work done there (modules are lowercased for consistency), but mostly reverts back to a similar version to require 3.1.2. One major difference is that module pinning is not @@ -81,14 +82,17 @@ reverts back to a similar version to require 3.1.2. One major difference is that form `require module` instead of `require module,version` as was the case in 3.1.2. An IOC developer can of course pin a specific module version. If they do not, then the highest numeric version will be chosen. -## New Features - +### New Features * Added -dg, -dv options to run gdb and valgrind using `iocsh.bash` * If `IOCNAME` is defined, then it is used in the PV names set by require instead of `REQMOD:$(hostname)-$(pid)`. * Reverted changes from conda require to return to NFS * Moved tools files from e3-require to require submodule -## Bugfixes - +### Bugfixes * Fixed issue where a second user running `iocsh.bash` on a machine would be unable to create the temporary startup script + + +[Unreleased]: https://gitlab.esss.lu.se/e3/e3-require/-/compare/3.3.0...master +[3.3.0]: https://gitlab.esss.lu.se/e3/e3-require/-/compare/3.2.0...3.3.0 +[3.2.0]: https://gitlab.esss.lu.se/e3/e3-require/-/tree/3.2.0 diff --git a/configure/E3/RULES_VARS b/configure/E3/RULES_VARS index 49ce4f8b3afdbc5ac635a664879eca75da7da129..e1e0221a197f0d1d724effbc5e16a61f8abe8b1e 100644 --- a/configure/E3/RULES_VARS +++ b/configure/E3/RULES_VARS @@ -6,14 +6,15 @@ DEP_MODULES:=$(filter %_DEP_VERSION, $(E3_MODULES_VARIABLES)) LEVEL?=2 -.PHONY: env vars header vers dep _dep1 _dep2 - ## Print relevant environment variables +.PHONY: env env: vars +.PHONY: vars vars: header $(foreach v, $(E3_MODULES_VARIABLES), $(info $(v) = $($(v)))) @#noop +.PHONY: header header: $(QUIET)echo "" $(QUIET)echo "------------------------------------------------------------" @@ -30,16 +31,17 @@ else $(QUIET)tree -L $(LEVEL) $(E3_MODULES_PATH)/$(E3_MODULE_NAME) endif -dep: _dep2 +.PHONY: dep +dep: $(QUIET)echo "require $(E3_MODULE_NAME),$(E3_MODULE_VERSION)" $(QUIET)echo "< configured ..." $(foreach v, $(DEP_MODULES), $(info $(v) = $($(v)))) @#noop +.PHONY: vers vers: $(QUIET)echo "EPICS_MODULE_TAG:=$(EPICS_MODULE_TAG), origin : $(origin EPICS_MODULE_TAG)" $(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 $* = $($*) diff --git a/configure/modules/RULES_VARS b/configure/modules/RULES_VARS index af772797f4b601c2a0ef6045d265511260c66c6a..a358156ff466f137978eb392dab773d63ef5d9ca 100644 --- a/configure/modules/RULES_VARS +++ b/configure/modules/RULES_VARS @@ -5,37 +5,31 @@ E3_MODULES_VARIABLES:=$(sort $(filter-out $(VARS_EXCLUDES) VARS_EXCLUDES,$(.VARI DEP_MODULES:=$(filter %_DEP_VERSION, $(E3_MODULES_VARIABLES)) DEP_NAMES:=$(patsubst %_DEP_VERSION,%,$(DEP_MODULES)) - COMMA := , EMPTY := SPACE := $(EMPTY) $(EMPTY) COMMA_DEP_NAMES:=$(subst $(SPACE),$(COMMA),$(DEP_NAMES)) - blank := define newline $(blank) endef - - #LOWER_DEP_MODULES:=$(shell echo $(DEP_MODULES) | tr A-Z a-z) #DEP_MODULES_NAME:=$(subst _DEP_VERSION, "", $(DEP_MODULES)) - - LEVEL?=2 GENERATED_DEP_FILE:=$(E3_MODULES_INSTALL_LOCATION_LIB)/$(EPICS_HOST_ARCH)/$(E3_MODULE_NAME).dep -.PHONY: env vars header vers dep _dep1 _dep2 - ## Print relevant environment variables +.PHONY: vars vars: header $(foreach v, $(E3_MODULES_VARIABLES), $(info $(v) = $($(v)))) @#noop +.PHONY: header header: $(QUIET)echo "" $(QUIET)echo "------------------------------------------------------------" @@ -53,7 +47,8 @@ else endif ## Displays dependency information, both configured and generated -dep: _dep2 +.PHONY: dep +dep: $(QUIET)echo "require $(E3_MODULE_NAME),$(E3_MODULE_VERSION)" $(QUIET)echo "< configured ..." $(foreach v, $(DEP_MODULES), $(info $(v) = $($(v)))) @#noop @@ -62,110 +57,11 @@ ifneq ("$(wildcard $(GENERATED_DEP_FILE))","") $(QUIET)tail -n+2 $(GENERATED_DEP_FILE) endif +.PHONY: vers vers: $(QUIET)echo "EPICS_MODULE_TAG:=$(EPICS_MODULE_TAG), origin : $(origin EPICS_MODULE_TAG)" $(QUIET)echo "E3_MODULE_VERSION:=$(E3_MODULE_VERSION), origin : $(origin E3_MODULE_VERSION)" - - -### The following dependency plot generator rules do NOT cover all -### dependency information, BUT cover only within this module. -## From this point, we have to think how we handle other dependency out of this repository -## by using rank, subgraph, and so on later. -## Tuesday, September 10 12:49:41 CEST 2019, han.lee@esss.se -## https://renenyffenegger.ch/notes/tools/Graphviz/examples/index - -define a_gv -$(QUIET)printf "digraph $(E3_MODULE_NAME) {\n" -$(QUIET)printf "node [shape=record];\n" -$(QUIET)printf "base [label=\"base $(EPICS_VERSION_NUMBER)\"]\n" -$(QUIET)printf "$(E3_REQUIRE_NAME) [label=\"$(E3_REQUIRE_NAME) $(E3_REQUIRE_VERSION)\"]\n" -$(QUIET)$(foreach v, $(DEP_NAMES), $(newline)$(tab)$(QUIET)echo $(v) [label=\"$(v) $($(v)_DEP_VERSION)\"]) -$(QUIET)printf "$(E3_MODULE_NAME) [label=\"$(E3_MODULE_NAME) $(E3_MODULE_VERSION)\"]\n" -$(QUIET)printf "base -> $(E3_REQUIRE_NAME) " -endef - -define b_gv -$(QUIET)printf " $(E3_MODULE_NAME) " -endef - - -define a_gv_file -$(QUIET)printf "digraph $(E3_MODULE_NAME) {\n" > $@ -$(QUIET)printf "node [shape=record];\n" >> $@ -$(QUIET)printf "base [label=\"base $(EPICS_VERSION_NUMBER)\"]\n" >> $@ -$(QUIET)printf "$(E3_REQUIRE_NAME) [label=\"$(E3_REQUIRE_NAME) $(E3_REQUIRE_VERSION)\"]\n" >> $@ -$(QUIET)$(foreach v, $(DEP_NAMES), $(newline)$(tab)$(QUIET)echo $(v) [label=\"$(v) $($(v)_DEP_VERSION)\"] >> $@) -$(QUIET)printf "$(E3_MODULE_NAME) [label=\"$(E3_MODULE_NAME) $(E3_MODULE_VERSION)\"]\n" >> $@ -$(QUIET)printf "base -> $(E3_REQUIRE_NAME) " >> $@ -endef - -define b_gv_file -$(QUIET)printf " $(E3_MODULE_NAME) " >> $@ -endef - - - -.PHONY: showgv plotdep $(E3_MODULE_NAME).gv closeplot - -FILETYPE?=png - -showgv: - $(QUIET)echo "/*** Warning this output isn't 100% correct. Please look at them carefully! ***/ \n" - $(a_gv) -ifneq ($(strip $(DEP_MODULES)),) - $(QUIET)echo -n "-> { $(COMMA_DEP_NAMES) } "; -endif - $(QUIET)echo -n "-> "; -ifneq ($(strip $(DEP_MODULES)),) - $(QUIET)echo -n " { "; -endif - $(b_gv) -ifneq ($(strip $(DEP_MODULES)),) - $(QUIET)echo -n " } "; -endif - $(QUIET)echo "\n} \n"; - - -$(TOP)/docs/$(E3_MODULE_NAME).gv:FORCE | outputPath - rm -f $@ - $(QUIET) $(a_gv_file) -ifneq ($(strip $(DEP_MODULES)),) - $(QUIET)echo -n "-> { $(COMMA_DEP_NAMES) } " >> $@ -endif - $(QUIET)echo -n "-> " >> $@ -ifneq ($(strip $(DEP_MODULES)),) - $(QUIET)echo -n " { " >> $@ -endif - $(QUIET) $(b_gv_file) -ifneq ($(strip $(DEP_MODULES)),) - $(QUIET)echo -n " } ">> $@ -endif - $(QUIET)echo "\n} \n">> $@ - - -plotdep: $(TOP)/docs/$(E3_MODULE_NAME).gv -ifeq (, $(shell which dot)) - $(QUIET)echo "One should install graphviz in order to run this rule." -else - dot -T$(FILETYPE) $^ -o $(TOP)/docs/$(E3_MODULE_NAME).$(FILETYPE) -endif -ifeq (, $(shell which dot)) - $(QUIET)echo "One should install ImageMagick." - ls $(TOP)/docs/$(E3_MODULE_NAME).$(FILETYPE) -else - display $(TOP)/docs/$(E3_MODULE_NAME).$(FILETYPE)& -endif - -closeplot: -ifneq ($(strip $(shell ps aux |grep -E 'display.*$(FILETYPE)' | grep -v grep | awk '{print $$2}')),) - $(QUIET)ps aux |grep -E 'display.*$(FILETYPE)' | grep -v grep | awk '{print $$2}' | xargs kill -9 -endif - -outputPath: - $(QUIET)mkdir -p $(TOP)/docs - - # https://www.cmcrossroads.com/article/printing-value-makefile-variable PRINT.%: $(QUIET)echo $* = $($*)