Privacy and Security Notice

EPICS Application System Architectures used at Jefferson Lab

EPICS Application System Architectures used at Jefferson Lab


Contents

JLAB EPICS HOME Page


Requirements

  1. Development does not impact operations
  2. The latest change to operations can be easily rolled back by a single application or all the applications on one ioc
  3. Sources to version in operation are in CVS
  4. There exists a semi-stable integration test area
  5. Support multiple versions of EPICSsystem and the applications
  6. Minimal typing ( e.g. short but meaningful path name )
  7. Backups should be tagged with the information about rollback implications ( e.g. can't roll back due to hardware changed )
  8. Valid log of changes


Multi-version EPICS Application System Architecture

CEBAF EPICS application system consists of the following major areas pointed by a set environment variables:

For each epics release, there is a file named .setup in which the locations of each area and the proper pathes are defined. A setup script is used to read the .setup file for one epics release (specified as a parameter of the setup script) and set up the proper pathes and the environment variables. A set of tools have been developed to support the architechture.


Application Development/Integration Test Area

The tree structures for the epics application development area and integration test area are identical. The locations of these two areas are specified in two evironment variables, $LLAPP and $LLAPPIT.


Products Area for Development/Operation

The tree structures for the development product area and the operational product area are identical. The locations of these two areas are specified in two evironment variables, $PROD_DIR_DVL and $PROD_DIR_OP.


IOC Boot Script Areas for Test/Operation

The tree structures for the testing and operational IOC boot script areas are identical. The locations of these two areas are specified in two evironment variables, $DVLIOCS and $OPIOCS.


Tools to Support the Architechtures

Tools Related to Application Area ($LLAPP/$LLAPPIT)

Tools Related to Product Area ($PROD_DIR_DVL/$PROD_DIR_OP)

Tools Related to IOC Boot Script Area ($DVLIOCS/$OPIOCS)

Tools to Query the Information

Other Tools



addAppIOC - add an epics application to be loaded on an IOC Usage: addAppIOC app-name app-ver ioc-name dvl | op where app-name - an existing application name app-ver - an existing version number of an application ioc-name - an existing ioc name Example: addAppIOC system 2-4 iocin1 op Description: - add systemV and startup.system softlinks in $OPIOCS/iocin1 - the systemV will point to epicsV/system/2-4 - the startup.system will point to systemV/vxcmd/startup.system.in1
applGetver - get a tagged version of app-name in the area Usage: applGetver app-name version dvl | it where app-name - an application name, ex. fsd, rf, ... version - an application version number(see version standard) Example: applGetver fsd 1-0 it Description: - create a new directory fsd/1-0 under $LLAPPIT - cvs checkout fsd application source with fsd-1-0 tag under the directory - cvs checkout vxcmd source with fsd-1-0 tag under $PROD_DIR_OP/fsd/1-0 - setup epics application development environment
applNewver - create a new version of app-name in the area Usage: applNewver app-name version dvl | it where app-name - an application name, ex. fsd, rf, ... version - an application version number(see version standard) Example: applNewver fsd 1-0 dvl Description: - create a new directory fsd/1-0 under $LLAPP - cvs checkout the most recent source of fsd application under the directory - setup epics application development environment
appRPT - list all the databases and the modules loaded on all the IOCs Usage: appRPT app-name dvl | op where app-name -- an existing application name Example: appRPT rf op Description: - list appV and epicsV on the IOCs - the database names and the module names for the app-name on the IOCs
chgVer - change versions for the application(s) on the IOC(s) Usage: chgVer "app-name" "ioc-name" version dvl | [op] where app-name - an existing application name, ex. fsd, rf, ... ioc-name - an existing ioc name, ex. iocea1, ... version - an application version number(see version standard) Example: chgVer "myapp" "iocnl*" 1-2 Description: - backup current version numbers of myapp and epicsV on the specified iocs - change myappV on the specified iocs to 1-2 Note: - a wildcard * can be used in app-name and ioc-name - both app-name and ioc-name need be specified in the double quotes - the backup file is saved in $EPICS/appSRcebaf/data directory
delApp - delete an epics application tree, vxcmd tree in the development area and remove the module definitions in CVS for an application Usage: delApp app-name where app-name - an existing application name which was created by mkNewapp Example: delApp myoldapp Description: - remove myoldapp module definitions in CVS - delete myoldapp directory under $LLAPP - delete myoldapp vxcmd directory under $PROD_DIR_DVL - remove myoldapp and its vxcmd directory from CVS repository - remove myoldappV and startup.myoldapp softlinks in $DVLIOCS Note: - only the application which was created by mkNewapp can be deleted by delApp
delAppIOC - delete information of an epics application on one IOC Usage: delAppIOC app-name ioc-name dvl | op where app-name - an existing application name ioc-name - an existing ioc name Example: delAppIOC myapp iocin1 op Description: - remove myappV and startup.myoldapp softlinks in $OPIOCS/iocin1 Note: - a log entry will be made in $EPICS/appSRcebaf/log/delAppIOC.log
epicsVRPT - list the current version of each IOCs Usage: epicsVRPT dvl | [op] Example: epicsVRPT Description: IOC Name EPICS Version epicsV Created -------- ------------- -------------- iocctf(mv167) beta8.6 Mar 22 09:03 keesee iocea1(mv167) beta8.6 Feb 22 12:01 sally iocea2(mv167) beta8.6 Feb 22 12:04 sally iocea3(mv167) beta8.6 Feb 22 12:05 sally iocea4(mv167) beta8.6 Feb 22 12:07 sally iocea5(mv167) beta8.6 Feb 22 13:04 hofler iocea6(mv167) beta8.6 Feb 22 12:11 sally iochla(mv167) beta8.6 Mar 15 11:10 bickley iochlb(mv167) beta8.3 Jul 17 1995 epics iochlc(mv167) beta8.6 Feb 22 12:09 higgins . . . . . .
installEpics - install epics system compiled products in the developemnt and/or operational product area(s) Usage: installEpics area opt where area - op | dvl | all opt - mv162 -- only install mv162 objs mv167 -- only install mv167 objs sdr -- only install default.sdrSum file all -- install all of the above Example: installEpics op all Description: - backup current epics product directory in op area - install epics mv162 and mv167 compiled objects in $PROD_DIR_OP/epics - install defaut.sdrSum file in $PROD_DIR_OP/epics/db - a notified e-mail is sent to epics@cebaf.gov
lsVer - list appV for all the specified app-names on the specified IOCs Usage: lsVer "app-name" "ioc-name" where app-name -- an application name or a pattern of application names ioc-name -- an IOC name or a pattern of IOC names Example: lsVer "system" "*nl*" Description: iocnl1 (mv167) beta8.5 Jan 26 13:15 bookwalt ------------------------------------------------------------------------- system 2-2 Feb 18 14:15 epics iocnl1b (mv167) beta8.5 Jan 26 13:23 bookwalt ------------------------------------------------------------------------- system 2-2 Feb 18 14:15 epics iocnl2 (mv167) beta8.5 Jan 26 14:03 bookwalt ------------------------------------------------------------------------- system 2-2 Feb 18 14:15 epics iocnl3 (mv167) beta8.6 Feb 22 11:53 sally ------------------------------------------------------------------------- system 2-3 Feb 20 08:32 bickley iocnl4 (mv167) beta8.5 Jan 26 14:04 bookwalt ------------------------------------------------------------------------- system 2-2 Feb 18 14:15 epics iocnl5 (mv167) beta8.5 Jan 26 14:09 bookwalt ------------------------------------------------------------------------- system 2-2 Feb 18 14:15 epics
mkNewapp - create a new epics application in the development area Usage: mkNewapp app-name [ioc-name] where app-name - an application name, ex. fsd, rf, ... ioc-name - an existing ioc name in $DVLIOCS area Example: mkNewapp mynewapp ioct1 Description: - create a new directory mynewapp/1-0 under $LLAPP - create modules for mynewapp application in CVS - setup epics application development environment for mynewapp - initial import application tree and vxcmd tree to CVS for mynewapp - create mynewappV, startup.mynewapp softlinks in $DVLIOCS/ioct1 NOTE: - startup.mynewapp entry is NOT added in startup.all by mkNewapp - the standard database and C module names are edited in the startup.mynewappt1 Example: for application FSD, FSD.database for standard database name FSD.o for standard C module name
mkNewIOC - create a new IOC boot script area for a specified IOC Usage: mkNewIOC ioc-name ioc-type dvl | op where ioc-name - a new IOC name ioc-type - the new IOC type, ex. mv162 or mv167 Example: mkNewIOC mynewioc mv167 op Description: - create a sub-directory $OPIOCS/mynewioc for its boot scripts - epicsV is created to point to $EPICS
saveVer - save specified app-nameV and epicsV softlinks for all the specified ioc-name Usage: saveVer "app-name" "ioc-name" dvl | op where app-name -- application name pattern in quotes ioc-name -- ioc name pattern in quotes Example: saveVer "*" "iocin1" op Description: - save all the application versions and the epics version currently on iocin1 - wildcard * is supported - version snapshot for the IOCs are saved in $EPICS/appSRcebaf/data/saveVer.yy-mm-dd-hh-mm-ss
vxcmdGetver - get a specified version of vxcmd source for an application Usage: vxcmdGetver app-name version dvl | op where app-name -- an existing application name version -- an existing tagged version (see version standard) Example: vxcmdGetver myapp 2-3 op Description: - prompt to confirm to overwrite vxcmd if it is exits in the area - check if the specified app-name exists in CVS - prompt to continue if there is no file tagged with myapp-2-3 in vxcmd source - put the source in $PROD_DIR_OP/app-name/version/vxcmd
vxcmdNewver - get a copy of the most recent vxcmd source in CVS for a new version of an application Usage: vxcmdNewver app-name version dvl | op where app-name -- an existing application name version -- a number for a new version (see version standard) Example: vxcmdNewver myapp 2-3 op Description: - prompt to confirm to overwrite vxcmd if it is exits in the area - check if the specified app-name exists in CVS - put a new version of the source in $PROD_DIR_OP/app-name/version/vxcmd Note: - it does NOT check if the version exists or not


Standards

Application Version Numbering Standards

Application Version Numbering Standard: Major#-Minor#

Application Makefile Standards

Makefiles for building databases are required to meet the following standards:

Makefiles for building sequencers, subroutines and vxWorks tasks are required tomeet the following standards:



SURA/CEBAF, MS85A
12000 Jefferson Av
Newport News, VA 23606
U.S.A

E-mail: tang@jlab.org

Phone: (757) 269-7239
FAX: (757) 269-7049