diff --git a/CHANGELOG.md b/CHANGELOG.md index 1220ae911a7b5cd638a8418bde6f1b365f3e676b..4b62aed6006e1e62167e0c60a136cbc074003e20 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,9 @@ * Removed all references to `sudo`. If `sudo` needs to be used, it should be done manually. * Fixed issue with module name checking which caused modules to fail to build on certain linux distributions +## Other changes +* Removed `require` as a submodule and merged it into `e3-require`. + # 3.3.0 3.3.0 is a relatively major release with many bugfixes and a number of features added based on consultation diff --git a/README.md b/README.md index 704f83602b512f04d26dbe2e6f86bc9f8d259ce5..4570fc5bfdd9f2945cb56a643f068fd0c1c1a5f5 100644 --- a/README.md +++ b/README.md @@ -1,103 +1,47 @@ # e3-require +The e3 version of `require` based on the PSI version of (`require`)[https://github.com/paulscherrerinstitute/require]. +There are significant diferences between the two modules, significant enough that it is not proper to call it a fork +any longer. -## Setup +At its heart, `require` performs: +* Dynamic loading of EPICS modules and rudimentary dependency resolution +* Loading of IOCs using a custom startup script calling `softIocPVA` +* Building of EPICS modules into standardized packages -``` -e3-require (master)$ make init -e3-require (master)$ make vars -e3-require (master)$ make build -e3-require (master)$ make install -``` +For more documentation on this, please see (e3.pages)[http://e3.pages.esss.lu.se/design/2_require.html]. -## Update shell environment -``` -e3-require (master)$ make requireconf -``` +## Structural differences between PSI require and ESS require -## Execute iocsh.bash +The main differences between the two is that ESS `require` includes a number of configuration files defining special +build targets for EPICS modules. For example, the following targets are defined. +* `make build` - Runs the custom build process defined in `require`. +* `make vars` - Displays a number of custom build variables e.g. install locations, etc. +* `make debug` - Runs a debug build process, displaying information about the current build +* `make cellinstall` - Installs the module in a local directory, e.g. for testing purposes +For more special rules, look at the files in [configure/modules]. -``` - e3-require (master)$ source tools/setE3Env.bash - -Set the ESS EPICS Environment as follows: -THIS Source NAME : setE3Env.bash -THIS Source PATH : /home/jhlee/e3/e3-require/tools -EPICS_BASE : /epics/base-3.15.5 -EPICS_HOST_ARCH : linux-x86_64 -E3_REQUIRE_LOCATION : /epics/base-3.15.5/require/3.0.0 -PATH : /epics/base-3.15.5/require/3.0.0/bin:/epics/base-3.15.5/bin/linux-x86_64:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/home/jhlee/bin -LD_LIBRARY_PATH : /epics/base-3.15.5/lib/linux-x86_64:/epics/base-3.15.5/require/3.0.0/lib/linux-x86_64:/epics/base-3.15.5/require/3.0.0/siteLibs/linux-x86_64 - -Enjoy E3! - -jhlee@faiserver: e3-require (master)$ iocsh.bash -# -# Start at "2018-W35-Aug28-0012-23-CEST" -# -# Version information: -# European Spallation Source ERIC : iocsh.bash (v0.3.1-6690f8a.PID-9225) -# -# --->--> snip -->--> -# Please Use Version and other environment variables -# in order to report or debug this shell -# -# HOSTDISPLAY="" -# WINDOWID="54535878" -# PWD="/home/jhlee/e3/e3-require" -# USER="jhlee" -# LOGNAME="jhlee" -# EPICS_HOST_ARCH="linux-x86_64" -# EPICS_BASE="/epics/base-3.15.5" -# E3_REQUIRE_NAME="require" -# E3_REQUIRE_VERSION="3.0.0" -# E3_REQUIRE_LOCATION="/epics/base-3.15.5/require/3.0.0" -# E3_REQUIRE_BIN="/epics/base-3.15.5/require/3.0.0/bin" -# E3_REQUIRE_DB="/epics/base-3.15.5/require/3.0.0/db" -# E3_REQUIRE_DBD="/epics/base-3.15.5/require/3.0.0/dbd" -# E3_REQUIRE_INC="/epics/base-3.15.5/require/3.0.0/include" -# E3_REQUIRE_LIB="/epics/base-3.15.5/require/3.0.0/lib" -# E3_SITEAPPS_PATH="/epics/base-3.15.5/require/3.0.0/siteApps" -# E3_SITELIBS_PATH="/epics/base-3.15.5/require/3.0.0/siteLibs" -# E3_SITEMODS_PATH="/epics/base-3.15.5/require/3.0.0/siteMods" -# EPICS_DRIVER_PATH="/epics/base-3.15.5/require/3.0.0/siteMods" -# EPICS_CA_AUTO_ADDR_LIST="no" -# EPICS_CA_ADDR_LIST="10.0.6.172 10.0.6.60" -# PATH="/epics/base-3.15.5/require/3.0.0/bin:/epics/base-3.15.5/bin/linux-x86_64:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/home/jhlee/bin" -# LD_LIBRARY_PATH="/epics/base-3.15.5/lib/linux-x86_64:/epics/base-3.15.5/require/3.0.0/lib/linux-x86_64:/epics/base-3.15.5/require/3.0.0/siteLibs/linux-x86_64" -# --->--> snip -->--> -# -# Set REQUIRE_IOC for its internal PVs -epicsEnvSet REQUIRE_IOC "E3R:FAISERVER" -# -# Set E3_IOCSH_TOP for the absolute path where iocsh.bash is executed. -epicsEnvSet E3_IOCSH_TOP "/home/jhlee/e3/e3-require" -# -# -# Load require module, which has the version 3.0.0 -# -dlload /epics/base-3.15.5/require/3.0.0/lib/linux-x86_64/librequire.so -dbLoadDatabase /epics/base-3.15.5/require/3.0.0/dbd/require.dbd -require_registerRecordDeviceDriver -Loading module info records for require -# -# Set the IOC Prompt String One -epicsEnvSet IOCSH_PS1 "6690f8a.faiserver.9240 > " -# -# -iocInit -Starting iocInit -############################################################################ -## EPICS R3.15.5-E3-3.15.5-patch -## EPICS Base built Aug 27 2018 -############################################################################ -iocRun: All initialization complete -6690f8a.faiserver.9240 > +The main parts that we have taken from PSI `require` are `require.c` and `driver.makefile`, which respectively +load modules dynamically at run-time, and which run the custom build process. However, both of these have been +modified significantly for the purposes of e3. +Furthermore, we have added the custom startup script `iocsh.bash` which sets up the IOC's environment before +running `softIocPVA` from EPICS base. +## Building `require` +In order to build require, you must first have EPICS base installed. After that, you must configure `CONFIG_MODULE` +and `RELEASE` to specify the require version and the location of EPICS base. Having done so, run +```bash +$ make build +$ make install ``` +To test your build, run +```bash +$ source ${EPICS_BASE}/require/${E3_REQUIRE_VERSION}/bin/setE3Env.bash +$ iocsh.bash +``` -## TODO +which should start up an IOC and load require.