Following the corresponding html(local copy) section Building EPICS base (Unix and Win32) provided in the download area, which is titled Installation Instruction, do the following:
0.0.2.1 Checks
Check the supported compilers
Check the software requirements
Software requirements of version %EPICSBASE_VERSION%
GNU make
You must use GNU make, gnumake, for any EPICS builds. Set your path so that a gnumake version 3.81 or later is available.
gcc
You must have gcc version 3.4.2 or later.
Perl
You must have perl version 5.8 or later installed. The configure files do not specify the perl full pathname. You need the perl executable in your search path.
Since releases and versions are evolving and to be able to follow this trend, the normal user logged in to Linux system at GSI can rely on having the following environment variables available:
GSI_OS_FLAVOR
GSI_OS_VERSION
GSI_COMPILER_CC
Based on this the installations of epics can be found in directories based on the following scheme:
%GSI_EPICS_OS_DIR_TREE%
At the moment /u/epics/ holds all EPICS versions without considering this scheme, but will be in future:
%CREATE_HOME_EXPORT{CREATE_HOME_EXPORT_LIST="%EPICS_VERSION_NAME% (assuming %EPICSBASE_VERSION% to be set), %EPICS_HOME_DIR_NAME%" CREATE_HOME_EXPORT_DIR="home"}%
The epics script is a global script (used at GSI) to set the EPICS settings.
It relies on having ((symbolic) links to) myepicslogin.sh and epicslogin.sh in the EPICS versions home directories (installation, see below).
Usually it is only installed once for all EPICS distributions and is told (by default values, environment variables, options) where to look for the installations.
By just typing/sourcing epics (which is at GSI included in the default path) practical all settings are done.
<div style="text-align:right"><a style="font-size:smaller" href="/edit/Epics/UsageOfEpicsScript">edit</a></div>
epics has to be sourced as is, i.e. called with a leading dot
$> . epics -h
gives all information on options:
epics [Options] [version]
sets environment variables for EPICS
* changes to corresponding EPICS HOME directory:
[<HOME>/<PREFIX><VERSION>, default: /u/epics/EPICS-3.14.9]
* and calls the (local) login script for this version
* relies on having a (local) login script ( default: ./myepicslogin.sh )
in the home directory of the corresponding EPICS installation
* optionally might execute (source) scripts before and after the call to the login script
* defaults:
* before script: [ not set ]
* after script: [ not set ]
arguments:
version: EPICS version (default: "3.14.9")
options:
-h : prints this Help
-l : list all available versions in home directory /u/epics
-s : stay at $EPICS_HOME directory
-q : quiet no output, but error messages
-v : verbose mode
-d : debug mode, just echo no action
-H argument : home directory of several EPICS versions
(default: "/u/epics")
-P argument : version prefix for PREFIXversion
(default: "EPICS-")
-L argument : login script looked for in $EPICS_HOME
(default: "./myepicslogin.sh")
-B argument : script to be sourced before calling login script
(default: "[ not set ]")
-A argument : script to be sourced after calling login script
(default: "[ not set ]")
LOCAL environment variables:
EPICS_LOCAL_HOME:
the default home directory of the several EPICS versions can be modified
by setting the environment variable
EPICS_LOCAL_HOME [at the moment not set]
EPICS_LOCAL_DIR_PREFIX:
the default search prefix for directories in /u/epics can be modified
by setting the environment variable
EPICS_LOCAL_DIR_PREFIX [at the moment not set]
EPICS_LOCAL_LOGIN_SCRIPT:
the default call to the (local) login script
in the epics installation directories can be modified
by setting the environment variable
EPICS_LOCAL_LOGIN_SCRIPT [at the moment not set]
EPICS_LOCAL_DEFAULT_VERSION:
the EPICS version can be modified
by setting the environment variable
EPICS_LOCAL_DEFAULT_VERSION [at the moment not set]
EPICS_LOCAL_SCRIPT_BEFORE_LOGIN:
the local script default for a script sourced befored login can be modified
by setting the environment variable
EPICS_LOCAL_SCRIPT_BEFORE_LOGIN [at the moment not set]
EPICS_LOCAL_SCRIPT_AFTER_LOGIN:
the local script default for a script sourced after login can be modified
by setting the environment variable
EPICS_LOCAL_SCRIPT_AFTER_LOGIN [at the moment not set]
you have to call this script with a leading '. ', i.e. source it
--> i.e.: '. epics'
The setup script epics relies on other scripts in the EPICS versions home directories.
Here you can see how those files are invoked:
Typically most of those files are just links to other places, except for myepicslogin.sh. Based on the basic setup (see below) an adminstrator can add / modify / tweak at this recommended place.
. epics [ -Options ] [ <version> ]
general login script, able to call several EPICS installations
1. optional: <before script>
source <before script>
(set by environment variable: EPICS_LOCAL_BEFORE_SCRIPT, or overwritten by option -B <Path><bash script> )
2. <loginScript>"myepicslogin.sh"
source <loginScript>
local, i.e. to the single EPICS installation, login script
1 Change to the directory ==$%EPICS_ALL_EPICS_TOP_DIR_NAME%/bin and create symbolic links to ${%EPICS_ALL_EPICS_TOP_DIR_NAME%}/tools for at least the ${%EPICS_ALL_EPICS_TOP_DIR_NAME%}/tools/bin/epics script.
As superuser root you could create a soft link from /usr/local/bin to your epics script. or add $%EPICS_ALL_EPICS_TOP_DIR_NAME%/bin to the PATH variable:
epicslogin.sh has to be sourced as is, i.e. called with a leading dot
$> . ./epicslogin.sh
The option ' -h ' or anything else gives a help with all information on options and syntax:
$> ./epicslogin.sh -h
epicslogin.sh [Options] [version]
-- sets environment variables for EPICS
-- calls the Site Profile: set via "-P" or default: "${baseDir}/startup/Site.profile"
--
-- version: EPICS version
-- (default: "3.14.10")
-- options:
----- -v : verbose mode
----- -h : prints this help
----- -H argument : sets $EPICS_HOME to argument
----- (default: "${homeofuser}/EPICS")
----- -B argument : sets $EPICS_BASE to argument or
----- if argument is a relative path it extends to $EPICS_HOME/argument
----- (default: "base-${epicsversion}")
----- -P argument : sets Site Profile to be sourced to argument
----- (default: "${baseDir}/startup/Site.profile"
----- where $basedir behaves like EPICS_BASE
----- as described for option "-B")
----- -A argument : sets path to necessary helper script "fcn_addtopath.bash":
----- (default: "/u/epics/bin/fcn_addtopath.bash")
-----
----- if MY_EPICS_BASE (="") is externally set as base directory:
----- case "option -B not used":
----- EPICS_BASE set to MY_EPICS_BASE
----- case "option -B used:
----- MY_EPICS_BASE set to EPICS_BASE
-----
----- version: version of EPICS
----- (used in the path <epicshome>/base-version)
-----
-- you have to call this script with a leading '. '
--> i.e.: '. epicslogin.sh'
thus, e.g.
. ./epicslogin.sh -v -H %EPICS_HOME_DIR_DUMMY% -B %EPICS_BASE_DIRECTORY_DUMMY% -A %EPICS_HOME_DIR_DUMMY% %EPICS_VERSION_DUMMY%
gives
sourcing %EPICS_HOME_DIR_DUMMY%/EPICS-%EPICS_VERSION_DUMMY%/base-%EPICS_VERSION_DUMMY%/startup/Site.profile
EPICS_HOME set to %EPICS_HOME_DIR_DUMMY%/EPICS-%EPICS_VERSION_DUMMY%
EPICS_BASE set to %EPICS_HOME_DIR_DUMMY%/EPICS-%EPICS_VERSION_DUMMY%/base-%EPICS_VERSION_DUMMY%
EPICS_EXTENSIONS set to %EPICS_HOME_DIR_DUMMY%/EPICS-%EPICS_VERSION_DUMMY%/extensions
EPICS_MODULES set to %EPICS_HOME_DIR_DUMMY%/EPICS-%EPICS_VERSION_DUMMY%/modules
PSPRINTER set to lp
EPICS_DISPLAY_PATH set to %EPICS_HOME_DIR_DUMMY%/EPICS-%EPICS_VERSION_DUMMY%/extensions/medm/adl
ORBITSCREENHOME set to %EPICS_HOME_DIR_DUMMY%/EPICS-%EPICS_VERSION_DUMMY%/extensions
EPICS_AR_PORT set to 7002
added %EPICS_HOME_DIR_DUMMY%/EPICS-%EPICS_VERSION_DUMMY%/extensions/javalib behind CLASSPATH
EPICS_SNCSEQ_HOME set to %EPICS_HOME_DIR_DUMMY%/EPICS-%EPICS_VERSION_DUMMY%/modules/seq
EPICS_HOST_ARCH set to linux-x86
added %EPICS_HOME_DIR_DUMMY%/EPICS-%EPICS_VERSION_DUMMY%/extensions/bin/linux-x86 in front of PATH
added /u/epics/bin:%EPICS_HOME_DIR_DUMMY%/EPICS-%EPICS_VERSION_DUMMY%/base-%EPICS_VERSION_DUMMY%/bin/linux-x86 in front of PATH
EPICS_CA_ADDR_LIST set to <hostname>
EPICS_CA_AUTO_ADDR_LIST set to NO
--> Created for each variable EPICS_* a copy EPICS_*_COPY
to be used in CONFIGURE scripts where EPICS_ variables might be overwritten
0.0.2.3.1.8 To install epicslogin.sh (fcn_addtopath.bash, uniqpaths) ...
0.0.2.3.1.13 Mandatory soft links - (epicslogin.sh, fcn_addtopath.bash, uniqpaths)
Finally you need to set soft links for the scripts in your %EPICS_HOME_DIR_DUMMY%:
cd ${%EPICS_HOME_DIR_NAME%:?"undefined"} && %FOREACH{"script" in="epicslogin.sh, fcn_addtopath.bash, uniqpaths"}%
[ -f ${%EPICS_ALL_EPICS_TOP_DIR_NAME%?:"undefined"}/bin/$script ] && ln -s $%EPICS_ALL_EPICS_TOP_DIR_NAME%/bin/$script . || echo "$script" not available 1>&2 %NEXT{"script"}%
To simplify it is recommended to create this short script in the <EPICS Home Directory> containing all settings, e.g. myepicslogin.sh and modify it for your needs:
#!/bin/bash
myepicslogin_scriptname=myepicslogin.sh
#set -x -v #uncomment for debugging
# make sure script is sourced
if [ ${0##*/} = $myepicslogin_scriptname ]
then
echo script \`${myepicslogin_scriptname}\' has to be sourced, i.e. called with a leading \`. $myepicslogin_scriptname\'
exit -1
fi
unset myepicslogin_scriptname
. ./epicslogin.sh -v -H <EPICS Home Directory> -B <EPICS Base Directory> -A <Fcn Helper Bin Directory>/fcn_addtobath.bash -P <EPICS Base Directory>/startup/<startup Script>
where <Your Host's Architecture> can be determined via the script Arch (sh script) or EpicsHostArch.pl (perl script) in the directory <EPICS Base Directory>/startup
so that you could also write:
$> export EPICS_HOST_ARCH=$(EpicsHostArch)
Note in addition the other variables mentionend in the README fimale's section Set environment variables.
On some system you might face the problem that the compiling stops, due to the missing library libcurses. For an (elegant) solution see the EPICS tech-talk threads:
cd %EPICSBASE_MYHOMEDIR% && . epics %EPICSBASE_VERSION && cd $EPICS_BASE && make distclean && make -j && cd %EPICSBASE_MYHOMEDIR% && . epics %EPICSBASE_VERSION
cd %EPICSBASE_MYHOMEDIR% && . epics %EPICSBASE_VERSION && cd $EPICS_BASE && make distclean && make -j && cd %EPICSBASE_MYHOMEDIR% && . epics %EPICSBASE_VERSION
Creation of a new IOC Application named <My Example Application>:
$> mkdir <top> $> cd <top> $> $EPICS_BASE/bin/${EPICS_HOST_ARCH}/makeBaseApp.pl -t example <My Example Application> $> $EPICS_BASE/bin/${EPICS_HOST_ARCH}/makeBaseApp.pl -i -t example <My Example Application> $> make $> cd iocBoot/ioc<My Example Application>
Starting the IOC: (<Target> (e.g.: linux-x86, or ${EPICS_HOST_ARCH}), <My Example Application>, <Top>, <Epics Base Directory> and <User> have been replaced in the output )
$> ../../bin/<Target>/<My Example Application> st.cmd
#!../../bin/<target>/<My Example Application>
## You may have to change <My Example Application> to something else
## everywhere it appears in this file
< envPaths
epicsEnvSet(ARCH,"<Target>")
epicsEnvSet(IOC,"ioc<My Example Application>")
epicsEnvSet(TOP,"<top>")
epicsEnvSet(EPICS_BASE,"<Epics Base Directory>")
cd <top>
## Register all support components
dbLoadDatabase("dbd/<My Example Application>.dbd")
<My Example Application>_registerRecordDeviceDriver(pdbbase)
## Load record instances
dbLoadTemplate "db/userHost.substitutions"
dbLoadRecords("db/dbSubExample.db","user=<user>Host")
## Set this to see messages from mySub
#var mySubDebug 1
cd <top>/iocBoot/ioc<My Example Application>
iocInit()
Starting iocInit
############################################################################
## EPICS R3.14.9 $R3-14-9$ $2007/02/05 16:31:45$
## EPICS Base built Aug 6 2007
############################################################################
iocInit: All initialization complete
## Start any sequence programs
#seq sncExample,"user=<user>Host"
epics>
Set SEQ_ABSTRACT = [...] The State Notation Language (SNL), is a domain specific programming language that smoothly integrates with and depends and builds on EPICS base. This project defines SNL and provides an implementation, consisting of the SNL compiler and runtime system.
[...] The State Notation Language (SNL), is a domain specific programming language that smoothly integrates with
and depends and builds on EPICS base. This project defines SNL and provides an implementation,
consisting of the SNL compiler and runtime system.
Set IPAC_DOCS_TITLE = drvIpac - Industry Pack Driver
Set IPAC_ID = IPAC Carrier and Module Drivers Version: 2.15 (2020-08-07)
Set IPAC_KEY = IPAC
Set IPAC_ID = EPICS Ipac Module 2.15
Set IPAC_RELEASE_ADDONS = true
Set IPAC_SUPPORT =
Set IPAC_NOSUPPORT =
Set IPAC_DBD = devTip810.dbd drvIpac.dbd IP520.dbd tyGSOctal.dbd
Set IPAC_LIBS = Ipac
Set IPAC_ABSTRACT = [...] ipac, also previously known as drvIpac, a collection of software mainly for vxWorks and RTEMS to drive one or more Industry Pack (IP) carrier boards and a small set of IP I/O modules. Other modules exist that use the carrier interface defined here to drive other I/O modules. [...] The source code and some Wiki pages for this module are now maintained at github.com, start reading at the ipac Wiki Home Page or browsing the code on the master branch.
[...] ipac, also previously known as drvIpac, a collection of software mainly for vxWorks and RTEMS
to drive one or more Industry Pack (IP) carrier boards and a small set of IP I/O modules. Other
modules exist that use the carrier interface defined here to drive other I/O modules. [...]
The source code and some Wiki pages for this module are now maintained at github.com, start reading
at the ipac Wiki Home Page or browsing the code on the master branch.
Set AUTOSAVE_DOCS_TITLE = autosave module Documentation
Set AUTOSAVE_ID = autosave Version: 5-10-1 (2020-08-11)
Set AUTOSAVE_ID = autosave 5-10-1
Set AUTOSAVE_RELEASE_ADDONS = :
Set AUTOSAVE_DBD = as.dbd
Set AUTOSAVE_LIBS = autosave
Set AUTOSAVE_ABSTRACT = Autosave automatically saves the values of EPICS process variables (PVs) to files on a server, and restores those values when the IOC (Input-Output Controller — the business end of EPICS) is rebooted.
Autosave automatically saves the values of EPICS process variables (PVs) to files on a server,
and restores those values when the IOC (Input-Output Controller — the business end of EPICS) is rebooted.
Set ASYN_DOCS_TITLE = asynDriver: Asynchronous Driver Support
Set ASYN_ID = asynDriver: Asynchronous Driver Support Version: 4.40 (2020-08-10)
Set ASYN_KEY = ASYN
Set ASYN_ID = asynDriver 4.40
Set ASYN_RELEASE_ADDONS = :
Set ASYN_SUPPORT = SEQ,CALC,SSCAN
Set ASYN_NOSUPPORT = SUPPORT,IPAC
Set ASYN_DBD = asyn.dbd drvAsynIPPort.dbd drvAsynSerialPort.dbd
Set ASYN_LIBS = asyn
Set ASYN_ABSTRACT = This is a general purpose facility for interfacing device specific code to low level drivers. asynDriver allows non-blocking device support that works with both blocking and non-blocking drivers.
optional asynDriver provides a driver for the GreenSprings Industry Pack IP488 module and the octalUART. If this support is desired then IPAC support is required when building asynDriver. The configure/RELEASE file has a comment about how to include IPAC support. *See IPAC for installing IPAC before*, if not yet done.
This is a general purpose facility for interfacing device specific code to low level drivers. asynDriver allows non-blocking device support that works with both blocking and non-blocking drivers.
Set MODBUS_ID = modbus (ASYN) Version: 3-1 (2020-08-12)
Set MODBUS_KEY = MODBUS
Set MODBUS_ID = modbus 3-1
Set MODBUS_RELEASE_ADDONS = :
Set MODBUS_SUPPORT = ASYN
Set MODBUS_NOSUPPORT = SUPPORT
Set MODBUS_DBD = modbus.dbd
Set MODBUS_LIBS = modbus modbusSupport
Set MODBUS_ABSTRACT = An EPICS module that supports communication with Programmable Logic Controllers (PLCs) and other devices via the Modbus protocol over TCP, serial RTU, and serial ASCII links.
The modbus software provides a layer between standard EPICS asyn device support, and the EPICS asyn TCP/IP or serial port driver.
MODBUS is an application layer messaging protocol, positioned at level 7 of the OSI model, that provides client/server communication between devices connected on different types of buses or networks. It is typically used for communication with I/O systems, including Programmable Logic Controllers (PLCs).
An EPICS module that supports communication with Programmable Logic Controllers (PLCs) and other devices via the Modbus protocol over TCP, serial RTU, and serial ASCII links.
Make sure that the asyn library and optionally the calc module can be found, i.e. by adding ASYN and (if installed) CALC or SYNAPPS to your <top>/configure/RELEASE file:
ASYN = $(SUPPORT)/asyn
CALC = $(SUPPORT)/calc
requires itself SSCAN to be defined: SSCAN = $(SUPPORT)/sscan
If you want to enable regular expression matching, you need the PCRE package. For most Linux systems, it is already installed. In that case add the locations of the PCRE header and library to your RELEASEfile:
PCRE_INCLUDE = /usr/include
PCRE_LIB = /usr/lib/x86_64-linux-gnu
If you have several target architectures to be supported you could add new target/host architecture specific RELEASE files in the = <top>/configuredirectory:
Set STREAMDEV_ABSTRACT = StreamDevice is a generic EPICS device support for devices with a "byte stream" based communication interface. That means devices that can be controlled by sending and receiving strings (in the broadest sense, including non-printable characters and even null-bytes). Examples for this type of communication interface are serial line (RS-232, RS-485, ...), IEEE-488 (also known as GPIB or HP-IB), and telnet-like TCP/IP.
StreamDevice is a generic EPICS device support for devices with a "byte stream" based communication interface. That means devices that can be controlled by sending and receiving strings (in the broadest sense, including non-printable characters and even null-bytes). Examples for this type of communication interface are serial line (RS-232, RS-485, ...), IEEE-488 (also known as GPIB or HP-IB), and telnet-like TCP/IP.
Make sure that the asyn library and optionally the calc module can be found, i.e. by adding ASYN and (if installed) CALC or SYNAPPS to your <top>/configure/RELEASE file:
ASYN = $(SUPPORT)/asyn
CALC = $(SUPPORT)/calc
requires itself SSCAN to be defined: SSCAN = $(SUPPORT)/sscan
If you want to enable regular expression matching, you need the PCRE package. For most Linux systems, it is already installed. In that case add the locations of the PCRE header and library to your RELEASEfile:
PCRE_INCLUDE = /usr/include
PCRE_LIB = /usr/lib/x86_64-linux-gnu
If you have several target architectures to be supported you could add new target/host architecture specific RELEASE files in the = <top>/configuredirectory:
Set AREADETECTOR_ID = areaDetector Version: 3.9 (2020-08-18)
Set AREADETECTOR_KEY = AREADETECTOR
Set AREADETECTOR_ID = areaDetector 3.9
Set AREADETECTOR_LIBS =
Set AREADETECTOR_DBD =
Set AREADETECTOR_RELEASE_ADDONS = :
Set AREADETECTOR_PREREQUISITES =
Set AREADETECTOR_ABSTRACT = $ Overview: The areaDetector module provides a general-purpose interface for area (2-D) detectors in EPICS. It is intended to be used with a wide variety of detectors and cameras, ranging from high frame rate CCD and CMOS cameras, pixel-array detectors such as the Pilatus, and large format detectors like the Perkin Elmer flat panels.
From: https://areadetector.github.io/master/ADCore/overview.html
The top-level repository for the EPICS areaDetector software. This repository contains mostly documentation, configuration files, and a top-level Makefile to build the entire areaDetector package.
The areaDetector code is contained in submodules under this module. Four of these are "core" submodules:
ADSupport. This contains the source code for support libraries (TIFF, JPEG, HDF5, XML2, etc.). This is required for Windows and vxWorks, and can optionally be used on Linux and Darwin.
ADCore. This contains the base classes, plugins, and documentation.
ADSimDetector. This contains an example 2-D simulation detector driver and IOC.
ADViewers. This contains viewers for displaying areaDetector images in ImageJ and IDL.
All of the other submodules (ADProsilica, ADPilatus, etc.) contain drivers and EPICS IOC applications for specific detectors.
From: https://github.com/areaDetector/areaDetector
Make sure that the asyn library and the calc module can be found, e.g. by adding ASYN and (if installed) CALC or SYNAPPS to your
If you have several target architectures to be supported you could add new target/host architecture specific RELEASE files in the =<top>/configuredirectory:
Then create download directory, if not yet existing:
$> mkdir -p %$module_DOWNLOADPATH%
Download the latest version of %$module_SRCNAME% (version as of %$module_VERSIONDATE% is %$module_VERSION%) from: %$module_DOWNLOADADRESS% to the directory %$module_DOWNLOADPATH%
$> cd %$module_DOWNLOADPATH% && wget -N %$module_DIRECTDOWNLOADADRESS%/%$module_TARFILENAME%
Create installation directory:
$> mkdir -p %$module_SRCDIR%
Untar and unpack the file to %$module_SRCDIR%
$> cd %$module_SRCDIR% && tar axvf %$module_DOWNLOADPATH%/%$module_TARFILENAME%
(%$module_VERSIONCOMMENT%)
$> cd %$module_TOPLEVELDIR%
Add support paths to configure/RELEASE %FOREACH{"file" in="configure/RELEASE"}%now edit the file(s) $file and set the paths to a valid ${EPICS_BASE} on your site:
Then create download directory, if not yet existing:
$> mkdir -p %$module_DOWNLOADPATH%
Download the latest version of %$module_SRCNAME% (version as of %$module_VERSIONDATE% is %$module_VERSION%) from: %$module_DOWNLOADADRESS% to the directory %$module_DOWNLOADPATH%
$> cd %$module_DOWNLOADPATH% && wget -N %$module_DIRECTDOWNLOADADRESS%/%$module_TARFILENAME%
Create installation directory:
$> mkdir -p %$module_SRCDIR%
Untar and unpack the file to %$module_SRCDIR%
$> cd %$module_SRCDIR% && tar axvf %$module_DOWNLOADPATH%/%$module_TARFILENAME%
(%$module_VERSIONCOMMENT%)
$> cd %$module_TOPLEVELDIR%
Following the instructions %$module_INSTALLATIONDOCS% %FOREACH{"file" in="%$module_FILESTOEDIT%"}%now edit the file(s) $file and set the paths to a valid ${EPICS_BASE} on your site:
Then create download directory, if not yet existing:
$> mkdir -p %$module_DOWNLOADPATH%
Download the latest version of %$module_SRCNAME% (version as of %$module_VERSIONDATE% is %$module_VERSION%) from: %$module_DOWNLOADADRESS% to the directory %$module_DOWNLOADPATH%
$> cd %$module_DOWNLOADPATH% && wget -N %$module_DIRECTDOWNLOADADRESS%/%$module_TARFILENAME%
Create installation directory:
$> mkdir -p %$module_SRCDIR%
Untar and unpack the file to %$module_SRCDIR%
$> cd %$module_SRCDIR% && tar axvf %$module_DOWNLOADPATH%/%$module_TARFILENAME%
(%$module_VERSIONCOMMENT%)
$> cd %$module_TOPLEVELDIR%
Following the instructions %$module_INSTALLATIONDOCS% %FOREACH{"file" in="%$module_FILESTOEDIT%"}%now edit the file(s) $file and set the paths to a valid ${EPICS_BASE} on your site:
Then create download directory, if not yet existing:
$> mkdir -p %$module_DOWNLOADPATH%
Download the latest version of %$module_SRCNAME% (version as of %$module_VERSIONDATE% is %$module_VERSION%) from: %$module_DOWNLOADADRESS% to the directory %$module_DOWNLOADPATH%
$> cd %$module_DOWNLOADPATH% && wget -N %$module_DIRECTDOWNLOADADRESS%/%$module_TARFILENAME%
Create installation directory:
$> mkdir -p %$module_SRCDIR%
Untar and unpack the file to %$module_SRCDIR%
$> cd %$module_SRCDIR% && tar axvf %$module_DOWNLOADPATH%/%$module_TARFILENAME%
(%$module_VERSIONCOMMENT%)
$> cd %$module_TOPLEVELDIR%
cd %$module_INSTALLDIR% && unzip %$module_DOWNLOADPATH%/%$module_TARFILENAME%
CAN_interface
cd %$module_TOPLEVELDIR%/../CAN_interface && make && make install
drvAsynCan
Following the instructions %$module_INSTALLATIONDOCS% %FOREACH{"file" in="%$module_FILESTOEDIT%"}%now edit the file(s) $file and set the paths to a valid ${EPICS_BASE} on your site:
either absolutely to EPICS_BASE=
or relatively to EPICS_BASE=$(TOP)/../base-7.0.4
cd %$module_TOPLEVELDIR% perl -pi -e "s|(^(EPICS_BASE\s*=).*$)|#\1\n\2${EPICS_HOME}/base\n|g" $file
Add support paths to $file %FOREACH{"support" in="%$module_SUPPORT%"}%
Add %$support_SHORTNAME% (%$support_KEY%) path
%$support_TOPLEVELDIR%
cd %$module_TOPLEVELDIR% && if [ 0 -lt $(grep -w '%$support_KEY%\s*=' $file | grep -E -v '^\s*#' | wc -l ) ]; then if [ -d "%$support_TOPLEVELDIR%" ]; then perl -pi -e "s|(^(%$support_KEY%\s*=).*$)|#\1\n\2%$support_TOPLEVELDIR%\n|g" $file; else perl -pi -e "s|(^(%$support_KEY%\s*=).*$)|#\1|g" $file fi else echo -e %$support_KEY%=%$support_TOPLEVELDIR%\\n | sed 's/ //g' >> $file; fi
Before installing any kind of extension/application
you have to install extensionsTop_YYYYMMDD.tar.gz for version 3.14 and higher
%FOREACH{"item" in="EXTENSIONS_TOP"}%
%$item_TITLE% -- (%$item_LAST_CHANGE_ON%)
The %$item_SRCNAME% gnuzipped tar file contains the extensions/configure directory, top level Makefile, the src directory and src/Makefile.
The src/Makefile knows all the standard EPICS extensions directory names and can build any that are present in the correct order for dependency resolution. To use an extension with a specific version number in its directory name, edit the assignment statement so the right hand side of the assignment exactly matches the name of the subdirectory containing that extension. For example:
ALH = alh1_2_31
Edit the DIRS definition in the Makefile to change the order of building (the wildcard at the bottom removes any directories that don't exist from the list).
Then create download directory, if not yet existing:
$> mkdir -p %$item_DOWNLOADPATH%
Download the latest version of %$item_SRCNAME% for EPICS version 3.14 and higher from %$item_DOWNLOADADRESS% (%$item_TARFILENAME%) (versions as of %$item_VERSIONDATE%) to the directory %$item_DOWNLOADPATH%
$> cd %$item_DOWNLOADPATH% && wget -N %$item_DIRECTDOWNLOADADRESS%/%$item_TARFILENAME%
To avoid further problems, set the correct group (if you are a member of it (GSI specific)): epicsadm
XMotif based applications, like MEDM, ..., the following changes, or something similar MIGHT have to be applied:
Set EPICS variables, if not yet done:
(e.g. assuming the to be ~epics/EPICS-7.0.4, and running version 7.0.4)
To make things easier, first export the environment variable "$SUBSTITUTE(${EPICS_DOWNLOAD_DIR},[${}],,,r)"}% containing the path to the download directory:
Having followed the instructions for the Prerequisites for Extensions you should have in your (= ${EPICS_EXTENSIONS}) a subdirectory src.
Untar and unpack the file to ${EPICS_EXTENSIONS}/src
$> cd ${EPICS_EXTENSIONS}/src && tar axvf ${EPICS_DOWNLOAD_DIR}/extensions/alh/alh1_2_33.tar.gz
Adopt make settings in ${EPICS_EXTENSIONS}/src/Makefile==
Edit the assignment statement so the right hand side of the assignment exactly matches the name of the subdirectory containing that extension. Change ==ALH = alh to ALH = alh1_2_33
To make things easier, first export the environment variable "$SUBSTITUTE(${EPICS_DOWNLOAD_DIR},[${}],,,r)"}% containing the path to the download directory:
Having followed the instructions for the Prerequisites for Extensions you should have in your (= ${EPICS_EXTENSIONS}) a subdirectory src.
Untar and unpack the file to ${EPICS_EXTENSIONS}/src
$> cd ${EPICS_EXTENSIONS}/src && tar axvf ${EPICS_DOWNLOAD_DIR}/extensions/caSnooper/caSnooper2_1_2_3.tar.gz
Adopt make settings in ${EPICS_EXTENSIONS}/src/Makefile==
Edit the assignment statement so the right hand side of the assignment exactly matches the name of the subdirectory containing that extension. Change ==CASNOOPER = caSnooper to CASNOOPER = caSnooper2_1_2_3
$ EPICS EZCA website states : : EZCA was originaly designed to provide a simplified interface to Channel Access, intended for C programs which do not need all the capabilities of the full API. In practice though if you have problems getting code to work that uses EZCA or if you get unexplained failures or crashes, you will get less help from the EPICS community in debugging the issue than you will if you use the native CA API. The CA API is not hard to use, and EZCA is not maintained as aggressively as the underlying CA library.
Therefore obsolete (see versions prior to 184 for documentation on this topic)
To make things easier, first export the environment variable "$SUBSTITUTE(${EPICS_DOWNLOAD_DIR},[${}],,,r)"}% containing the path to the download directory:
Then create download directory, if not yet existing:
$> mkdir -p ${EPICS_DOWNLOAD_DIR}/extensions/edm
Download the latest version of edm (version as of 13 Dec 2012 is 1-12-85) from: http://ics-web.sns.ornl.gov/edm/ to the directory ${EPICS_DOWNLOAD_DIR}/extensions/edm
mkdir -p ${EPICS_DOWNLOAD_DIR}/extensions/edm
cd ${EPICS_DOWNLOAD_DIR}/extensions/edm
&&
wget -N -O edm-1-12-85.tgz http://ics-web.sns.ornl.gov/edm/info/getAttachment.php?attachId=321&name=/edm-1-12-85.tgz&type=application/x-gzip&size=2663593&mon=Jul&theDay=8&year=2009
groups | grep -q -w epicsadm && chgrp -R epicsadm ${EPICS_DOWNLOAD_DIR}/extensions/edm
find ${EPICS_DOWNLOAD_DIR}/extensions/edm -user $(id -n -u) -exec chmod ug+rw {} \;
cd ${EPICS_EXTENSIONS}/src
&& tar axvf ${EPICS_DOWNLOAD_DIR}/extensions/edm/edm-1-12-85.tgz
perl -pi -e "s|^(XRTGRAPH.*)$|#\1|g;s|^#\s*(SCIPLOT.*)|\1|g" ${EPICS_EXTENSIONS}/configure/os/CONFIG_SITE.${EPICS_HOST_ARCH}.${EPICS_HOST_ARCH}
cd ${EPICS_EXTENSIONS}/src/edm && make
Postrequisites
Unlike most other EPICS extensions, edm requires additional configuration after installation. See chapter 3 of the User Manual before attempting to execute edm
To make things easier, first export the environment variable "$SUBSTITUTE(${EPICS_DOWNLOAD_DIR},[${}],,,r)"}% containing the path to the download directory:
Then create download directory, if not yet existing:
$> mkdir -p ${EPICS_DOWNLOAD_DIR}/extensions/medm
Download the latest version of MEDM - Motif Editor and Display Manager (version as of 22 Jun 2012 is 3.1.7) from: https://epics-controls.org/extensions/medm/index.php to the directory ${EPICS_DOWNLOAD_DIR}/extensions/medm
Having followed the instructions for the Prerequisites for Extensions you should have in your (= ${EPICS_EXTENSIONS}) a subdirectory src.
Untar and unpack the file to ${EPICS_EXTENSIONS}/src
$> cd ${EPICS_EXTENSIONS}/src && tar axvf ${EPICS_DOWNLOAD_DIR}/extensions/medm/medm3_1_7.tar.gz
Adopt make settings in ${EPICS_EXTENSIONS}/src/Makefile==
Edit the assignment statement so the right hand side of the assignment exactly matches the name of the subdirectory containing that extension. Change ==MEDM = medm to MEDM = medm3_1_7
Unzip the file and move the created directory to ${EPICS_EXTENSIONS}/programs/ .
Now you have to include the path of the VisualDCT.jar file into the CLASSPATH variable. You can also set a variable with the search path for .db and .dbd files, or for storing configuration data. For more information on environment variables see chapter 3 in the manual. It is brought with the distribution at vdct/2.5.1271/doc/MAN-VisualDCT_Users_Manual.html .
Download VisualDCT here and move file to ${EPICS_EXTENSIONS}/bin/ .
Change the file permissions of VisualDCT. Type chmod a+x VisualDCT .
Run the program by calling VisualDCT or type java -jar VisualDCT.jar in the EPICS/extensions/src/ directory.
To make things easier, first export the environment variable "$SUBSTITUTE(${EPICS_DOWNLOAD_DIR},[${}],,,r)"}% containing the path to the download directory:
Download the latest version of Channel Archiver (version as of August 29th, 2006 is 2.9.2) from: http://ics-web.sns.ornl.gov/kasemir/archiver to the directory ${EPICS_DOWNLOAD_DIR}/extensions/ChannelArchiver
Having followed the instructions for the Prerequisites for Extensions you should have in your (= ${EPICS_EXTENSIONS}) a subdirectory src.
Untar and unpack the file to ${EPICS_EXTENSIONS}/src
$> cd ${EPICS_EXTENSIONS}/src && tar axvf ${EPICS_DOWNLOAD_DIR}/extensions/ChannelArchiver/archiver.tgz
Adopt make settings in ${EPICS_EXTENSIONS}/src/Makefile==
Edit the assignment statement so the right hand side of the assignment exactly matches the name of the subdirectory containing that extension. Change ==CHANNELARCHIVER = ChannelArchiver to CHANNELARCHIVER = ChannelArchiver
To make things easier, first export the environment variable "$SUBSTITUTE(${EPICS_DOWNLOAD_DIR},[${}],,,r)"}% containing the path to the download directory:
Depending whether you have root privileges or not you now either install to the standard library paths of your system or to you private path. (All possible caveats and pitfalls of private libraries included) Anyhow assuming the private version the install path will be ${EPICS_HOME}/programs.
Create install directory, if necessary:
$> mkdir -p ${EPICS_HOME}/programs
Untar and unpack the file to ${EPICS_HOME}/programs
$> cd ${EPICS_HOME}/programs && tar axvf ${EPICS_DOWNLOAD_DIR}/lib/xerces/xerces-c-src_2_7_0.tar.gz
To make things easier, first export the environment variable "$SUBSTITUTE(${EPICS_DOWNLOAD_DIR},[${}],,,r)"}% containing the path to the download directory:
Having followed the instructions for the Prerequisites for Extensions you should have in your (= ${EPICS_EXTENSIONS}) a subdirectory src.
Untar and unpack the file to ${EPICS_EXTENSIONS}/src
$> cd ${EPICS_EXTENSIONS}/src && tar axvf ${EPICS_DOWNLOAD_DIR}/extensions/PROBE/probe1_1_7_1.tar.gz
Adopt make settings in ${EPICS_EXTENSIONS}/src/Makefile==
Edit the assignment statement so the right hand side of the assignment exactly matches the name of the subdirectory containing that extension. Change ==PROBE = probe to PROBE = probe1_1_7_1
To make things easier, first export the environment variable "$SUBSTITUTE(${EPICS_DOWNLOAD_DIR},[${}],,,r)"}% containing the path to the download directory:
HOST_ARCH = linux-arm, e.g. Rasperry Pi, dreamplug, ...
since version 3.1 lzma ( Added LZMA2 compression support for .xz files ) is included, but the architecture linux-arm is not supported. To do so:
open ${EPICS_EXTENSIONS}/src/SDDS/lzma/Makefile
copy "ifeq ($(EPICS_HOST_ARCH),linux-x86) USR_CFLAGS_Linux ... endif" section for linux-x86, defining additional USR_CFLAGS_Linux flags and add it as a new linux-arm section at the end of the block
Run make in the top-level directory:
$> cd ${EPICS_EXTENSIONS}/src/SDDS && RPN_DEFNS=${EPICS_EXTENSIONS}/src/SDDS/defns.rpn make
To make things easier, first export the environment variable "$SUBSTITUTE(${EPICS_DOWNLOAD_DIR},[${}],,,r)"}% containing the path to the download directory:
Having followed the instructions for the Prerequisites for Extensions you should have in your (= ${EPICS_EXTENSIONS}) a subdirectory src.
Untar and unpack the file to ${EPICS_EXTENSIONS}/src
$> cd ${EPICS_EXTENSIONS}/src && tar axvf ${EPICS_DOWNLOAD_DIR}/extensions/SDDSepics/SDDSepics.3.1.tar.gz
Since the tarfile contains all from a - not needed - epics tree, the SDDS Directory has to be moved up to ${EPICS_EXTENSIONS}/src
cd ${EPICS_EXTENSIONS}/src/epics/extensions/src && mv SDDSepics oagca ${EPICS_EXTENSIONS}/src && cd ${EPICS_EXTENSIONS}/src && rm -i -r epics
Adopt make settings in ${EPICS_EXTENSIONS}/src/Makefile==
Edit the assignment statement so the right hand side of the assignment exactly matches the name of the subdirectory containing that extension. Change ==SDDSEPICS = SDDSepics to SDDSEPICS = SDDSepics
To make things easier, first export the environment variable "$SUBSTITUTE(${EPICS_DOWNLOAD_DIR},[${}],,,r)"}% containing the path to the download directory:
Having followed the instructions for the Prerequisites for Extensions you should have in your (= ${EPICS_EXTENSIONS}) a subdirectory src.
Untar and unpack the file to ${EPICS_EXTENSIONS}/src
$> cd ${EPICS_EXTENSIONS}/src && tar axvf ${EPICS_DOWNLOAD_DIR}/extensions/burt/burt_20130124.tar.gz
Adopt make settings in ${EPICS_EXTENSIONS}/src/Makefile==
Edit the assignment statement so the right hand side of the assignment exactly matches the name of the subdirectory containing that extension. Change ==BURT = burt to BURT = burt_20130124
For compiler versions of gcc newer than 3.3.5, the meanwhile removed option -fno-const-strings is unknown to the compiler. Therefore the Makefile has to be edited to comment out the following line :
USR_CXXFLAGS_Linux = -fno-const-strings
so you have to change
cd ${EPICS_EXTENSIONS}/src/burt_20130124 && perl -pi.bak -e "s|^(USR_CXXFLAGS_Linux\s*=\s*-fno-const-strings)|#\1|g" Makefile
To make things easier, first export the environment variable "$SUBSTITUTE(${EPICS_DOWNLOAD_DIR},[${}],,,r)"}% containing the path to the download directory:
Having followed the instructions for the Prerequisites for Extensions you should have in your (= ${EPICS_EXTENSIONS}) a subdirectory src.
Untar and unpack the file to ${EPICS_EXTENSIONS}/src
$> cd ${EPICS_EXTENSIONS}/src && tar axvf ${EPICS_DOWNLOAD_DIR}/extensions/CASR/casr_20091027.tar.gz
Adopt make settings in ${EPICS_EXTENSIONS}/src/Makefile==
Edit the assignment statement so the right hand side of the assignment exactly matches the name of the subdirectory containing that extension. Change ==CASR = casr to CASR = casr_20091027
To make things easier, first export the environment variable "$SUBSTITUTE(${EPICS_DOWNLOAD_DIR},[${}],,,r)"}% containing the path to the download directory:
Having followed the instructions for the Prerequisites for Extensions you should have in your (= ${EPICS_EXTENSIONS}) a subdirectory src.
Untar and unpack the file to ${EPICS_EXTENSIONS}/src
$> cd ${EPICS_EXTENSIONS}/src && tar axvf ${EPICS_DOWNLOAD_DIR}/extensions/StripTool/StripTool2_5_15_0.tar.gz
Adopt make settings in ${EPICS_EXTENSIONS}/src/Makefile==
Edit the assignment statement so the right hand side of the assignment exactly matches the name of the subdirectory containing that extension. Change ==STRIPTOOL = StripTool to STRIPTOOL = StripTool2_5_15_0
synApps (valid for R3.14.12.3 and higher ) -- Version: 5.7 (04 Apr 2014)
Note
There has been a major change in the installation routines between version 5.4 and 5.3.!
Therefore, if you need to install SynApps for Base Versions previous to 3.14.10 then have a look at the chapter for 5.3 installation below
To make things easier, first export the environment variable "$SUBSTITUTE(${EPICS_DOWNLOAD_DIR},[${}],,,r)"}% containing the path to the download directory:
Download the latest version of synApps (version as of 26 Aug 2013 is 5.7) from: http://www.aps.anl.gov/bcda/synApps/index.php to the directory ${EPICS_DOWNLOAD_DIR}/Distributions/synApps
Untar and unpack the file to ${EPICS_MODULES}/synApps
$> cd ${EPICS_MODULES}/synApps && tar axvf ${EPICS_DOWNLOAD_DIR}/Distributions/synApps/synApps_5_7.tar.gz
Following the instructions http://www.aps.anl.gov/bcda/synApps/index.php ... %FOREACH{"file" in="support/configure/RELEASE"}% $ ... set <Support Directory> (SUPPORT) path: ${EPICS_MODULES}/synApps/synApps_5_7/support in $file now edit the file(s) $file and set the paths to a valid ${EPICS_BASE} on your site:
synApps (valid for R3.14.8.2 and higher) -- Version: 5.3 (07 Apr 2009)
Note
There has been a major change in the installation routines between version 5.4 and 5.3.!
Therefore, if you need to install SynApps for Base Versions previous to 3.14.10 then ...
To make things easier, first export the environment variable "$SUBSTITUTE(${EPICS_DOWNLOAD_DIR},[${}],,,r)"}% containing the path to the download directory:
Download the latest version of synApps (version as of 09 Oct 2008 is 5.3) from: http://www.aps.anl.gov/bcda/synApps/index.php to the directory ${EPICS_DOWNLOAD_DIR}/Distributions/synApps
Download the up-to-now private RULES_DIRS patch file to ${EPICS_DOWNLOAD_DIR}/Distributions/synApps in order to care for path names containing periods `.' (The original version fails to compile if the path of SUPPORT contains periods).
An GSI wide installation of the Eclipse SDK is available.
To be able to extend with plug-ins specially needed for EPICS an EPICS local versionof eclipse has been installed.
It happened to our local installations of eclipse that we had to deactivate another plug-in before being able to install the EPICS plug-in. Therefore goto Help ⇒ Software Updates ⇒ Manage Configuration choose the plug-in from the list a try to disable it (in our case it was the "Virtual UML" module)