Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • e3/wrappers/e3-require
  • waynelewis/e3-require
  • krisztianloki/e3-require
  • timokorhonen/e3-require
  • juntongliu/e3-require
  • roryclarke/e3-require
  • alfiorizzo/e3-require
  • lucasmagalhaes/e3-require
  • lucas-module-testgroup/e3-require
  • grzegorzkowalski/e3-require
  • anderslindh1/e3-require
11 results
Show changes
......@@ -3,14 +3,14 @@
.DEFAULT_GOAL := help
.PHONY: help default install uninstall build rebuild clean conf all
.PHONY: help default install uninstall build rebuild clean conf all prebuild
default: help
# # help is defined in
# # https://gist.github.com/rcmachado/af3db315e31383502660
help:
$(info --------------------------------------- )
$(info --------------------------------------- )
$(info Available targets)
$(info --------------------------------------- )
$(QUIET) awk '/^[a-zA-Z\-\_0-9]+:/ { \
......@@ -23,22 +23,21 @@ help:
print $$1 "\t" helpMsg; \
} \
{ helpMsg = $$0 }' \
$(MAKEFILE_LIST) | column -ts:
$(MAKEFILE_LIST) | column -ts:
## Install : $(E3_MODULE_NAME)
install: install_module install_links
install: install_module install_links vlibs
#install_module: uninstall
install_module: uninstall db
install_module: db
$(QUIET) $(SUDOBASH) '$(E3_MODULE_MAKE_CMDS) install'
## Uninstall : $(E3_MODULE_NAME)
uninstall: conf
$(QUIET) $(SUDOBASH) '$(E3_MODULE_MAKE_CMDS) uninstall'
$(SUDO) find $(E3_SITELIBS_PATH) -xtype l -delete
cellinstall: install_module
......@@ -48,17 +47,20 @@ celluninstall: conf
## Build the EPICS Module : $(E3_MODULE_NAME)
# Build always the Module with the EPICS_MODULES_TAG
build: conf checkout vlibs
build: conf checkout prebuild
$(QUIET) $(E3_MODULE_MAKE_CMDS) build
# Allows a module developer to run some commands before `build`
prebuild: conf
$(QUIET) $(E3_MODULE_MAKE_CMDS) prebuild
# Runs the debug command from driver.Makefile which outputs a lot of information about the build process
debug:
debug: conf
$(QUIET) $(E3_MODULE_MAKE_CMDS) debug
## Clean, build, and install the EPICS Module : $(E3_MODULE_NAME)
rebuild: clean build install
## Clean : $(E3_MODULE_NAME)
clean: conf
$(QUIET) $(E3_MODULE_MAKE_CMDS) clean
......@@ -66,13 +68,26 @@ clean: conf
all: init patch rebuild
## Copy $(E3_MODULE_MAKEFILE) into $(E3_MODULE_SRC_PATH)
conf:
conf: module_name_check
$(QUIET) install -m 644 $(TOP)/$(E3_MODULE_MAKEFILE) $(E3_MODULE_SRC_PATH)/
## We should check that the module name satisfies a few conditions before we go on.
module_name_check:
ifneq ($(shell echo $(E3_MODULE_NAME) | grep '^[a-z_][a-z0-9_]\+$$' &> /dev/null; echo $$?),0)
$(error E3_MODULE_NAME '$(E3_MODULE_NAME)' is not valid. It should consist only of lowercase letters, numbers, and underscores.)
endif
.PHONY: init git-submodule-sync $(E3_MODULE_SRC_PATH) checkout
ifeq (,$(strip $(EPICS_MODULE_TAG)))
E3_LOCAL_SOURCE:=1
endif
ifneq (,$(findstring -loc,$(E3_MODULE_SRC_PATH)))
$(warning DEPRECATED: Local source mode "-loc" is being deprecated. Please comment out the EPICS_MODULE_TAG to use local source mode.)
E3_LOCAL_SOURCE:=1
endif
ifeq ($(E3_LOCAL_SOURCE),1)
init:
$(QUIET) echo ">> You are in the local source mode."
$(QUIET) echo ">> Nothing happens."
......
......@@ -64,6 +64,7 @@ endif
_dep2: _dep1
$(foreach v, $(DEP_MODULES), $(info $(v) = $($(v)))) @#noop
_dep1:
$(QUIET)echo "require $(E3_MODULE_NAME),$(E3_MODULE_VERSION)"
$(QUIET)echo "< configured ..."
......
# 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
setting for a number of separate reasons to handle dependencies properly. Note the following behavior:
* `require module` - loads the latest numeric version of a given module.
* `require module,x.x.x` - loads the specific numeric version of a module, with the highest build number
* `require module,x.x.x-x` - loads a specific build number of the specified version of a module
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
* 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
to be specified.
* Installed modules will be installed together with a metadata file containing information about the
module and wrapper, including the git status of the wrapper/module, the latest tag/commit hash, and
the git url for the wrapper.
* Build numbers are now supported properly
* `iocsh.bash` will load `env.sh` at startup (which can be specified), which allows `IOCNAME` to be
specified at startup
* Added the ability to install header files while preserving directory structure instead of flattening
all header files into a single module/version/includes directory.
* Using `EPICS_MODULE_TAG` to detect if we are using the local source code vs. git submodule. Note that
the old -loc is still supported, but will be deprecated in a future release.
* 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
* 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
* `make debug` can now be run before running `make build`
* Patches that involve renaming files can be used
* When using the "cellinstall" mode to install modules for local testing, sudo has been removed.
* When using "cellinstall", sequencer is loaded correctly
* When using "cellinstall", module include files are located correctly
* `iocsh.bash` now supports multiple directories being specified with the -l (local) flag as a source of loading modules
* Fixed an error where mounting the NFS E3 in a location other than `/epics` would result in failed builds
* Assorted minor typos in scripts
* Re-added functionality to have `iocsh.bash` automagically source `setE3Env.bash`.
# 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
"required" (pun only semi-intended). That is, a startup script can simply include a statement of the
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
* 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
* Fixed issue where a second user running `iocsh.bash` on a machine would be unable to create the temporary
startup script
Subproject commit 7650f8d38f2a423a3466a0aaaae94c0709030ca6
Subproject commit d2a89ffee8d5b40f1b37cf0be378790f72cf71f6
......@@ -40,16 +40,7 @@ SOURCES += require.c
DBDS += require.dbd
SOURCES += runScript.c
DBDS += runScript.dbd
# PSI split expression at 0b6d1dd. So, require.Makefile should
# handel the different require source files with and without
# expr.c in the same way. Thus, I added the additional logic
# to handle to cover entire cases.
# If there is no expr.c, it is now safe to ignore it
# Friday, May 11 21:58:24 CEST 2018, jhlee
expr_src=expr.c
SOURCES += $(filter $(expr_src), $(wildcard *.c))
SOURCES += expr.c
##
......