Epics@GSI Webhome

step-by-step - EPICS installations at GSI


GSI Prerequisites

Things you have to prepare and conditions you have to fulfill before being able to start any installation for the general GSI installations ... more.

Credentials ... on user account epics on Linux based systems

On the Linux system at GSI there are:
  • an user account epics to provide the space to store this installation, a login is practically '_never_' foreseen.
  • two groups:
    1. epicsadm for general installations
    2. epicsusr for user specific installations

GSI Directory Setup

Here you can find a sketch of how the directories are related with each other

  • Nomenclature
  file
  link to a file
  directory
  link to a directory

  • /usr/local/bin
    • contains (soft) links to <GSI's EPICS Installation Top Directory>/bin/
      • where at the moment:
        • <GSI's EPICS Installation Top Directory> is ~epics
      • but will be:
        • /usr/local/pub
    • linked files
      • epics

  • <GSI's EPICS Installation Top Directory>
  <GSI's EPICS Installation Top Directory>
  bin/
  epics
  epicslogin.sh
  fcn_addtopath.bash
  uniqpaths
  EPICS-<Version A.BB.CC>[_<optional Suffix>] (old structure, supported until new structure has established)
  ...
  EPICS-<Version X.YY.ZZ> (old structure, supported until new structure has established)
  EPICS
  ${GSI_OS_FLAVOR}${GSI_OS_VERSION}/$(uname -m)/${GSI_COMPILER_CC}
  (same sub structure as for EPICS directory in the local installation, see below)

  • <All local EPICS top directory>
  <All local EPICS top directory>
  .profile / .bashrc
  ( could contain settings for EPICS_LOCAL_... settings for epics script:
  EPICS_LOCAL_HOME_DIR=EPICS/${GSI_OS_FLAVOR}$(echo ${GSI_OS_VERSION?undefined}| sed -e 's/\(.\..\)\../\1/g')/$(uname -m)/${GSI_COMPILER_CC} )
  bin
  (should be included in the lookup path PATH)
  epics
  (recommended to be a (soft) link to <GSI's EPICS Installation Top Directory>/bin)
  epicslogin.sh
  (recommended to be a (soft) link to <GSI's EPICS Installation Top Directory>/bin)
  fcn_addtopath.bash
  (recommended to be a (soft) link to <GSI's EPICS Installation Top Directory>/bin)
  uniqpaths
  (recommended to be a (soft) link to <GSI's EPICS Installation Top Directory>/bin)
  programs
  pro/dev (optionally)
  ${GSI_OS_FLAVOR}${GSI_OS_VERSION}/$(uname -m)/${GSI_COMPILER_CC}
  bin
  (should be included in the lookup path PATH)
  lib
  (if necessary should be included in the lookup e.g. path LD_LIBRARY_PATH)
  include
  <Installation directory 1> (e.g. axis, missing libraries, tweaks)
  ...
  <Installation directory N>
  EPICS
  ${GSI_OS_FLAVOR}$(echo ${GSI_OS_VERSION?undefined}| sed -e 's/\(.\..\)\../\1/g')/$(uname -m)/${GSI_COMPILER_CC}
  EPICS-<Version A.BB.CC>[_<optional Suffix>][_dev]
  (w/  suffix: _dev: development versions, place for first installation of new/changed code, may not be working)
  (w/o suffix: _dev: production versions, only changed, if changes work in _dev)
  ...
  EPICS-<Version X.YY.ZZ>
  myepicslogin.sh
  (This setup file myepicslogin.sh is the only recommended place to change/tweak/modify settings for this local installation)
  <other setup files> (optional: called by myepicslogin.sh)
  epicslogin.sh
  (recommended to be a (soft) link to <All local EPICS top directory>/bin)
  fcn_addtopath.bash
  (recommended to be a (soft) link to <All local EPICS top directory>/bin)
  uniqpaths
  (recommended to be a (soft) link to <All local EPICS top directory>/bin)
  base ((soft) link auf base-<Version X.YY.ZZ>
  base-<Version X.YY.ZZ>
  configure
  RELEASE : EPICS_BASE=$(EPICS_HOME)/base
  CONFIG_SITE : =CROSS_COMPILE_TARGET_ARCH ... ==
  startup
  Site.profile
  Site.profile.org.base.<DDYYMM>
  extensions
  (in case of problems, probably (soft) links to other ${GSI_COMPILER_CC} version directory)
  configure (q.v. "base")
  src
  Makefile (master Makefile, edited during installation)
  <Installation directory 1>
  ...
  <Installation directory N>
  modules
  (in case of problems, probably (soft) links to other ${GSI_COMPILER_CC} version directory)
  __bus__/...
  configure (q.v. "base")
  ...
  __soft__/...
  configure (q.v. "base")

-- PeterZumbruch - 23 Jun 2009


EPICS base

Installation of the EPICS base distribution:


0.0.1 Preface

0.0.1.1 Scripts: #!/bin/bash


Up-to-now
All tools rely on bash shell scripting.


0.0.1.2 some global environment variables during installation

During installation those environment variables are used to define a common setup environment

%EPICS_ALL_EPICS_TOP_DIR_NAME%
top directory which holds different EPICS versions and whose bin directory is included in $PATH (e.g. ~epics, /usr/local/pub)
%EPICS_DOWNLOAD_DIR_NAME%
directory where you store your downloads
%EPICS_HOME_DIR_NAME%
directory where your current installation should be (installed)
%EPICS_VERSION_NAME%
version to be installed

therefore do the export here:
%COMMENT_CMD% Global installation settings

echo -n '%EPICS_ALL_EPICS_TOP_DIR_DUMMY%: ' && %READ_CMD% %EPICS_ALL_EPICS_TOP_DIR_NAME% && export %EPICS_ALL_EPICS_TOP_DIR_NAME%
echo -n '%EPICS_HOME_DIR_DUMMY%: ' && %READ_CMD% %EPICS_HOME_DIR_NAME% && export %EPICS_HOME_DIR_NAME%
echo -n '%EPICS_DOWNLOAD_DIR_DUMMY%: ' && %READ_CMD% %EPICS_DOWNLOAD_DIR_NAME% && export %EPICS_DOWNLOAD_DIR_NAME%
echo -n '%EPICS_VERSION_DUMMY%: ' && %READ_CMD% %EPICS_VERSION_NAME% && export %EPICS_VERSION_NAME%



0.0.2 General Preparations

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.
GNU readline or Tecla library
(optional, but recommened)
source: html

0.0.2.2 Create Directory and Download Sources


0.0.2.2.1 Preface - GSI: Facing different versions flavors of OS, architectures and compilers

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:
  • /u/epics/EPICS/%GSI_EPICS_OS_DIR_TREE%/EPICS-X.YY.ZZ

...and a little bit later:
  • /usr/local/pub/%GSI_EPICS_OS_DIR_TREE%/EPICS-X.YY.ZZ

By using the epics script ( see below) every user is directed to the corresponding set of versions.


0.0.2.2.1.1 Directory Setup

Here you can find a sketch of how the directories are related with each other

  • Nomenclature
  file
  link to a file
  directory
  link to a directory

  • /usr/local/bin
    • contains (soft) links to <GSI's EPICS Installation Top Directory>/bin/
      • where at the moment:
        • <GSI's EPICS Installation Top Directory> is ~epics
      • but will be:
        • /usr/local/pub
    • linked files
      • epics

  • <GSI's EPICS Installation Top Directory>
  <GSI's EPICS Installation Top Directory>
  bin/
  epics
  epicslogin.sh
  fcn_addtopath.bash
  uniqpaths
  EPICS-<Version A.BB.CC>[_<optional Suffix>] (old structure, supported until new structure has established)
  ...
  EPICS-<Version X.YY.ZZ> (old structure, supported until new structure has established)
  EPICS
  ${GSI_OS_FLAVOR}${GSI_OS_VERSION}/$(uname -m)/${GSI_COMPILER_CC}
  (same sub structure as for EPICS directory in the local installation, see below)

  • <All local EPICS top directory>
  <All local EPICS top directory>
  .profile / .bashrc
  ( could contain settings for EPICS_LOCAL_... settings for epics script:
  EPICS_LOCAL_HOME_DIR=EPICS/${GSI_OS_FLAVOR}$(echo ${GSI_OS_VERSION?undefined}| sed -e 's/\(.\..\)\../\1/g')/$(uname -m)/${GSI_COMPILER_CC} )
  bin
  (should be included in the lookup path PATH)
  epics
  (recommended to be a (soft) link to <GSI's EPICS Installation Top Directory>/bin)
  epicslogin.sh
  (recommended to be a (soft) link to <GSI's EPICS Installation Top Directory>/bin)
  fcn_addtopath.bash
  (recommended to be a (soft) link to <GSI's EPICS Installation Top Directory>/bin)
  uniqpaths
  (recommended to be a (soft) link to <GSI's EPICS Installation Top Directory>/bin)
  programs
  pro/dev (optionally)
  ${GSI_OS_FLAVOR}${GSI_OS_VERSION}/$(uname -m)/${GSI_COMPILER_CC}
  bin
  (should be included in the lookup path PATH)
  lib
  (if necessary should be included in the lookup e.g. path LD_LIBRARY_PATH)
  include
  <Installation directory 1> (e.g. axis, missing libraries, tweaks)
  ...
  <Installation directory N>
  EPICS
  ${GSI_OS_FLAVOR}$(echo ${GSI_OS_VERSION?undefined}| sed -e 's/\(.\..\)\../\1/g')/$(uname -m)/${GSI_COMPILER_CC}
  EPICS-<Version A.BB.CC>[_<optional Suffix>][_dev]
  (w/  suffix: _dev: development versions, place for first installation of new/changed code, may not be working)
  (w/o suffix: _dev: production versions, only changed, if changes work in _dev)
  ...
  EPICS-<Version X.YY.ZZ>
  myepicslogin.sh
  (This setup file myepicslogin.sh is the only recommended place to change/tweak/modify settings for this local installation)
  <other setup files> (optional: called by myepicslogin.sh)
  epicslogin.sh
  (recommended to be a (soft) link to <All local EPICS top directory>/bin)
  fcn_addtopath.bash
  (recommended to be a (soft) link to <All local EPICS top directory>/bin)
  uniqpaths
  (recommended to be a (soft) link to <All local EPICS top directory>/bin)
  base ((soft) link auf base-<Version X.YY.ZZ>
  base-<Version X.YY.ZZ>
  configure
  RELEASE : EPICS_BASE=$(EPICS_HOME)/base
  CONFIG_SITE : =CROSS_COMPILE_TARGET_ARCH ... ==
  startup
  Site.profile
  Site.profile.org.base.<DDYYMM>
  extensions
  (in case of problems, probably (soft) links to other ${GSI_COMPILER_CC} version directory)
  configure (q.v. "base")
  src
  Makefile (master Makefile, edited during installation)
  <Installation directory 1>
  ...
  <Installation directory N>
  modules
  (in case of problems, probably (soft) links to other ${GSI_COMPILER_CC} version directory)
  __bus__/...
  configure (q.v. "base")
  ...
  __soft__/...
  configure (q.v. "base")



0.0.2.2.2 Download EPICS base
Version %EPICSBASE_VERSION% (as of %EPICSBASE_VERSIONDATE%).
Download from %EPICSBASE_DOWNLOADADRESS%

  1. %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"}%
    $> export %EPICS_VERSION_NAME%=%EPICSBASE_VERSION%
    $> export %EPICS_HOME_DIR_NAME%=%EPICS_HOME_DIR_DUMMY%
  2. Check neccessary ENVIRONMENT variables and stop if not set:
    %COMMENT_CMD% Check installation environment variables
    %FOREACH{"env" in="EPICS_ALL_EPICS_TOP_DIR, EPICS_HOME_DIR, EPICS_DOWNLOAD_DIR, EPICS_VERSION"}% echo -n '%$env_DUMMY%: %$env_NAME% ->' && if [[ -z ${%$env_NAME%?} ]]; then die; false; else echo ${%$env_NAME%}; fi &&
    %NEXT{"env"}% :
  3. %CREATE_EPICSMYHOME_DIR%
    $> mkdir -p $%EPICS_HOME_DIR_NAME%
  4. Two alternatives open up:
    • Git
      1. %DOWNLOAD_OF_X_OF_DATE_VERSION_FROM_TO{DOWNLOAD_OF_X="%EPICSBASE_SRCNAME%" DOWNLOAD_OF_DATE="%EPICSBASE_VERSIONDATE%" DOWNLOAD_OF_VERSION="%EPICSBASE_VERSION%" DOWNLOAD_OF_FROM="%EPICSBASE_DOWNLOADADRESS%" DOWNLOAD_OF_TO="%EPICS_HOME_DIR_NAME%"}% using gitr
        $> cd %EPICSBASE_INSTALLDIR% &&
        git clone --recursive -b %EPICSBASE_VERSION% https://git.launchpad.net/epics-base base-%EPICSBASE_VERSION%
    • Tar Ball
      1. Then create download directory, if not yet existing:
        $> mkdir -p %EPICSBASE_DOWNLOADPATH%
      2. %DOWNLOAD_OF_X_OF_DATE_VERSION_FROM_TO{DOWNLOAD_OF_X="%EPICSBASE_SRCNAME%" DOWNLOAD_OF_DATE="%EPICSBASE_VERSIONDATE%" DOWNLOAD_OF_VERSION="%EPICSBASE_VERSION%" DOWNLOAD_OF_FROM="%EPICSBASE_DIRECTDOWNLOADADRESS%" DOWNLOAD_OF_TO="%EPICSBASE_DOWNLOADPATH%"}%
        $> cd %EPICSBASE_DOWNLOADPATH% &&
        wget -N %EPICSBASE_DIRECTDOWNLOADADRESS%/%EPICSBASE_TARFILENAME%
      3. Untar and unpack the file to %EPICSBASE_INSTALLDIR%
        $> cd %EPICSBASE_INSTALLDIR% && tar axvf %EPICSBASE_DOWNLOADPATH%/%EPICSBASE_TARFILENAME%
  5. To avoid further problems, set the correct group (if you are a member of it (GSI specific)): epicsadm and also set the correct rights:
    cd %EPICSBASE_INSTALLDIR% &&
    groups | grep -q -w epicsadm && chgrp -R epicsadm %EPICSBASE_INSTALLDIR% &&
    find %EPICSBASE_INSTALLDIR% -user $(id -n -u) -exec chmod ug+rw {} \;
  6. To make future settings easier:
    $> cd %EPICSBASE_INSTALLDIR% && ln -s base-* base

0.0.2.2.3 Download patches EPICS base
Starting from the page html for each version may list several patches to be applied.

0.0.2.2.4 Compact - Directories/epics & Download of Base Sources
%COMMENT_CMD% Check installation environment variables
%FOREACH{"env" in="EPICS_ALL_EPICS_TOP_DIR, EPICS_HOME_DIR, EPICS_DOWNLOAD_DIR, EPICS_VERSION"}% echo -n '%$env_DUMMY%: %$env_NAME% ->' && if [[ -z ${%$env_NAME%?} ]]; then die; false; else echo ${%$env_NAME%}; fi &&
%NEXT{"env"}% :

download_epicsBase()
{
mkdir -p $%EPICS_HOME_DIR_NAME% &&
cd %EPICSBASE_INSTALLDIR% &&
git clone --recursive -b %EPICSBASE_VERSION% https://git.launchpad.net/epics-base base-%EPICSBASE_VERSION%

%IF_CMD%[ $? -ne 0 ];
then
mkdir -p %EPICSBASE_DOWNLOADPATH% &&
cd %EPICSBASE_DOWNLOADPATH% &&
wget -N %EPICSBASE_DIRECTDOWNLOADADRESS%/%EPICSBASE_TARFILENAME%
&&
cd %EPICSBASE_INSTALLDIR% && tar axvf %EPICSBASE_DOWNLOADPATH%/%EPICSBASE_TARFILENAME%
%FI_CMD% &&
cd %EPICSBASE_INSTALLDIR% &&
groups | grep -q -w epicsadm && chgrp -R epicsadm %EPICSBASE_INSTALLDIR% &&
find %EPICSBASE_INSTALLDIR% -user $(id -n -u) -exec chmod ug+rw {} \;
&&
cd %EPICSBASE_INSTALLDIR% && ln -s base-* base
}


download_epicsBase


0.0.2.3 Setting environment variables

There are at least two major possiblities:


0.0.2.3.1 epics set of scripts

0.0.2.3.1.1 epics
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.
$> . epics

For more details use the help option: -h
$> . epics -h


0.0.2.3.1.2 Usage: epics script

<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'

   


0.0.2.3.1.3 epics invocation scheme

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
  default :
  "<epicsHome>/<epicsDirPrefix><version>/myepicslogin.sh"
  overwritten by environment variable:
  EPICS_LOCAL_LOGIN_SCRIPT
  overwritten by option :
  -L <Path><bash script>
   
  2.1. optional <other local pre scripts> within <loginScript>:
  source <other local pre scripts>
   
  2.2. epicslogin.sh :
  source <epicsHome>/<epicsDirPrefix><version>/epicslogin.sh
  epicslogin.sh :
  usually a (soft) link to %MY_ALL_EPICS_TOP_DIRECTORY_VAR%/bin
  or to %GSI_EPICS_INSTALLATIONS_TOP_DIRECTORY_VAR%/bin
   
  2.2.1 source <epicsHome>/<epicsDirPrefix><version>/epicslogin.sh
  in case it has been extended/changed to be wrapper this is a symbolic link to
  $EPICS_HOME/base-<version>/startup/Site.profile.wrapper calling itself:
   
  2.2.1.1 source $EPICS_HOME/base-<version>/startup/Site.profile.pre
  most of the local default definitions before calling the former, but modified Site.profile
   
  2.2.1.2 source $EPICS_HOME/base-<version>/startup/Site.profile.main
  former Site.profile modified to be able to be more verbose
   
  2.2.1.3 source $EPICS_HOME/base-<version>/startup/Site.profile.post
  post jobs after calling Site.profile.main
   
  2.3. optional: source <other local scripts, e.g. setting of PATHs, init of cross-compilers>
   
  3. optional: source <after script>
  (set by environment variable: EPICS_LOCAL_AFTER_SCRIPT, or overwritten by option -A <Path><bash script> )

  • Variables:
    • <epicsHome>
      • default: ~epics
        (to become /usr/local/pub/%GSI_EPICS_OS_DIR_TREE%)
      • override by environment variable: EPICS_LOCAL_HOME
      • overwritten by option: -H <Path>
    • <epicsDirPrefix>
      • default: "EPICS-"
      • override by environment variable: EPICS_LOCAL_DIR_PREFIX
      • overwritten by option: -P <Prefix>
    • <version>
      • default: 3.14.9
      • override by environment variable: EPICS_LOCAL_DEFAULT_VERSION
      • overwritten by argument: <Version>
    • <loginScript>
      • default: "./myepicslogin.sh"
      • override by environment variable: EPICS_LOCAL_LOGIN_SCRIPT
      • overwritten by option -L <Path><bash script>
    • <beforeScript>
      • default: [ not set ]
      • override by environment variable: EPICS_LOCAL_BEFORE_SCRIPT
      • overwritten by option -B <Path><bash script>
    • <afterScript>
      • default: [ not set ]
      • override by environment variable: EPICS_LOCAL_AFTER_SCRIPT
      • overwritten by option -A <Path><bash script>


0.0.2.3.1.4 To install the epics script...
  • Only needed on non GSI cluster systems.

  1. Set %EPICS_ALL_EPICS_TOP_DIR_NAME% to the top home directory of all epics installations (e.g. ~epics/EPICS)
    $> export %EPICS_ALL_EPICS_TOP_DIR_NAME%=%EPICS_ALL_EPICS_TOP_DIR_DUMMY%
  2. If not yet existing create a bin directory ${%EPICS_ALL_EPICS_TOP_DIR_NAME%}/bin
    [ -d ${%EPICS_ALL_EPICS_TOP_DIR_NAME%:?"undefined"} ] && mkdir -p ${%EPICS_ALL_EPICS_TOP_DIR_NAME%}/bin
  3. If not yet existing create a tools directory ${%EPICS_ALL_EPICS_TOP_DIR_NAME%}/tools
    [ -d ${%EPICS_ALL_EPICS_TOP_DIR_NAME%:?"undefined"} ] && mkdir -p ${%EPICS_ALL_EPICS_TOP_DIR_NAME%}/tools
  4. User git clone --recursive to clone tools into $%EPICS_ALL_EPICS_TOP_DIR_NAME%/tools==
         
          [ -d ${%EPICS_ALL_EPICS_TOP_DIR_NAME%:?"undefined"} ] &&
          git clone --recursive https://git.gsi.de/EPICS/epics-installations/all-epics-top-directories/tools.git ; ${%EPICS_ALL_EPICS_TOP_DIR_NAME%}/tools            
    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.

%FOREACH{"list" in="epics"}% %FOREACH{"item" in="$list"}%
ln -s ${%EPICS_ALL_EPICS_TOP_DIR_NAME%:?"undefined"}/tools/bin/$item ${%EPICS_ALL_EPICS_TOP_DIR_NAME%:?"undefined"}/bin && %NEXT{"item"}% %NEXT{"list"}% :
  1. make epics script available
    • 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:
      #> %IF_THEN_CMD{CONDITION=" \"$(id -u)\" -eq 0" TASK="ln -s $%EPICS_ALL_EPICS_TOP_DIR_NAME%/bin/epics /usr/local/bin "}% %ELSE_CMD{TASK="[ -d ${%EPICS_ALL_EPICS_TOP_DIR_NAME%:?'undefined'}/bin ] && export PATH=%EPICS_ALL_EPICS_TOP_DIR_NAME%}/bin:${PATH}"}% %FI_CMD%

0.0.2.3.1.5 Compact - Epics Script Installation
install_epicsScript()
{
[ -d ${%EPICS_ALL_EPICS_TOP_DIR_NAME%:?"undefined"} ] && mkdir -p ${%EPICS_ALL_EPICS_TOP_DIR_NAME%}/bin &&
[ -d ${%EPICS_ALL_EPICS_TOP_DIR_NAME%:?"undefined"} ] && mkdir -p ${%EPICS_ALL_EPICS_TOP_DIR_NAME%}/tools &&
[ -d ${%EPICS_ALL_EPICS_TOP_DIR_NAME%:?"undefined"} ] &&
git clone --recursive https://git.gsi.de/EPICS/epics-installations/all-epics-top-directories/tools.git ${%EPICS_ALL_EPICS_TOP_DIR_NAME%}/tools
&&
%FOREACH{"list" in="epics"}% %FOREACH{"item" in="$list"}%
ln -s ${%EPICS_ALL_EPICS_TOP_DIR_NAME%:?"undefined"}/tools/bin/$item ${%EPICS_ALL_EPICS_TOP_DIR_NAME%:?"undefined"}/bin && %NEXT{"item"}% %NEXT{"list"}% :
&&
%IF_THEN_CMD{CONDITION=" \"$(id -u)\" -eq 0" TASK="ln -s $%EPICS_ALL_EPICS_TOP_DIR_NAME%/bin/epics /usr/local/bin "}% %ELSE_CMD{TASK="[ -d ${%EPICS_ALL_EPICS_TOP_DIR_NAME%:?'undefined'}/bin ] && export PATH=%EPICS_ALL_EPICS_TOP_DIR_NAME%}/bin:${PATH}"}% %FI_CMD%
}

install_epicsScript


0.0.2.3.1.6 epicslogin.sh (fcn_addtopath.bash, uniqpaths, Site.profile / unix.sh set)

The recommended way is to use epicslogin.sh (bash script).
  • epicslogin.sh
    which itself sources the script from %EPICS_BASE_DIRECTORY_DUMMY%/startup/{Site.profile;unix.sh}
    • uses those helper scripts to be put in a <Fcn Helper Bin Directory>
      (e.g. to the directory ${%EPICS_ALL_EPICS_TOP_DIR_NAME%:-~epics}/bin)


0.0.2.3.1.7 Usage: epicslogin.sh

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) ...

  1. Set %EPICS_ALL_EPICS_TOP_DIR_NAME% to the top home directory of all epics installations (e.g. ~epics/EPICS)
    $> export %EPICS_ALL_EPICS_TOP_DIR_NAME%=%EPICS_ALL_EPICS_TOP_DIR_DUMMY%
  2. If not yet existing create a bin directory ${%EPICS_ALL_EPICS_TOP_DIR_NAME%}/bin
    [ -d ${%EPICS_ALL_EPICS_TOP_DIR_NAME%:?"undefined"} ] && mkdir -p -p ${%EPICS_ALL_EPICS_TOP_DIR_NAME%}/bin || %DIE_CMD%
    1 Provided ${%EPICS_ALL_EPICS_TOP_DIR_NAME%}/tools has been cloned (q.v. 'epics' script ) create symbolic links to ${%EPICS_ALL_EPICS_TOP_DIR_NAME%}/tools .

%FOREACH{"list" in="epics"}% %FOREACH{"list" in="epicslogin.sh,fcn_addtopath.bash,uniqpaths"}%
ln -s ${%EPICS_ALL_EPICS_TOP_DIR_NAME%:?"undefined"}/tools/bin/$item ${%EPICS_ALL_EPICS_TOP_DIR_NAME%:?"undefined"}/bin && %NEXT{"item"}% %NEXT{"list"}% :

0.0.2.3.1.9 unix.sh set of files * use instead of older Site.profile
    • ${%EPICS_ALL_EPICS_TOP_DIR_NAME%:?"undefined"}/tools/startup/wrapper.unix.sh contains the following scripts:
      unix.sh.wrapper
      wrapper script calling (modified) unix.sh script now named unix.sh.main, before unix.sh.pre and after unix.sh.post
      unix.sh.pre
      most of additional settings done here
      unix.sh.post
      cleaning up, if neccessary
    • Strategy:
      1. backup orignal unix.sh
        • if already existing
          1. replace current by original
          2. backup original with new date to follow-up last changes
      2. soft link to ${%EPICS_ALL_EPICS_TOP_DIR_NAME%:?"undefined"}/tools/startup/wrapper.unix.s files, cosmetic renaming
      3. optionally apply perl script to unix.sh.main
      4. soft link unix.sh.wrapper to unix.sh

0.0.2.3.1.10 To install unix.sh
{
%FOREACH{"item" in="base/startup"}% cd ${EPICS_HOME:?"undefined"}/base/startup &&
[ -f unix.sh ] && { ls | grep -q unix.sh.org && echo restoring latest unix.sh.org to unix.sh && mv $(ls -tr1 unix.sh.org.* | head -n 1 | xargs) unix.sh; :; } &&
cp unix.sh unix.sh.org$(date +%d%m%y) &&
%FOREACH{"list" in="unix.sh.post,unix.sh.pre,unix.sh.wrapper"}%
ln -s ${%EPICS_ALL_EPICS_TOP_DIR_NAME%:?"undefined"}/tools/startup/wrapper.unix.sh/$list ${EPICS_HOME:?}/base/startup && %NEXT{"list"}% %NEXT{"item"}% :
mv unix.sh unix.sh.main &&
ln -s -s -b unix.sh.wrapper unix.sh && :
%NEXT{"item"}%

} || %DIE_CMD%

0.0.2.3.1.11 Site.profile set of files
    • ${%EPICS_ALL_EPICS_TOP_DIR_NAME%:?"undefined"}/tools/startup/modify.Site.Profile} contains the following scripts:
      Site.profile.wrapper
      wrapper script calling (modified) Site.profile script now named Site.profile.main, before Site.profile.pre and after Site.profile.post
      Site.profile.pre
      most of additional settings done here
      Site.profile.post
      cleaning up, if neccessary
      modify.Site.profile.pl
      file to modify/extend Site.profile for additional verbosity and path check
    • Strategy:
      1. backup orignal Site.profile
        • if already existing
          1. replace current by original
          2. backup original with new date to follow-up last changes
      2. download files, cosmetic renaming
      3. rename Site.profile to Site.profile.main
      4. apply perl script to Site.profile.main
      5. soft link Site.profile.wrapper to Site.profile

0.0.2.3.1.12 To install Site.profile
{
%FOREACH{"item" in="base/startup"}% cd ${EPICS_HOME:?"undefined"}/base/startup &&
[ -f Site.profile ] && { ls | grep -q Site.profile.org && echo restoring latest Site.profile.org to Site.profile && mv $(ls -tr1 Site.profile.org.* | head -n 1 | xargs) Site.profile; :; } &&
cp Site.profile Site.profile.org$(date +%d%m%y) &&
%FOREACH{"list" in="Site.profile.post,Site.profile.pre,Site.profile.wrapper,modify.Site.profile.pl"}%
ln -s ${%EPICS_ALL_EPICS_TOP_DIR_NAME%:?"undefined"}/tools/startup/modify.Site.profile/$list ${EPICS_HOME:?}/base/startup && %NEXT{"list"}% %NEXT{"item"}% :
mv Site.profile Site.profile.main &&
perl -pi modify.Site.profile.pl Site.profile.main &&
ln -s -s -b Site.profile.wrapper Site.profile && :
%NEXT{"item"}%

} || %DIE_CMD%


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"}%


0.0.2.3.1.14 Compact - epicslogin.sh (fcn_addtopath.bash, uniqpaths, Site.profile set)

install_epicsloginSh()
{
[ -d ${%EPICS_ALL_EPICS_TOP_DIR_NAME%:?"undefined"} ] && mkdir -p -p ${%EPICS_ALL_EPICS_TOP_DIR_NAME%}/bin || %DIE_CMD% &&
%FOREACH{"list" in="epics"}% %FOREACH{"list" in="epicslogin.sh,fcn_addtopath.bash,uniqpaths"}%
ln -s ${%EPICS_ALL_EPICS_TOP_DIR_NAME%:?"undefined"}/tools/bin/$item ${%EPICS_ALL_EPICS_TOP_DIR_NAME%:?"undefined"}/bin && %NEXT{"item"}% %NEXT{"list"}% :
}

install_unixSh()
{
%FOREACH{"item" in="base/startup"}% cd ${EPICS_HOME:?"undefined"}/base/startup &&
[ -f unix.sh ] && { ls | grep -q unix.sh.org && echo restoring latest unix.sh.org to unix.sh && mv $(ls -tr1 unix.sh.org.* | head -n 1 | xargs) unix.sh; :; } &&
cp unix.sh unix.sh.org$(date +%d%m%y) &&
%FOREACH{"list" in="unix.sh.post,unix.sh.pre,unix.sh.wrapper"}%
ln -s ${%EPICS_ALL_EPICS_TOP_DIR_NAME%:?"undefined"}/tools/startup/wrapper.unix.sh/$list ${EPICS_HOME:?}/base/startup && %NEXT{"list"}% %NEXT{"item"}% :
mv unix.sh unix.sh.main &&
ln -s -s -b unix.sh.wrapper unix.sh && :
%NEXT{"item"}%
}

install_SiteProfile()
{
%FOREACH{"item" in="base/startup"}% cd ${EPICS_HOME:?"undefined"}/base/startup &&
[ -f Site.profile ] && { ls | grep -q Site.profile.org && echo restoring latest Site.profile.org to Site.profile && mv $(ls -tr1 Site.profile.org.* | head -n 1 | xargs) Site.profile; :; } &&
cp Site.profile Site.profile.org$(date +%d%m%y) &&
%FOREACH{"list" in="Site.profile.post,Site.profile.pre,Site.profile.wrapper,modify.Site.profile.pl"}%
ln -s ${%EPICS_ALL_EPICS_TOP_DIR_NAME%:?"undefined"}/tools/startup/modify.Site.profile/$list ${EPICS_HOME:?}/base/startup && %NEXT{"list"}% %NEXT{"item"}% :
mv Site.profile Site.profile.main &&
perl -pi modify.Site.profile.pl Site.profile.main &&
ln -s -s -b Site.profile.wrapper Site.profile && :
%NEXT{"item"}%
}

install_MandatorySoftLinks()
{
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"}%
}


install_epicsloginSh && install_SiteProfile && install_MandatorySoftLinks


0.0.2.3.1.15 myepicslogin.sh
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>
   

0.0.2.3.1.16 To install myepicslogin.sh
Direct Download:
$> cd %EPICSBASE_MYHOMEDIR% && wget -N --no-check-certificate https://wiki.gsi.de/pub/Epics/EpicsInstallationsAtGsiBase/myepicslogin.sh
Replace command line by your own
cd %EPICSBASE_MYHOMEDIR% &&
perl -pi -e 's/^.*epicslogin\.sh -v.*$//g' myepicslogin.sh &&
cd %EPICSBASE_MYHOMEDIR% &&
echo -n -e "myepics_home=$%EPICS_HOME_DIR_NAME% \n" >> myepicslogin.sh&&
echo -n -e " . \$myepics_home/epicslogin.sh -v -H \$myepics_home -B \$myepics_home/base -A \$myepics_home/fcn_addtopath.bash $(basename $%EPICS_HOME_DIR_NAME%) \$([ -f \$myepics_home/base/startup/unix.sh ] && echo -P \$myepics_home/base/startup/unix.sh) \$* \n\n" >> myepicslogin.sh &&
echo -n -e "unset myepics_home \n" >> myepicslogin.sh&&
cd %EPICSBASE_MYHOMEDIR% && . ./myepicslogin.sh



0.0.2.3.2 by hand
At least EPICS_HOST_ARCH has to be defined, which can be done via:
$> echo -n "Enter <Your Host's Architecture>: " && %READ_CMD% EPICS_HOST_ARCH && export EPICS_HOST_ARCH
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.

0.0.2.3.3 Compact - environment

install_epicsScript()
{
[ -d ${%EPICS_ALL_EPICS_TOP_DIR_NAME%:?"undefined"} ] && mkdir -p ${%EPICS_ALL_EPICS_TOP_DIR_NAME%}/bin &&
[ -d ${%EPICS_ALL_EPICS_TOP_DIR_NAME%:?"undefined"} ] && mkdir -p ${%EPICS_ALL_EPICS_TOP_DIR_NAME%}/tools &&
[ -d ${%EPICS_ALL_EPICS_TOP_DIR_NAME%:?"undefined"} ] &&
git clone --recursive https://git.gsi.de/EPICS/epics-installations/all-epics-top-directories/tools.git ${%EPICS_ALL_EPICS_TOP_DIR_NAME%}/tools
&&
%FOREACH{"list" in="epics"}% %FOREACH{"item" in="$list"}%
ln -s ${%EPICS_ALL_EPICS_TOP_DIR_NAME%:?"undefined"}/tools/bin/$item ${%EPICS_ALL_EPICS_TOP_DIR_NAME%:?"undefined"}/bin && %NEXT{"item"}% %NEXT{"list"}% :
&&
%IF_THEN_CMD{CONDITION=" \"$(id -u)\" -eq 0" TASK="ln -s $%EPICS_ALL_EPICS_TOP_DIR_NAME%/bin/epics /usr/local/bin "}% %ELSE_CMD{TASK="[ -d ${%EPICS_ALL_EPICS_TOP_DIR_NAME%:?'undefined'}/bin ] && export PATH=%EPICS_ALL_EPICS_TOP_DIR_NAME%}/bin:${PATH}"}% %FI_CMD%
}


install_epicsloginSh()
{
[ -d ${%EPICS_ALL_EPICS_TOP_DIR_NAME%:?"undefined"} ] && mkdir -p -p ${%EPICS_ALL_EPICS_TOP_DIR_NAME%}/bin || %DIE_CMD% &&
%FOREACH{"list" in="epics"}% %FOREACH{"list" in="epicslogin.sh,fcn_addtopath.bash,uniqpaths"}%
ln -s ${%EPICS_ALL_EPICS_TOP_DIR_NAME%:?"undefined"}/tools/bin/$item ${%EPICS_ALL_EPICS_TOP_DIR_NAME%:?"undefined"}/bin && %NEXT{"item"}% %NEXT{"list"}% :
}

install_unixSh()
{
%FOREACH{"item" in="base/startup"}% cd ${EPICS_HOME:?"undefined"}/base/startup &&
[ -f unix.sh ] && { ls | grep -q unix.sh.org && echo restoring latest unix.sh.org to unix.sh && mv $(ls -tr1 unix.sh.org.* | head -n 1 | xargs) unix.sh; :; } &&
cp unix.sh unix.sh.org$(date +%d%m%y) &&
%FOREACH{"list" in="unix.sh.post,unix.sh.pre,unix.sh.wrapper"}%
ln -s ${%EPICS_ALL_EPICS_TOP_DIR_NAME%:?"undefined"}/tools/startup/wrapper.unix.sh/$list ${EPICS_HOME:?}/base/startup && %NEXT{"list"}% %NEXT{"item"}% :
mv unix.sh unix.sh.main &&
ln -s -s -b unix.sh.wrapper unix.sh && :
%NEXT{"item"}%
}

install_SiteProfile()
{
%FOREACH{"item" in="base/startup"}% cd ${EPICS_HOME:?"undefined"}/base/startup &&
[ -f Site.profile ] && { ls | grep -q Site.profile.org && echo restoring latest Site.profile.org to Site.profile && mv $(ls -tr1 Site.profile.org.* | head -n 1 | xargs) Site.profile; :; } &&
cp Site.profile Site.profile.org$(date +%d%m%y) &&
%FOREACH{"list" in="Site.profile.post,Site.profile.pre,Site.profile.wrapper,modify.Site.profile.pl"}%
ln -s ${%EPICS_ALL_EPICS_TOP_DIR_NAME%:?"undefined"}/tools/startup/modify.Site.profile/$list ${EPICS_HOME:?}/base/startup && %NEXT{"list"}% %NEXT{"item"}% :
mv Site.profile Site.profile.main &&
perl -pi modify.Site.profile.pl Site.profile.main &&
ln -s -s -b Site.profile.wrapper Site.profile && :
%NEXT{"item"}%
}

install_MandatorySoftLinks()
{
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"}%
}

install_myepicslogins.sh()
{
cd %EPICSBASE_MYHOMEDIR% && wget -N --no-check-certificate https://wiki.gsi.de/pub/Epics/EpicsInstallationsAtGsiBase/myepicslogin.sh &&
cd %EPICSBASE_MYHOMEDIR% &&
perl -pi -e 's/^.*epicslogin\.sh -v.*$//g' myepicslogin.sh &&
cd %EPICSBASE_MYHOMEDIR% &&
echo -n -e "myepics_home=$%EPICS_HOME_DIR_NAME% \n" >> myepicslogin.sh&&
echo -n -e " . \$myepics_home/epicslogin.sh -v -H \$myepics_home -B \$myepics_home/base -A \$myepics_home/fcn_addtopath.bash $(basename $%EPICS_HOME_DIR_NAME%) \$([ -f \$myepics_home/base/startup/unix.sh ] && echo -P \$myepics_home/base/startup/unix.sh) \$* \n\n" >> myepicslogin.sh &&
echo -n -e "unset myepics_home \n" >> myepicslogin.sh&&
cd %EPICSBASE_MYHOMEDIR% && . ./myepicslogin.sh
}

install_epicsScript && install_epicsloginSh && install_SiteProfile && install_MandatorySoftLinks && install_myepicslogins.sh

0.0.2.4 Compiler settings

If you are using different compilers, CC and CCC have to be modified in the corresponding ${EPICS_BASE}/configure/os directories.
This is triggered by setting %EPICS_GCC_VERSION_GSI_NAME%.
  1. Set %EPICS_VERSION_NAME% (assuming %EPICSBASE_VERSION% to be set)
    export %EPICS_VERSION_NAME%=%EPICSBASE_VERSION%
  2. %CREATE_HOME_EXPORT{CREATE_HOME_EXPORT_LIST="%EPICS_HOME_DIR_NAME%" CREATE_HOME_EXPORT_DIR="home"}%
    $> echo -n "Enter %EPICS_HOME_DIR_DUMMY%: " && %READ_CMD% %EPICS_HOME_DIR_NAME% && export %EPICS_HOME_DIR_NAME%
    (e.g. ${%EPICS_ALL_EPICS_TOP_DIR_NAME%:?undefined}/<GSI EPICS OS DIR TREE>/EPICS-<Version> (e.g. EPICS-%EPICSBASE_VERSION%))
  3. $> cd %EPICS_HOME_DIR_NAME% && . epics -H $(dirname $PWD) -P "" $(basename $PWD)
  4. Set GSI-Site specific gcc settings:
    $> [ ! -z ${%EPICS_GCC_VERSION_GSI_NAME%} ] &&
    echo 'CC=$(GNU_BIN)/gcc-'${%EPICS_GCC_VERSION_GSI_NAME%} >> ${EPICS_BASE}/configure/os/CONFIG_SITE.${EPICS_HOST_ARCH}.${EPICS_HOST_ARCH}
    $> [ ! -z ${%EPICS_GCC_VERSION_GSI_NAME%} ] &&
    echo 'CCC=$(GNU_BIN)/g++-'${%EPICS_GCC_VERSION_GSI_NAME%} >> ${EPICS_BASE}/configure/os/CONFIG_SITE.${EPICS_HOST_ARCH}.${EPICS_HOST_ARCH}



0.0.3Additional Configuration settings

  • cross compile for a different target(/host) architecture you have to

0.0.4 Compile

Setting up the environment
$> cd %EPICSBASE_MYHOMEDIR% && . epics %EPICSBASE_VERSION
Following the instruction the README file, but using GSI make (which is GNU make) type: (+ multicore parallel build)
$> cd $EPICS_BASE && make distclean && make -j
Finally to add new paths to PATH etc.
$> cd %EPICSBASE_MYHOMEDIR% && . epics %EPICSBASE_VERSION

0.0.4.1 Obstacles


0.0.4.2 Compact - Compile

make_epics()
{
cd %EPICSBASE_MYHOMEDIR% && . epics %EPICSBASE_VERSION &&
cd $EPICS_BASE && make distclean && make -j &&
cd %EPICSBASE_MYHOMEDIR% && . epics %EPICSBASE_VERSION
}

make_epics



0.0.5 All Compact

download_epicsBase()
{
mkdir -p $%EPICS_HOME_DIR_NAME% &&
cd %EPICSBASE_INSTALLDIR% &&
git clone --recursive -b %EPICSBASE_VERSION% https://git.launchpad.net/epics-base base-%EPICSBASE_VERSION%

%IF_CMD%[ $? -ne 0 ];
then
mkdir -p %EPICSBASE_DOWNLOADPATH% &&
cd %EPICSBASE_DOWNLOADPATH% &&
wget -N %EPICSBASE_DIRECTDOWNLOADADRESS%/%EPICSBASE_TARFILENAME%
&&
cd %EPICSBASE_INSTALLDIR% && tar axvf %EPICSBASE_DOWNLOADPATH%/%EPICSBASE_TARFILENAME%
%FI_CMD% &&
cd %EPICSBASE_INSTALLDIR% &&
groups | grep -q -w epicsadm && chgrp -R epicsadm %EPICSBASE_INSTALLDIR% &&
find %EPICSBASE_INSTALLDIR% -user $(id -n -u) -exec chmod ug+rw {} \;
&&
cd %EPICSBASE_INSTALLDIR% && ln -s base-* base
}


install_epicsScript()
{
[ -d ${%EPICS_ALL_EPICS_TOP_DIR_NAME%:?"undefined"} ] && mkdir -p ${%EPICS_ALL_EPICS_TOP_DIR_NAME%}/bin &&
[ -d ${%EPICS_ALL_EPICS_TOP_DIR_NAME%:?"undefined"} ] && mkdir -p ${%EPICS_ALL_EPICS_TOP_DIR_NAME%}/tools &&
[ -d ${%EPICS_ALL_EPICS_TOP_DIR_NAME%:?"undefined"} ] &&
git clone --recursive https://git.gsi.de/EPICS/epics-installations/all-epics-top-directories/tools.git ${%EPICS_ALL_EPICS_TOP_DIR_NAME%}/tools
&&
%FOREACH{"list" in="epics"}% %FOREACH{"item" in="$list"}%
ln -s ${%EPICS_ALL_EPICS_TOP_DIR_NAME%:?"undefined"}/tools/bin/$item ${%EPICS_ALL_EPICS_TOP_DIR_NAME%:?"undefined"}/bin && %NEXT{"item"}% %NEXT{"list"}% :
&&
%IF_THEN_CMD{CONDITION=" \"$(id -u)\" -eq 0" TASK="ln -s $%EPICS_ALL_EPICS_TOP_DIR_NAME%/bin/epics /usr/local/bin "}% %ELSE_CMD{TASK="[ -d ${%EPICS_ALL_EPICS_TOP_DIR_NAME%:?'undefined'}/bin ] && export PATH=%EPICS_ALL_EPICS_TOP_DIR_NAME%}/bin:${PATH}"}% %FI_CMD%
}


install_epicsloginSh()
{
[ -d ${%EPICS_ALL_EPICS_TOP_DIR_NAME%:?"undefined"} ] && mkdir -p -p ${%EPICS_ALL_EPICS_TOP_DIR_NAME%}/bin || %DIE_CMD% &&
%FOREACH{"list" in="epics"}% %FOREACH{"list" in="epicslogin.sh,fcn_addtopath.bash,uniqpaths"}%
ln -s ${%EPICS_ALL_EPICS_TOP_DIR_NAME%:?"undefined"}/tools/bin/$item ${%EPICS_ALL_EPICS_TOP_DIR_NAME%:?"undefined"}/bin && %NEXT{"item"}% %NEXT{"list"}% :
}

install_unixSh()
{
%FOREACH{"item" in="base/startup"}% cd ${EPICS_HOME:?"undefined"}/base/startup &&
[ -f unix.sh ] && { ls | grep -q unix.sh.org && echo restoring latest unix.sh.org to unix.sh && mv $(ls -tr1 unix.sh.org.* | head -n 1 | xargs) unix.sh; :; } &&
cp unix.sh unix.sh.org$(date +%d%m%y) &&
%FOREACH{"list" in="unix.sh.post,unix.sh.pre,unix.sh.wrapper"}%
ln -s ${%EPICS_ALL_EPICS_TOP_DIR_NAME%:?"undefined"}/tools/startup/wrapper.unix.sh/$list ${EPICS_HOME:?}/base/startup && %NEXT{"list"}% %NEXT{"item"}% :
mv unix.sh unix.sh.main &&
ln -s -s -b unix.sh.wrapper unix.sh && :
%NEXT{"item"}%
}

install_SiteProfile()
{
%FOREACH{"item" in="base/startup"}% cd ${EPICS_HOME:?"undefined"}/base/startup &&
[ -f Site.profile ] && { ls | grep -q Site.profile.org && echo restoring latest Site.profile.org to Site.profile && mv $(ls -tr1 Site.profile.org.* | head -n 1 | xargs) Site.profile; :; } &&
cp Site.profile Site.profile.org$(date +%d%m%y) &&
%FOREACH{"list" in="Site.profile.post,Site.profile.pre,Site.profile.wrapper,modify.Site.profile.pl"}%
ln -s ${%EPICS_ALL_EPICS_TOP_DIR_NAME%:?"undefined"}/tools/startup/modify.Site.profile/$list ${EPICS_HOME:?}/base/startup && %NEXT{"list"}% %NEXT{"item"}% :
mv Site.profile Site.profile.main &&
perl -pi modify.Site.profile.pl Site.profile.main &&
ln -s -s -b Site.profile.wrapper Site.profile && :
%NEXT{"item"}%
}

install_MandatorySoftLinks()
{
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"}%
}

install_myepicslogins.sh()
{
cd %EPICSBASE_MYHOMEDIR% && wget -N --no-check-certificate https://wiki.gsi.de/pub/Epics/EpicsInstallationsAtGsiBase/myepicslogin.sh &&
cd %EPICSBASE_MYHOMEDIR% &&
perl -pi -e 's/^.*epicslogin\.sh -v.*$//g' myepicslogin.sh &&
cd %EPICSBASE_MYHOMEDIR% &&
echo -n -e "myepics_home=$%EPICS_HOME_DIR_NAME% \n" >> myepicslogin.sh&&
echo -n -e " . \$myepics_home/epicslogin.sh -v -H \$myepics_home -B \$myepics_home/base -A \$myepics_home/fcn_addtopath.bash $(basename $%EPICS_HOME_DIR_NAME%) \$([ -f \$myepics_home/base/startup/unix.sh ] && echo -P \$myepics_home/base/startup/unix.sh) \$* \n\n" >> myepicslogin.sh &&
echo -n -e "unset myepics_home \n" >> myepicslogin.sh&&
cd %EPICSBASE_MYHOMEDIR% && . ./myepicslogin.sh
}


make_epics()
{
cd %EPICSBASE_MYHOMEDIR% && . epics %EPICSBASE_VERSION &&
cd $EPICS_BASE && make distclean && make -j &&
cd %EPICSBASE_MYHOMEDIR% && . epics %EPICSBASE_VERSION
}


download_epicsBase && install_epicsScript && install_epicsloginSh && install_SiteProfile && install_MandatorySoftLinks && install_myepicslogins.sh && make_epics


r132 - 2020-08-18 - 14:36:59 - PeterZumbruch


Testing of base installation with makeBaseApp.pl

Example Application

Following the example given in chapter 2 section 2.2 of the EPICS IOC Application Developer's Guide:
  1. 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>
  2. 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>
        
  3. Listing the available PVs:
    epics> dbl
       <user>Host:aiExample
       <user>Host:aiExample1
       ...
       <user>Host:xxxExample
       
  4. Any EPICS client should be able to see those PVs, e.g.:
    $> camonitor <User>Host:aiExample1
       <user>Host:aiExample1        2007-08-09 10:42:00.037941 4 LOW MINOR
       <user>Host:aiExample1        2007-08-09 10:42:01.039624 5
       <user>Host:aiExample1        2007-08-09 10:42:02.041629 6 HIGH MINOR
       

r0 - 1970-01-01 - 01:00:00 - WikiGuest

Preparations in view of docker

src directory

https://panda-repo.gsi.de/f.feldbauer/epics-docker

Installation

  1. Set EPICS variables, if not yet done:
    (e.g. assuming the to be ~epics/EPICS-7.0.4, and running version 7.0.4)
    $> cd ${EPICS_MYHOME:?} && . epics -H $(dirname $PWD) -P "" $(basename $PWD) && export EPICS_MYHOME=$PWD
  2. Create src directory, if not yet existing:
    $> mkdir -p ${EPICS_HOME}/src && cd ${EPICS_HOME}/src && ln -s ${EPICS_MODULES}/RELEASE.local .

Compact
cd ${EPICS_MYHOME:?} && . epics -H $(dirname $PWD) -P "" $(basename $PWD) && export EPICS_MYHOME=$PWD &&
mkdir -p ${EPICS_HOME}/src && cd ${EPICS_HOME}/src && ln -s ${EPICS_MODULES}/RELEASE.local .

-- PeterZumbruch - 2020-08-07


Modules

Prerequisites for Modules

Modules directory structure

My personal idea (IMHO) is to have all modules belonging to one branch assigned to the base version, if you object tell me the convincing reasons.
-- PeterZumbruch - 02 Jul 2008

Therefore before installing any kind of module:

Installation

  1. Set EPICS variables, if not yet done:
    (e.g. assuming the to be ~epics/EPICS-7.0.4, and running version 7.0.4)
    cd ${EPICS_MYHOME:?} && . epics -H $(dirname $PWD) -P "" $(basename $PWD) && export EPICS_MYHOME=$PWD
  2. Create modules directory, if not yet existing:
    $> mkdir -p ${EPICS_MODULES}
  3. Uses the feature of a RELEASE.local
  4. Uses the feature of a RELEASE.local
    $> perl -pi -e "s|(^(EPICS_HOME\s*=\s*).*$)|#\1\n\2 ${EPICS_HOME}\n|g" ${EPICS_MODULES}/RELEASE.local
  5. Preparing relevant .dbd files, libraries, and library paths in ${EPICS_MODULES}
    $> mkdir -p ${EPICS_MODULES}/ld.so.conf.d &&
    printf "%-20s %s\n" '$(IOC_NAME)Ioc_DBD' '+= PVAServerRegister.dbd qsrv.dbd' > ${EPICS_MODULES}/modules.dbd &&
    printf "%-20s %s\n" '$(IOC_NAME)Ioc_LIBS' '+= qsrv $(EPICS_BASE_PVA_CORE_LIBS)' > ${EPICS_MODULES}/modules.lib

Compact
install_MODULES_PREREQUISITES()
{
cd ${EPICS_MYHOME:?} && . epics -H $(dirname $PWD) -P "" $(basename $PWD) && export EPICS_MYHOME=$PWD &&

mkdir -p ${EPICS_MODULES} &&

cd ${EPICS_MODULES} &&
wget -N https://wiki.gsi.de/pub/Epics/EpicsInstallationsAtGsi/RELEASE.local
&&

perl -pi -e "s|(^(EPICS_HOME\s*=\s*).*$)|#\1\n\2 ${EPICS_HOME}\n|g" ${EPICS_MODULES}/RELEASE.local &&

mkdir -p ${EPICS_MODULES}/ld.so.conf.d &&
printf "%-20s %s\n" '$(IOC_NAME)Ioc_DBD' '+= PVAServerRegister.dbd qsrv.dbd' > ${EPICS_MODULES}/modules.dbd &&
printf "%-20s %s\n" '$(IOC_NAME)Ioc_LIBS' '+= qsrv $(EPICS_BASE_PVA_CORE_LIBS)' > ${EPICS_MODULES}/modules.lib
}

install_MODULES_PREREQUISITES

-- PeterZumbruch - 2020-08-12

EPICS Sequencer - State Notation Language SNL:
Compiler (snc) and run-time (seq) support Module -- Version: 2.2.8 (2020-08-18)

Settings

\

[...] 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.

From https://www-csr.bessy.de/control/SoftDist/sequencer/Introduction.html#about

Prerequisites:

  • Set MODULE="BUSY"

SEQ = mod

Start Sub

Installation

%NEXT{"module"}%


IPAC Carrier and Module Drivers -- Version: 2.15 (2020-08-07)

Settings

\

  • Set IPAC_LAST_CHANGE_ON = 2020-08-07
  • Set IPAC_LAST_CHANGE_BY = PeterZumbruch
  • Set IPAC_TITLE = IPAC Carrier and Module Drivers
  • Set IPAC_SRCNAME = EPICS Ipac Module
  • Set IPAC_SHORTNAME = IPAC
  • Set IPAC_VERSION = 2.15
  • Set IPAC_VERSIONDATE = 2018-03-16
  • Set IPAC_VERSIONCOMMENT = valid for R3.14.12 or later
  • Set IPAC_DOWNLOADADRESS = https://github.com/epics-modules/ipac/releases
  • Set IPAC_DIRECTDOWNLOADADRESS = https://github.com/epics-modules/ipac/releases/download/2.15
  • Set IPAC_DOWNLOADPATH = ${EPICS_DOWNLOAD_DIR}/modules/support/ipac
  • Set IPAC_INSTALLDIR = $(SUPPORT)/ipac
  • Set IPAC_SRCDIR = ${EPICS_MODULES}/src/IPAC
  • Set IPAC_TARFILENAME = ipac-2.15.tar.gz
  • Set IPAC_TOPLEVELDIR = ${EPICS_MODULES}/src/IPAC/ipac-2.15
  • Set IPAC_OPTIONALMAKEOPTIONS = EPICS_BASE=${EPICS_BASE}
  • Set IPAC_FILESTOEDIT = configure/RELEASE
  • Set IPAC_INSTALLATIONDOCSBASE = https://svn.aps.anl.gov/trac/epics/ipac/wiki/V2.11/drvIpac
  • Set IPAC_INSTALLATIONDOCS = https://svn.aps.anl.gov/trac/epics/ipac/wiki/V2.11/drvIpac/drvIpac especially the section Installation
  • Set IPAC_DOCS = https://svn.aps.anl.gov/trac/epics/ipac
  • 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.

    From https://github.com/epics-modules/ipac/blob/master/README.md
  • Set IPAC_PREREQUISITES =

[...] 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.

From https://github.com/epics-modules/ipac/blob/master/README.md

Prerequisites:

  • Set MODULE="BUSY"

IPAC = mod

Start Sub

Installation

%NEXT{"module"}%


autosave -- Version: 5-10-1 (2020-08-11)

Settings

\

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.

From: http://htmlpreview.github.io/?https://github.com/epics-modules/autosave/blob/master/documentation/autoSaveRestore.html

Prerequisites:

  • Set MODULE="BUSY"

AUTOSAVE = mod

Start Sub

Installation

%NEXT{"module"}%


Sorted ascending seq 2-1-12
  • Set SSCAN_KEY = SSCAN
  • Set SSCAN_ABSTRACT =
  • -->

    sscan -- Version: 2-11-3 (2020-08-12)

    Settings

    \
    • Set SSCAN_LAST_CHANGE_ON = 2020-08-12
    • Set SSCAN_LAST_CHANGE_BY = PeterZumbruch
    • Set SSCAN_TITLE = sscan
    • Set SSCAN_SRCNAME = sscan
    • Set SSCAN_SHORTNAME = sscan
    • Set SSCAN_VERSION = 2-11-3
    • Set SSCAN_VERSIONDATE = 2019-06-15
    • Set SSCAN_VERSIONCOMMENT = valid for R3.14.12.4 or later
    • Set SSCAN_DOWNLOADADRESS = https://github.com/epics-modules/sscan
    • Set SSCAN_DIRECTDOWNLOADADRESS = https://github.com/epics-modules/sscan/archive
    • Set SSCAN_DOWNLOADPATH = ${EPICS_DOWNLOAD_DIR}/modules/support/sscan
    • Set SSCAN_INSTALLDIR = $(SUPPORT)/sscan
    • Set SSCAN_SRCDIR = ${EPICS_MODULES}/src/sscan
    • Set SSCAN_TARFILENAME = R2-11-3.tar.gz
    • Set SSCAN_TOPLEVELDIR = ${EPICS_MODULES}/src/sscan/sscan-R2-11-3
    • Set SSCAN_OPTIONALMAKEOPTIONS = EPICS_BASE=${EPICS_BASE}
    • Set SSCAN_FILESTOEDIT = configure/RELEASE
    • Set SSCAN_INSTALLATIONDOCSBASE = http://www.aps.anl.gov/bcda/synApps/sscan/sscan.html
    • Set SSCAN_INSTALLATIONDOCS = http://www.aps.anl.gov/bcda/synApps/sscan/sscan.html
    • Set SSCAN_DOCS = http://www.aps.anl.gov/bcda/synApps/sscan/sscanDoc.html
    • Set SSCAN_DOCS_TITLE = sscan module Documentation
    • Set SSCAN_ID = sscan Version: 2-11-3 (2020-08-12)
    • Set SSCAN_ID = sscan 2-11-3
    • Set SSCAN_RELEASE_ADDONS = :
    • Set SSCAN_SUPPORT = SEQ
    • Set SSCAN_NOSUPPORT = SUPPORT
    • Set SSCAN_DBD = sscan.dbd menuSscan.dbd scanparmRecord.dbd sscanProgressSupport.dbd sscanRecord.dbd sscanSupport.dbd
    • Set SSCAN_LIBS = sscan scanProgress
    • Set SSCAN_PREREQUISITES =
      Requires module Release tested
      seq 2-1-12
    • Set SSCAN_KEY = SSCAN
    • Set SSCAN_ABSTRACT =

    Prerequisites:

    Requires module Release tested
    seq 2-1-12

    • Set MODULE="BUSY"

    SSCAN = mod

    Start Sub

    Installation

    %NEXT{"module"}%


    calc module -- Version: 3-7-4 (2020-08-14)

    Settings

    \
    Required module Release needed
    sscan (optional) R2-8 (version # is not critical)
    autosave (optional) R5-0 (earlier versions will not work)
    • Set CALC_ABSTRACT =

    Prerequisites:

    %CALC_PREREQUISITES%

    • Set MODULE="BUSY"

    CALC = mod

    Start Sub

    Installation

    %NEXT{"module"}%


    asynDriver: Asynchronous Driver Support -- Version: 4.40 (2020-08-10)

    Settings

    \
    • Set ASYN_LAST_CHANGE_ON = 2020-08-10
    • Set ASYN_LAST_CHANGE_BY = PeterZumbruch
    • Set ASYN_TITLE = asynDriver: Asynchronous Driver Support
    • Set ASYN_SRCNAME = asynDriver
    • Set ASYN_SHORTNAME = asyn
    • Set ASYN_VERSION = 4.40
    • Set ASYN_VERSION_STRING = 4-40
    • Set ASYN_VERSIONDATE = 2020-07-17
    • Set ASYN_VERSIONCOMMENT = valid for R3.14.12.2 or later
    • Set ASYN_DOWNLOADADRESS = https://epics-modules.github.io/master/asyn/
    • Set ASYN_DIRECTDOWNLOADADRESS = https://github.com/epics-modules/asyn/archive
    • Set ASYN_DOWNLOADPATH = ${EPICS_DOWNLOAD_DIR}/modules/support/asyn
    • Set ASYN_INSTALLDIR = $(SUPPORT)/asyn
    • Set ASYN_SRCDIR = ${EPICS_MODULES}/src/asyn
    • Set ASYN_TARFILENAME = R4-40.tar.gz
    • Set ASYN_TOPLEVELDIR = ${EPICS_MODULES}/src/asyn/asyn-R4-40
    • Set ASYN_OPTIONALMAKEOPTIONS = EPICS_BASE=${EPICS_BASE}
    • Set ASYN_FILESTOEDIT = configure/RELEASE
    • Set ASYN_INSTALLATIONDOCSBASE = https://epics-controls.org/modules/support/asyn
    • Set ASYN_INSTALLATIONDOCS = https://epics-controls.org/modules/soft/asyn
    • Set ASYN_DOCS = https://epics-modules.github.io/master/asyn/
    • 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.

      From: https://github.com/epics-modules/asyn
    • Set ASYN_PREREQUISITES =
    Requires module Release requiered  
    seq optional
    IPAC 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.

    From: https://github.com/epics-modules/asyn

    Prerequisites:

    • Set MODULE="BUSY"

    ASYN = mod

    Start Sub

    Installation

    %NEXT{"module"}%


    busy -- Version: R1-7-2 (2020-08-12)

    Settings

    \
    • Set BUSY_LAST_CHANGE_ON = 2020-08-12
    • Set BUSY_LAST_CHANGE_BY = PeterZumbruch
    • Set BUSY_TITLE = busy
    • Set BUSY_SRCNAME = busy
    • Set BUSY_SHORTNAME = busy
    • Set BUSY_VERSION = R1-7-2
    • Set BUSY_VERSIONDATE = 15 Jun 2019
    • Set BUSY_VERSIONCOMMENT = valid for R3.14.12.3 or later
    • Set BUSY_DOWNLOADADRESS = https://github.com/epics-modules/busy/releases
    • Set BUSY_DIRECTDOWNLOADADRESS = https://github.com/epics-modules/busy/archive
    • Set BUSY_DOWNLOADPATH = ${EPICS_DOWNLOAD_DIR}/modules/support/busy
    • Set BUSY_INSTALLDIR = $(SUPPORT)/busy
    • Set BUSY_SRCDIR = ${EPICS_MODULES}/src/busy
    • Set BUSY_TARFILENAME = R1-7-2.tar.gz
    • Set BUSY_TOPLEVELDIR = ${EPICS_MODULES}/src/busy/busy-R1-7-2
    • Set BUSY_OPTIONALMAKEOPTIONS = EPICS_BASE=${EPICS_BASE}
    • Set BUSY_FILESTOEDIT = configure/RELEASE
    • Set BUSY_INSTALLATIONDOCSBASE = http://www.aps.anl.gov/bcda/synApps/busy/busy.html
    • Set BUSY_INSTALLATIONDOCS = http://www.aps.anl.gov/bcda/synApps/busy/busy.html
    • Set BUSY_DOCS = http://www.aps.anl.gov/bcda/synApps/busy/busyDocs.html
    • Set BUSY_DOCS_TITLE = calc module Documentation
    • Set BUSY_ID = busy Version: R1-7-2 (2020-08-12)
    • Set BUSY_KEY = BUSY
    • Set BUSY_ID = busy R1-7-2
    • Set BUSY_RELEASE_ADDONS = :
    • Set BUSY_SUPPORT = ASYN
    • Set BUSY_NOSUPPORT = SUPPORT
    • Set BUSY_DBD = busyRecord.dbd testBusyAsyn.dbd busySupport.dbd
    • Set BUSY_LIBS = busy
    • Set BUSY_ABSTRACT =
    • Set BUSY_PREREQUISITES =

    Prerequisites:

    • Set MODULE="BUSY"

    BUSY = mod

    Start Sub

    Installation

    %NEXT{"module"}%


    modbus (ASYN) -- Version: 3-1 (2020-08-12)

    Settings

    \
    • Set MODBUS_LAST_CHANGE_ON = 2020-08-12
    • Set MODBUS_LAST_CHANGE_BY = PeterZumbruch
    • Set MODBUS_TITLE = modbus (ASYN)
    • Set MODBUS_SRCNAME = modbus
    • Set MODBUS_SHORTNAME = modbus
    • Set MODBUS_VERSION = 3-1
    • Set MODBUS_VERSION_STRING = 3-1
    • Set MODBUS_VERSIONDATE = 2020-07-29
    • Set MODBUS_VERSIONCOMMENT = valid for R3.14.12.3 or later
    • Set MODBUS_DOWNLOADADRESS = https://github.com/epics-modules/modbus/releases
    • Set MODBUS_DIRECTDOWNLOADADRESS = https://github.com/epics-modules/modbus/archive
    • Set MODBUS_DOWNLOADPATH = ${EPICS_DOWNLOAD_DIR}/modules/support/modbus
    • Set MODBUS_INSTALLDIR = $(SUPPORT)/modbus
    • Set MODBUS_SRCDIR = ${EPICS_MODULES}/src/modbus
    • Set MODBUS_TARFILENAME = R3-1.tar.gz
    • Set MODBUS_TOPLEVELDIR = ${EPICS_MODULES}/src/modbus/modbus-R3-1
    • Set MODBUS_OPTIONALMAKEOPTIONS = EPICS_BASE=${EPICS_BASE}
    • Set MODBUS_FILESTOEDIT = configure/RELEASE
    • Set MODBUS_INSTALLATIONDOCSBASE = http://cars9.uchicago.edu/software/epics
    • Set MODBUS_INSTALLATIONDOCS = http://cars9.uchicago.edu/software/epics/modbus.html
    • Set MODBUS_DOCS = https://epics-modbus.readthedocs.io/en/latest
    • Set MODBUS_DOCS_TITLE = Modbus
    • 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.

    From: https://github.com/epics-modules/modbus

    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).

    From: https://epics-modbus.readthedocs.io/en/latest
    • Set MODBUS_PREREQUISITES = | Requires module | Release needed |
      asyn 4.33

    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.

    Prerequisites:

    Requires module Release needed
    asyn 4.33

    • Set MODULE="BUSY"

    MODBUS = mod

    Start Sub

    Installation

    %NEXT{"module"}%


    iocStats - EPICS IOC Status and Control -- Version: 3.1.16 (2020-08-12)

    Settings

    \
    • Set IOCSTATS_LAST_CHANGE_ON = 2020-08-12
    • Set IOCSTATS_LAST_CHANGE_BY = PeterZumbruch
    • Set IOCSTATS_TITLE = iocStats - EPICS IOC Status and Control
    • Set IOCSTATS_SRCNAME = devIocStats
    • Set IOCSTATS_SHORTNAME = devIocStats
    • Set IOCSTATS_VERSION = 3.1.16
    • Set IOCSTATS_VERSION_STRING = 3-1-16
    • Set IOCSTATS_VERSIONDATE = 2020-04-2019
    • Set IOCSTATS_VERSIONCOMMENT = valid for R3.14.12.3 or later
    • Set IOCSTATS_DOWNLOADADRESS = https://github.com/epics-modules/iocStats/releases
    • Set IOCSTATS_DIRECTDOWNLOADADRESS = https://github.com/epics-modules/iocStats/archive
    • Set IOCSTATS_DOWNLOADPATH = ${EPICS_DOWNLOAD_DIR}/modules/support/devIocStats
    • Set IOCSTATS_INSTALLDIR = $(SUPPORT)/iocStats
    • Set IOCSTATS_SRCDIR = ${EPICS_MODULES}/src/devIocStats
    • Set IOCSTATS_TARFILENAME = 3.1.16.tar.gz
    • Set IOCSTATS_TOPLEVELDIR = ${EPICS_MODULES}/src/devIocStats/iocStats-3.1.16
    • Set IOCSTATS_OPTIONALMAKEOPTIONS = EPICS_BASE=${EPICS_BASE}
    • Set IOCSTATS_FILESTOEDIT = configure/RELEASE
    • Set IOCSTATS_INSTALLATIONDOCSBASE = http://www.slac.stanford.edu/comp/unix/package/epics/site/devIocStats/
    • Set IOCSTATS_INSTALLATIONDOCS = http://www.slac.stanford.edu/comp/unix/package/epics/site/devIocStats/
    • Set IOCSTATS_DOCS =http://www.slac.stanford.edu/comp/unix/package/epics/site/devIocStats/README_devIocStats
    • Set IOCSTATS_DOCS_TITLE = iocStats - EPICS IOC Status and Control
    • Set IOCSTATS_ID = iocStats - EPICS IOC Status and Control Version: 3.1.16 (2020-08-12)
    • Set IOCSTATS_KEY = IOCSTATS
    • Set IOCSTATS_ID = devIocStats 3.1.16
    • Set IOCSTATS_RELEASE_ADDONS = :
    • Set IOCSTATS_SUPPORT = SEQ
    • Set IOCSTATS_NOSUPPORT = EPICS_MODULES
    • Set IOCSTATS_DBD = devIocStats.dbd iocAdmin.dbd testIocStats.dbd
    • Set IOCSTATS_LIBS = devIocStats
    • Set IOCSTATS_ABSTRACTS =
    • Set IOCSTATS_PREREQUISITES =

    %IOCSTATS_ABSTRACT%

    Prerequisites:

    • Set MODULE="BUSY"

    IOCSTATS = mod

    Start Sub

    Installation

    %NEXT{"module"}%


    StreamDevice 2 -- Version: 2.8.15 (2020-08-14)

    Settings

    \

    • Set STREAMDEV_LAST_CHANGE_ON = 2020-08-14
    • Set STREAMDEV_LAST_CHANGE_BY = PeterZumbruch
    • Set STREAMDEV_TITLE = StreamDevice 2
    • Set STREAMDEV_SRCNAME = StreamDevice
    • Set STREAMDEV_SHORTNAME = StreamDevice
    • Set STREAMDEV_VERSION = 2.8.15
    • Set STREAMDEV_VERSION_STRING = 2-8-15
    • Set STREAMDEV_VERSIONDATE = 2020-07-22
    • Set STREAMDEV_VERSIONCOMMENT =
    • Set STREAMDEV_TYPE = -git
    • Set STREAMDEV_GIT_REPOSITORY = https://github.com/paulscherrerinstitute/StreamDevice.git
    • Set STREAMDEV_GIT_CLONE_OPTION = --branch 2.8.15
    • Set STREAMDEV_DOWNLOADADRESS = https://github.com/paulscherrerinstitute/StreamDevice
    • Set STREAMDEV_DIRECTDOWNLOADADRESS = https://github.com/paulscherrerinstitute/StreamDevice/archive
    • Set STREAMDEV_DOWNLOADPATH = ${EPICS_DOWNLOAD_DIR}/modules/support/StreamDevice
    • Set STREAMDEV_INSTALLDIR = $(SUPPORT)/stream
    • Set STREAMDEV_SRCDIR = ${EPICS_MODULES}/src/StreamDevice/2.8.15
    • Set STREAMDEV_TARFILENAME = 2.8.15.tar.gz
    • Set STREAMDEV_TOPLEVELDIR = ${EPICS_MODULES}/src/StreamDevice/2.8.15/StreamDevice
    • Set STREAMDEV_OPTIONALMAKEOPTIONS = EPICS_BASE=${EPICS_BASE}
    • Set STREAMDEV_FILESTOEDIT = configure/RELEASE
    • Set STREAMDEV_INSTALLATIONDOCSBASE = http://epics.web.psi.ch/software/streamdevice/doc/
    • Set STREAMDEV_INSTALLATIONDOCS = http://epics.web.psi.ch/software/streamdevice
    • Set STREAMDEV_DOCS = http://epics.web.psi.ch/software/streamdevice
    • Set STREAMDEV_DOCS_TITLE = StreamDevice 2
    • Set STREAMDEV_ID = StreamDevice 2 Version: 2.8.15 (2020-08-14)
    • Set STREAMDEV_KEY = STREAMDEVICE
    • Set STREAMDEV_ID = StreamDevice 2.8.15
    • Set STREAMDEV_PCRE_INCLUDE = /usr/include
    • Set STREAMDEV_PCRE_LIB = /usr/lib/x86_64-linux-gnu
    • Set STREAMDEV_RELEASE_ADDONS = cd ${EPICS_MODULES}/src/StreamDevice/2.8.15/StreamDevice &&
      echo 'PCRE_INCLUDE=/usr/include' >> configure/RELEASE.Common.${EPICS_HOST_ARCH:?} &&
      echo 'PCRE_LIB=/usr/lib/x86_64-linux-gnu' >> configure/RELEASE.Common.${EPICS_HOST_ARCH:?}
    • Set STREAMDEV_LIBS = stream
    • Set STREAMDEV_DBD = stream.dbd streamApp.dbd stream-base.dbd stream-scalcout.dbd
    • Set STREAMDEV_PREREQUISITES =
      • EPICS base: EPICS base R3.14.6 or higher or EPICS base R3.13.7 or higher from http://epics.web.psi.ch/software/streamdevice
      • Modules Required:
      • RELEASE files
        • 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
        • Have a look at http://epics.web.psi.ch/software/streamdevice for more Details.
        • 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:
          • configure/RELEASE.<epics_host_arch>.Common
          • configure/RELEASE.Common.<epics_target_arch>
          • configure/RELEASE.<epics_host_arch>.<epics_target_arch>

    • 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.

      From: https://github.com/paulscherrerinstitute/StreamDevice/README.md

    • Set STREAMDEV_KEY = STREAMDEVICE

    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.

    From: https://github.com/paulscherrerinstitute/StreamDevice/README.md

    Prerequisites:

    • EPICS base: EPICS base R3.14.6 or higher or EPICS base R3.13.7 or higher from http://epics.web.psi.ch/software/streamdevice
    • Modules Required:
    • RELEASE files
      • 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
      • Have a look at http://epics.web.psi.ch/software/streamdevice for more Details.
      • 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:
        • configure/RELEASE.<epics_host_arch>.Common
        • configure/RELEASE.Common.<epics_target_arch>
        • configure/RELEASE.<epics_host_arch>.<epics_target_arch>

    • Set MODULE="BUSY"

    STREAMDEV = mod

    Start Sub

    Installation

    %NEXT{"module"}%


    ----------------------------------------------------------------

    MCoreUtils

    https://github.com/epics-modules/MCoreUtils

    execDevice


    ----------------------------------------------------------------

    % INCLUDE{"ToolsModuleInstallationCall" MODULE="AREADETECTOR" TYPE="-git"} %

    areaDetector: EPICS Support for Multidimensional Detectors -- Version: 3.9 (2020-08-18)

    Settings

    • Set AREADETECTOR_LAST_CHANGE_ON = 2020-08-18
    • Set AREADETECTOR_LAST_CHANGE_BY = PeterZumbruch
    • Set AREADETECTOR_TITLE = areaDetector: EPICS Support for Multidimensional Detectors
    • Set AREADETECTOR_SRCNAME = areaDetector
    • Set AREADETECTOR_SHORTNAME = areaDetector
    • Set AREADETECTOR_VERSION = 3.9
    • Set AREADETECTOR_VERSION_STRING = 3-9
    • Set AREADETECTOR_VERSIONDATE = 2020-02-24
    • Set AREADETECTOR_VERSIONCOMMENT =
    • Set AREADETECTOR_TYPE = -git
    • Set AREADETECTOR_GIT_REPOSITORY = https://github.com/areaDetector/areaDetector.git
    • Set AREADETECTOR_GIT_CLONE_OPTION = --recursive --branch R3-9
    • Set AREADETECTOR_DOWNLOADADRESS = https://github.com/areaDetector/areaDetector
    • Set AREADETECTOR_DIRECTDOWNLOADADRESS = https://github.com/areaDetector/areaDetector/archive
    • Set AREADETECTOR_DOWNLOADPATH = ${EPICS_DOWNLOAD_DIR}/modules/support/areaDetector
    • Set AREADETECTOR_INSTALLDIR = $(SUPPORT)/areaDetector/R3-9
    • Set AREADETECTOR_SRCDIR = ${EPICS_MODULES}/src/areaDetector/R3-9
    • Set AREADETECTOR_TARFILENAME = areaDetectorR3-9.tar.gz
    • Set AREADETECTOR_TOPLEVELDIR = ${EPICS_MODULES}/src/areaDetector/R3-9/areaDetector
    • Set AREADETECTOR_OPTIONALMAKEOPTIONS = EPICS_BASE=${EPICS_BASE}
    • Set AREADETECTOR_FILESTOEDIT = configure/RELEASE
    • Set AREADETECTOR_DOCS = http://cars9.uchicago.edu/software/epics/areaDetectorDoc.html
    • Set AREADETECTOR_DOCS_TITLE = areaDetector: EPICS Area Detector Support
    • Set AREADETECTOR_INSTALLATIONDOCS = https://areadetector.github.io/master/install_guide.html
    • 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

    %FOREACH{"mod" in="AREADETECTOR"}% %FOREACH{"sec" in="$mod_SETTINGS"}%
    Settings $sec $mod

    \
    $percentINCLUDE{"EpicsInstallationsAtGsi" section="$sec"}$percent
    %NEXT{"sec"}% %NEXT{"mod"}%

    %FOREACH{"module" in="AREADETECTOR"}%

    Prerequisites:

    Requires module Release needed Required for
    EPICS base 3.14.12.3 Base support
    asyn 4-21 Socket and interface support
    busy 1-4 busy record
    calc 3-0 scalcout and sseq records, needed by sscan database and useful for other databases
    sscan 2-8-1 sscan record
    autosave 5-0 Save/restore
    • RELEASEfile
      • 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:
        • configure/RELEASE.<epics_host_arch>.Common
        • configure/RELEASE.Common.<epics_target_arch>
        • configure/RELEASE.<epics_host_arch>.<epics_target_arch>

    Installation

    0. Set EPICS variables, if not yet done:
    (e.g. assuming the to be ~epics/EPICS-7.0.4, and running version 7.0.4)
    $> export MYEPICS_VERSION=${MYEPICS_VERSION:-7.0.4}
    $>   cd ${EPICS_MYHOME:?} && . epics -H $(dirname $PWD) -P "" $(basename $PWD) && export EPICS_MYHOME=$PWD
    1. To make things easier, first export the environment variable {EPICS_DOWNLOAD_DIR} containing the path to the download directory:
      $> [ -z "${EPICS_DOWNLOAD_DIR}" ] && export EPICS_DOWNLOAD_DIR=~/${EPICS_HOME}/Download
      Then create download directory, if not yet existing:
      $> mkdir -p %$module_DOWNLOADPATH%
    2. 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%
    3. Create installation directory:
      $> mkdir -p %$module_SRCDIR%
    4. Untar and unpack the file to %$module_SRCDIR%
      $> cd %$module_SRCDIR% &&
        tar axvf %$module_DOWNLOADPATH%/%$module_TARFILENAME%
      (%$module_VERSIONCOMMENT%)
    5. $> cd %$module_TOPLEVELDIR%

    1. 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:
      • either absolutely to EPICS_BASE=
      • or relatively to EPICS_BASE=$(TOP)/../base-7.0.4
      perl -pi -e "s|(^(EPICS_BASE=).*$)|#\1\n\2${EPICS_HOME}/base\n|g" $file
      %FOREACH{"support" in="ASYN,BUSY,CALC,SSCAN,AUTOSAVE"}%
      Add %$support_SHORTNAME% (%$support_KEY%) path
      %$support_TOPLEVELDIR%
      cd ${EPICS_MODULES}/src/areaDetector/R3-9/areaDetector &&
      if [ 0 -lt $(grep -w %$support_KEY%= $file | wc -l ) ];
      then if [ -d "%$support_TOPLEVELDIR%" ];
             then perl -pi -e "s|(^(%$support_KEY%=).*$)|#\1\n\2%$support_TOPLEVELDIR%\n|g" $file;
             else perl -pi -e "s|(^(%$support_KEY%=).*$)|#\1|g" $file
          fi
      else echo -e %$support_KEY%=%$support_TOPLEVELDIR%\\n | sed 's/ //g' >> $file;
      fi
      %NEXT{"support"}% %FOREACH{"nosupport" in="SUPPORT"}%
      Comment out $nosupport path
      cd ${EPICS_MODULES}/src/areaDetector/R3-9/areaDetector &&
      perl -pi -e "s|(^($nosupport=).*$)|#\1|g" $file;
      %NEXT{"nosupport"}% %NEXT{"file"}%
    2. Finally: Run make in the top-level directory:
      $> cd ${EPICS_MODULES}/src/areaDetector/R3-9/areaDetector && make

    Compact

    Download address: https://github.com/areaDetector/areaDetector

    [ -z "${EPICS_DOWNLOAD_DIR}" ] && export EPICS_DOWNLOAD_DIR=~/${EPICS_HOME}/Download

    cd ${EPICS_MYHOME:?} && . epics -H $(dirname $PWD) -P "" $(basename $PWD) && export EPICS_MYHOME=$PWD

    mkdir -p ${EPICS_DOWNLOAD_DIR}/modules/support/areaDetector
    cd ${EPICS_DOWNLOAD_DIR}/modules/support/areaDetector &&
    wget -N https://github.com/areaDetector/areaDetector/archive/areaDetectorR3-9.tar.gz

    groups | grep -q -w epicsadm && chgrp -R epicsadm ${EPICS_DOWNLOAD_DIR}/modules/support/areaDetector
    find ${EPICS_DOWNLOAD_DIR}/modules/support/areaDetector -user $(id -n -u) -exec chmod ug+rw {} \;

    mkdir -p $(SUPPORT)/areaDetector/R3-9
    cd $(SUPPORT)/areaDetector/R3-9 &&
    tar axvf ${EPICS_DOWNLOAD_DIR}/modules/support/areaDetector/areaDetectorR3-9.tar.gz
    %FOREACH{"file" in="configure/RELEASE"}% cd ${EPICS_MODULES}/src/areaDetector/R3-9/areaDetector &&
    perl -pi -e "s|(^(EPICS_BASE=).*$)|#\1\n\2${EPICS_HOME}/base\n|g" $file
    %FOREACH{"support" in="ASYN,BUSY,CALC,SSCAN,AUTOSAVE"}% cd ${EPICS_MODULES}/src/areaDetector/R3-9/areaDetector &&
    if [ 0 -lt $(grep -w %$support_KEY%= $file | wc -l ) ];
    then if [ -d "%$support_TOPLEVELDIR%" ];
           then perl -pi -e "s|(^(%$support_KEY%=).*$)|#\1\n\2%$support_TOPLEVELDIR%\n|g" $file;
           else perl -pi -e "s|(^(%$support_KEY%=).*$)|#\1|g" $file
        fi
    else echo -e %$support_KEY%=%$support_TOPLEVELDIR%\\n | sed 's/ //g' >> $file;
    fi
    %NEXT{"support"}% %FOREACH{"nosupport" in="SUPPORT"}% cd ${EPICS_MODULES}/src/areaDetector/R3-9/areaDetector &&
    perl -pi -e "s|(^($nosupport=).*$)|#\1|g" $file;
    %NEXT{"nosupport"}% %NEXT{"file"}%

    cd ${EPICS_MODULES}/src/areaDetector/R3-9/areaDetector && make

    Documentation

    -- PeterZumbruch - 2020-08-18
    %NEXT{"module"}%

    %FOREACH{"module" in="MOTOR"}%

    %$module_TITLE% -- Version: %$module_VERSION% (%$module_LAST_CHANGE_ON%)

    Settings

    Warning: Can't find named section $mod_SETTINGS in topic Epics.EpicsInstallationsAtGsi

    Prerequisites

    Requires module Release needed
    asyn R4-21
    IPAC R2-12

    Installation

    0. Set EPICS variables, if not yet done:
    (e.g. assuming the to be ~epics/EPICS-7.0.4, and running version 7.0.4)
    $> export MYEPICS_VERSION=${MYEPICS_VERSION:-7.0.4}
    $>   cd ${EPICS_MYHOME:?} && . epics -H $(dirname $PWD) -P "" $(basename $PWD) && export EPICS_MYHOME=$PWD
    1. To make things easier, first export the environment variable {EPICS_DOWNLOAD_DIR} containing the path to the download directory:
      $> [ -z "${EPICS_DOWNLOAD_DIR}" ] && export EPICS_DOWNLOAD_DIR=~/${EPICS_HOME}/Download
      Then create download directory, if not yet existing:
      $> mkdir -p %$module_DOWNLOADPATH%
    2. 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%
    3. Create installation directory:
      $> mkdir -p %$module_SRCDIR%
    4. Untar and unpack the file to %$module_SRCDIR%
      $> cd %$module_SRCDIR% &&
        tar axvf %$module_DOWNLOADPATH%/%$module_TARFILENAME%
      (%$module_VERSIONCOMMENT%)
    5. $> cd %$module_TOPLEVELDIR%

    1. 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
      perl -pi -e "s|(^(EPICS_BASE=).*$)|#\1\n\2${EPICS_HOME}/base\n|g" $file
      1. 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%= $file | grep -E -v '^\s*#' | wc -l ) ];
        then if [ -d "%$support_TOPLEVELDIR%" ];
               then perl -pi -e "s|(^(%$support_KEY%=).*$)|#\1\n\2%$support_TOPLEVELDIR%\n|g" $file;
               else perl -pi -e "s|(^(%$support_KEY%=).*$)|#\1|g" $file
            fi
        else echo -e %$support_KEY%=%$support_TOPLEVELDIR%\\n | sed 's/ //g' >> $file;
        fi
        %NEXT{"support"}% %FOREACH{"nosupport" in="%$module_NOSUPPORT%"}%
        Comment out $nosupport path
        cd %$module_TOPLEVELDIR% &&
        perl -pi -e "s|(^($nosupport=).*$)|#\1|g" $file;
        %NEXT{"nosupport"}% %NEXT{"file"}%
    2. Finally: Run make in the top-level directory:
      $> cd %$module_TOPLEVELDIR% && make realclean && make && make install

    Compact

    Download address: %$module_DOWNLOADADRESS%

    export MYEPICS_VERSION=${MYEPICS_VERSION:-7.0.4} &&
      cd ${EPICS_MYHOME:?} && . epics -H $(dirname $PWD) -P "" $(basename $PWD) && export EPICS_MYHOME=$PWD &&

    [ -z "${EPICS_DOWNLOAD_DIR}" ] && export EPICS_DOWNLOAD_DIR=~/${EPICS_HOME}/Download &&

    mkdir -p %$module_DOWNLOADPATH% &&
    cd %$module_DOWNLOADPATH% &&
      wget -N %$module_DIRECTDOWNLOADADRESS%/%$module_TARFILENAME%
    &&
    mkdir -p %$module_SRCDIR% &&
    cd %$module_SRCDIR% &&
      tar axvf %$module_DOWNLOADPATH%/%$module_TARFILENAME%
    &&

    cd %$module_TOPLEVELDIR% &&
    %FOREACH{"file" in="%$module_FILESTOEDIT%"}% cd %$module_TOPLEVELDIR% &&
    perl -pi -e "s|(^(EPICS_BASE=).*$)|#\1\n\2${EPICS_HOME}/base\n|g" $file &&
    %FOREACH{"support" in="%$module_SUPPORT%"}% cd %$module_TOPLEVELDIR% &&
    if [ 0 -lt $(grep -w %$support_KEY%= $file | grep -E -v '^\s*#' | wc -l ) ];
    then if [ -d "%$support_TOPLEVELDIR%" ];
           then perl -pi -e "s|(^(%$support_KEY%=).*$)|#\1\n\2%$support_TOPLEVELDIR%\n|g" $file;
           else perl -pi -e "s|(^(%$support_KEY%=).*$)|#\1|g" $file
        fi
    else echo -e %$support_KEY%=%$support_TOPLEVELDIR%\\n | sed 's/ //g' >> $file;
    fi
    %NEXT{"support"}% %FOREACH{"nosupport" in="%$module_NOSUPPORT%"}% cd %$module_TOPLEVELDIR% &&
    perl -pi -e "s|(^($nosupport=).*$)|#\1|g" $file;
    %NEXT{"nosupport"}% %NEXT{"file"}%

    cd %$module_TOPLEVELDIR% && make realclean && make && make install

    Documentation

    -- %$module_LAST_CHANGE_BY% - %$module_LAST_CHANGE_ON%
    %NEXT{"module"}%

    %FOREACH{"module" in="DALLAS1WIRE_RASPBERRYPI"}%

    %$module_TITLE% -- Version: %$module_VERSION% (%$module_LAST_CHANGE_ON%)

    Prerequisites

    Requires module Release needed
    sequencer  

    Installation

    0. Set EPICS variables, if not yet done:
    (e.g. assuming the to be ~epics/EPICS-7.0.4, and running version 7.0.4)
    $> export MYEPICS_VERSION=${MYEPICS_VERSION:-7.0.4}
    $>   cd ${EPICS_MYHOME:?} && . epics -H $(dirname $PWD) -P "" $(basename $PWD) && export EPICS_MYHOME=$PWD
    1. To make things easier, first export the environment variable {EPICS_DOWNLOAD_DIR} containing the path to the download directory:
      $> [ -z "${EPICS_DOWNLOAD_DIR}" ] && export EPICS_DOWNLOAD_DIR=~/${EPICS_HOME}/Download
      Then create download directory, if not yet existing:
      $> mkdir -p %$module_DOWNLOADPATH%
    2. 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%
    3. Create installation directory:
      $> mkdir -p %$module_SRCDIR%
    4. Untar and unpack the file to %$module_SRCDIR%
      $> cd %$module_SRCDIR% &&
        tar axvf %$module_DOWNLOADPATH%/%$module_TARFILENAME%
      (%$module_VERSIONCOMMENT%)
    5. $> cd %$module_TOPLEVELDIR%

    1. 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
      perl -pi -e "s|(^(EPICS_BASE\s*=).*$)|#\1\n\2${EPICS_HOME}/base\n|g" $file
      1. Add/remove support paths to/from $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
        %NEXT{"support"}% %FOREACH{"nosupport" in="%$module_NOSUPPORT%"}%
        Comment out $nosupport path
        cd %$module_TOPLEVELDIR% &&
        perl -pi -e "s|(^($nosupport=).*$)|#\1|g" $file;
        %NEXT{"nosupport"}% %NEXT{"file"}%
    2. Finally: Run make in the top-level directory:
      $> cd %$module_TOPLEVELDIR% && make realclean && make && make install

    Compact

    Download address: %$module_DOWNLOADADRESS%

    export MYEPICS_VERSION=${MYEPICS_VERSION:-7.0.4} &&
      cd ${EPICS_MYHOME:?} && . epics -H $(dirname $PWD) -P "" $(basename $PWD) && export EPICS_MYHOME=$PWD &&

    [ -z "${EPICS_DOWNLOAD_DIR}" ] && export EPICS_DOWNLOAD_DIR=~/${EPICS_HOME}/Download &&

    mkdir -p %$module_DOWNLOADPATH% &&
    cd %$module_DOWNLOADPATH% &&
      wget -N %$module_DIRECTDOWNLOADADRESS%/%$module_TARFILENAME%
    &&
    mkdir -p %$module_SRCDIR% &&
    cd %$module_SRCDIR% &&
      tar axvf %$module_DOWNLOADPATH%/%$module_TARFILENAME%
    &&

    cd %$module_TOPLEVELDIR% &&
    %FOREACH{"file" in="%$module_FILESTOEDIT%"}% cd %$module_TOPLEVELDIR% &&
    perl -pi -e "s|(^(EPICS_BASE\s*=).*$)|#\1\n\2${EPICS_HOME}/base\n|g" $file &&
    %FOREACH{"support" in="%$module_SUPPORT%"}% 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
    %NEXT{"support"}% %FOREACH{"nosupport" in="%$module_NOSUPPORT%"}% cd %$module_TOPLEVELDIR% &&
    perl -pi -e "s|(^($nosupport=).*$)|#\1|g" $file;
    %NEXT{"nosupport"}% %NEXT{"file"}%

    cd %$module_TOPLEVELDIR% && make realclean && make && make install

    Documentation

    -- %$module_LAST_CHANGE_BY% - %$module_LAST_CHANGE_ON%
    %NEXT{"module"}%

    %FOREACH{"module" in="EPICS_RPI_CAN"}%

    %$module_TITLE% -- Version: %$module_VERSION% (%$module_LAST_CHANGE_ON%)

    Prerequisites

    Requires module Release needed
    asyn 4-21
    sequencer optional
    PEAK Systems CAN Driver or CAN driver for Raspberry Pi Adaptor Board

    Installation

    0. Set EPICS variables, if not yet done:
    (e.g. assuming the to be ~epics/EPICS-7.0.4, and running version 7.0.4)
    $> export MYEPICS_VERSION=${MYEPICS_VERSION:-7.0.4}
    $>   cd ${EPICS_MYHOME:?} && . epics -H $(dirname $PWD) -P "" $(basename $PWD) && export EPICS_MYHOME=$PWD
    1. To make things easier, first export the environment variable {EPICS_DOWNLOAD_DIR} containing the path to the download directory:
      $> [ -z "${EPICS_DOWNLOAD_DIR}" ] && export EPICS_DOWNLOAD_DIR=~/${EPICS_HOME}/Download
      Then create download directory, if not yet existing:
      $> mkdir -p %$module_DOWNLOADPATH%
    2. 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%
    3. Create installation directory:
      $> mkdir -p %$module_SRCDIR%
    4. Untar and unpack the file to %$module_SRCDIR%
      $> cd %$module_SRCDIR% &&
        tar axvf %$module_DOWNLOADPATH%/%$module_TARFILENAME%
      (%$module_VERSIONCOMMENT%)
    5. $> cd %$module_TOPLEVELDIR%

    1. cd %$module_INSTALLDIR% &&
      unzip %$module_DOWNLOADPATH%/%$module_TARFILENAME%
    CAN_interface
    1. cd %$module_TOPLEVELDIR%/../CAN_interface &&
      make && make install
    drvAsynCan
    1. 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
      1. 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
        %NEXT{"support"}% %FOREACH{"nosupport" in="%$module_NOSUPPORT%"}%
        Comment out $nosupport path
        cd %$module_TOPLEVELDIR% &&
        perl -pi -e "s|(^($nosupport=).*$)|#\1|g" $file;
        %NEXT{"nosupport"}% %NEXT{"file"}%
    2. Finally: Run make in the top-level directory:
      $> cd %$module_TOPLEVELDIR% && make realclean && make && make install

    Compact

    Download address: %$module_DOWNLOADADRESS%

    export MYEPICS_VERSION=${MYEPICS_VERSION:-7.0.4} &&
      cd ${EPICS_MYHOME:?} && . epics -H $(dirname $PWD) -P "" $(basename $PWD) && export EPICS_MYHOME=$PWD &&

    [ -z "${EPICS_DOWNLOAD_DIR}" ] && export EPICS_DOWNLOAD_DIR=~/${EPICS_HOME}/Download &&

    mkdir -p %$module_DOWNLOADPATH% &&
    cd %$module_DOWNLOADPATH% &&
      wget -N %$module_DIRECTDOWNLOADADRESS%/%$module_TARFILENAME%
    &&
    mkdir -p %$module_SRCDIR% &&
    cd %$module_SRCDIR% &&
      tar axvf %$module_DOWNLOADPATH%/%$module_TARFILENAME%
    &&

    cd %$module_TOPLEVELDIR% &&

    cd %$module_INSTALLDIR% &&
    unzip %$module_DOWNLOADPATH%/%$module_TARFILENAME%

    cd %$module_TOPLEVELDIR%/../CAN_interface &&
    make && make install

    %FOREACH{"file" in="%$module_FILESTOEDIT%"}% cd %$module_TOPLEVELDIR% &&
    perl -pi -e "s|(^(EPICS_BASE\s*=).*$)|#\1\n\2${EPICS_HOME}/base\n|g" $file &&
    %FOREACH{"support" in="%$module_SUPPORT%"}% 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
    %NEXT{"support"}% %FOREACH{"nosupport" in="%$module_NOSUPPORT%"}% cd %$module_TOPLEVELDIR% &&
    perl -pi -e "s|(^($nosupport=).*$)|#\1|g" $file;
    %NEXT{"nosupport"}% %NEXT{"file"}%

    cd %$module_TOPLEVELDIR% && make realclean && make && make install

    Documentation

    -- %$module_LAST_CHANGE_BY% - %$module_LAST_CHANGE_ON%
    %NEXT{"module"}%

    allenBradley


    caPutLog


    imCaLib


    DLI Ethernet Power Controller II


    PV List Server


    Other Tools or Libraries

    Extensions

    Prerequisites for Extensions

    Extensions directory structure

    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).
    From %$item_INSTALLATIONDOCS%

    <div style="text-align:right"><a style="font-size:smaller" href="/edit/Epics/ToolsExtensionInstallationSectionCode">edit</a></div>
    1. Set EPICS variables, if not yet done:
      (e.g. assuming the to be ~epics/EPICS-7.0.4, and running version 7.0.4)
      $> cd ${EPICS_MYHOME:?} && . epics -H $(dirname $PWD) -P "" $(basename $PWD) && export EPICS_MYHOME=$PWD
    2. To make things easier, first export the environment variable {EPICS_DOWNLOAD_DIR} containing the path to the download directory:
      $> [ -z "${EPICS_DOWNLOAD_DIR}" ] && export {EPICS_DOWNLOAD_DIR}=~/${EPICS_HOME}/Download
      Then create download directory, if not yet existing:
      $> mkdir -p %$item_DOWNLOADPATH%
    3. 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%
    4. To avoid further problems, set the correct group (if you are a member of it (GSI specific)): epicsadm
      $> groups | grep -q -w epicsadm && chgrp -R epicsadm %$item_DOWNLOADPATH%
    5. and also set the correct rights:
      $> find %$item_DOWNLOADPATH% -user $(id -n -u) -exec chmod ug+rw {} \;
    6. Untar and unpack the file to %$item_INSTALLDIR% %$item_ASSUMPTION%
      $> cd %$item_INSTALLDIR% && tar axvf %$item_DOWNLOADPATH%/%$item_TARFILENAME%
    7. $> cd %$item_INSTALLDIR_MAKE%
    8. now edit the file(s) %$item_FILESTOEDIT% 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
      perl -pi -e "s|(^(EPICS_BASE=).*$)|#\1\n\2${EPICS_HOME}/base\n|g" %$item_FILESTOEDIT%
    9. Initial make
      $> cd %$item_INSTALLDIR_MAKE% && make realclean && make && make install

    • Compact Download address: %$item_DOWNLOADADRESS%
      cd ${EPICS_MYHOME:?} && . epics -H $(dirname $PWD) -P "" $(basename $PWD) && export EPICS_MYHOME=$PWD

      [ -z "${EPICS_DOWNLOAD_DIR}" ] && export "$SUBSTITUTE(${EPICS_DOWNLOAD_DIR},[${}],,,r)"}%=~/${EPICS_HOME}/Download
      mkdir -p %$item_DOWNLOADPATH% && cd %$item_DOWNLOADPATH% &&
      wget -N %$item_DIRECTDOWNLOADADRESS%/%$item_TARFILENAME% &&
      cd %$item_INSTALLDIR% &&
      tar axvf %$item_DOWNLOADPATH%/%$item_TARFILENAME%
      cd %$item_INSTALLDIR_MAKE%
      perl -pi -e "s|(^(EPICS_BASE=).*$)|#\1\n\2${EPICS_HOME}/base\n|g" %$item_FILESTOEDIT%
      cd %$item_INSTALLDIR_MAKE% &&
      make realclean && make && make install
    -- %$item_LAST_CHANGE_BY% - %$item_LAST_CHANGE_ON%

    %NEXT{"item"}%

    optional XMOTIF - X-Motif Settings (05 Nov 2013)

    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)
    $> cd ${EPICS_MYHOME:?} && . epics -H $(dirname $PWD) -P "" $(basename $PWD) && export EPICS_MYHOME=$PWD

    now edit the file(s)${EPICS_EXTENSIONS}/configure/os/CONFIG_SITE.${EPICS_HOST_ARCH}.${T_A}
    |
    X11_LIB=/usr/lib 
                                         X11_INC=/usr/include/X11
                                         MOTIF_LIB=/usr/lib
                                         MOTIF_INC=/usr/include | into | %CODE{"makefile"}%  
                                         #X11_LIB=/usr/lib
                                         #X11_INC=/usr/include/X11
                                         #MOTIF_LIB=/usr/lib
                                         #MOTIF_INC=/usr/include |
    <br />
    
    T

    A


    if [ ! -z $EDITOR ];
    then
        $EDITOR${EPICS_EXTENSIONS}/configure/os/CONFIG_SITE.${EPICS_HOST_ARCH}.${T_A}
    else
        echo '$EDITOR' undefined ... exiting;
    fi

    -- PeterZumbruch - 05 Nov 2013


    MSI


    ALH - Alarm Handler -- Version: 1.2.33 (26 Aug 2013)

    Installation

    1. Set EPICS variables, if not yet done:
      (e.g. assuming the to be ~epics/EPICS-7.0.4, and running version 7.0.4)
      $> cd ${EPICS_MYHOME:?} && . epics -H $(dirname $PWD) -P "" $(basename $PWD) && export EPICS_MYHOME=$PWD
    2. To make things easier, first export the environment variable "$SUBSTITUTE(${EPICS_DOWNLOAD_DIR},[${}],,,r)"}% containing the path to the download directory:
      $> [ -z "${EPICS_DOWNLOAD_DIR}" ] && export "$SUBSTITUTE(${EPICS_DOWNLOAD_DIR},[${}],,,r)"}%=~/${EPICS_HOME}/Download
      Then create download directory, if not yet existing:
      $> mkdir -p ${EPICS_DOWNLOAD_DIR}/extensions/alh
    3. Download the latest version of alh (version as of 21 May 2013 is 1.2.33)
      from: https://epics-controls.org/extensions/alh/index.php
      to the directory ${EPICS_DOWNLOAD_DIR}/extensions/alh
      $> cd ${EPICS_DOWNLOAD_DIR}/extensions/alh &&
      wget -N https://epics-controls.org/download/extensions/alh1_2_33.tar.gz
    4. To avoid further problems, set the correct group (if you are a member of it (GSI specific)): epicsadm
      $> groups | grep -q -w epicsadm && chgrp -R epicsadm ${EPICS_DOWNLOAD_DIR}/extensions/alh
    5. and also set the correct rights:
      $> find ${EPICS_DOWNLOAD_DIR}/extensions/alh -user $(id -n -u) -exec chmod ug+rw {} \;
    6. Having followed the instructions for the Prerequisites for Extensions you should have in your (= ${EPICS_EXTENSIONS}) a subdirectory src.
    7. 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
    8. 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
      perl -pi -e "s&^ALH = alh.*$&ALH = alh1_2_33&" ${EPICS_EXTENSIONS}/src/Makefile
    9. Run make in the top-level directory:
      $> cd ${EPICS_EXTENSIONS}/src && make

    Compact
    Download address: https://epics-controls.org/extensions/alh/index.php
    [ -z "${EPICS_DOWNLOAD_DIR}" ] && export "$SUBSTITUTE(${EPICS_DOWNLOAD_DIR},[${}],,,r)"}%=~/${EPICS_HOME}/Download

    cd ${EPICS_MYHOME:?} && . epics -H $(dirname $PWD) -P "" $(basename $PWD) && export EPICS_MYHOME=$PWD

    mkdir -p ${EPICS_DOWNLOAD_DIR}/extensions/alh
    cd ${EPICS_DOWNLOAD_DIR}/extensions/alh &&
    wget -N https://epics-controls.org/download/extensions/alh1_2_33.tar.gz
    groups | grep -q -w epicsadm && chgrp -R epicsadm ${EPICS_DOWNLOAD_DIR}/extensions/alh
    find ${EPICS_DOWNLOAD_DIR}/extensions/alh -user $(id -n -u) -exec chmod ug+rw {} \;
    cd ${EPICS_EXTENSIONS}/src && tar axvf ${EPICS_DOWNLOAD_DIR}/extensions/alh/alh1_2_33.tar.gz
    perl -pi -e "s&^ALH = alh.*$&ALH = alh1_2_33&" ${EPICS_EXTENSIONS}/src/Makefile
    cd ${EPICS_EXTENSIONS}/src && make

    Documentation

    TIP ALH Users Guide - alh1.2.15 through alh1.2.31 .

    -- PeterZumbruch - 26 Aug 2013


    CaSnooper - Channel Access Broadcast Monitoring Tool -- Version: 2.1.2.3 (26 Aug 2013)

    Installation

    1. Set EPICS variables, if not yet done:
      (e.g. assuming the to be ~epics/EPICS-7.0.4, and running version 7.0.4)
      $> cd ${EPICS_MYHOME:?} && . epics -H $(dirname $PWD) -P "" $(basename $PWD) && export EPICS_MYHOME=$PWD
    2. To make things easier, first export the environment variable "$SUBSTITUTE(${EPICS_DOWNLOAD_DIR},[${}],,,r)"}% containing the path to the download directory:
      $> [ -z "${EPICS_DOWNLOAD_DIR}" ] && export "$SUBSTITUTE(${EPICS_DOWNLOAD_DIR},[${}],,,r)"}%=~/${EPICS_HOME}/Download
      Then create download directory, if not yet existing:
      $> mkdir -p ${EPICS_DOWNLOAD_DIR}/extensions/caSnooper
    3. Download the latest version of caSnooper (version as of 03 Jul 2013 is 2.1.2.3)
      from: https://epics-controls.org/extensions/caSnooper/index.php
      to the directory ${EPICS_DOWNLOAD_DIR}/extensions/caSnooper
      $> cd ${EPICS_DOWNLOAD_DIR}/extensions/caSnooper &&
      wget -N https://epics-controls.org/download/extensions/caSnooper2_1_2_3.tar.gz
    4. To avoid further problems, set the correct group (if you are a member of it (GSI specific)): epicsadm
      $> groups | grep -q -w epicsadm && chgrp -R epicsadm ${EPICS_DOWNLOAD_DIR}/extensions/caSnooper
    5. and also set the correct rights:
      $> find ${EPICS_DOWNLOAD_DIR}/extensions/caSnooper -user $(id -n -u) -exec chmod ug+rw {} \;
    6. Having followed the instructions for the Prerequisites for Extensions you should have in your (= ${EPICS_EXTENSIONS}) a subdirectory src.
    7. 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
    8. 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
      perl -pi -e "s&^CASNOOPER = caSnooper.*$&CASNOOPER = caSnooper2_1_2_3&" ${EPICS_EXTENSIONS}/src/Makefile
    9. Run make in the top-level directory:
      $> cd ${EPICS_EXTENSIONS}/src && make

    Compact

    Download address: https://epics-controls.org/extensions/caSnooper/index.php
    [ -z "${EPICS_DOWNLOAD_DIR}" ] && export "$SUBSTITUTE(${EPICS_DOWNLOAD_DIR},[${}],,,r)"}%=~/${EPICS_HOME}/Download

    cd ${EPICS_MYHOME:?} && . epics -H $(dirname $PWD) -P "" $(basename $PWD) && export EPICS_MYHOME=$PWD

    mkdir -p ${EPICS_DOWNLOAD_DIR}/extensions/caSnooper
    cd ${EPICS_DOWNLOAD_DIR}/extensions/caSnooper &&
    wget -N https://epics-controls.org/download/extensions/caSnooper2_1_2_3.tar.gz
    groups | grep -q -w epicsadm && chgrp -R epicsadm ${EPICS_DOWNLOAD_DIR}/extensions/caSnooper
    find ${EPICS_DOWNLOAD_DIR}/extensions/caSnooper -user $(id -n -u) -exec chmod ug+rw {} \;
    cd ${EPICS_EXTENSIONS}/src && tar axvf ${EPICS_DOWNLOAD_DIR}/extensions/caSnooper/caSnooper2_1_2_3.tar.gz
    perl -pi -e "s&^CASNOOPER = caSnooper.*$&CASNOOPER = caSnooper2_1_2_3&" ${EPICS_EXTENSIONS}/src/Makefile
    cd ${EPICS_EXTENSIONS}/src && make

    Documentation

    TIP CASNOOPER User Guide.

    -- PeterZumbruch - 26 Aug 2013


    EZCA - E-Z (Easy) Channel Access)

    $ 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)

    PEZCA

    Still supported by author but based on EZCA, therefore obsolete (see versions prior to 184 for documentation on this topic)

    EDM Extensible Display Manager -- Version: 1-12-85 (13 Mar 2013)

    Settings

    • Set EDM_LAST_CHANGE_ON = 13 Mar 2013
    • Set EDM_LAST_CHANGE_BY = PeterZumbruch
    • Set EDM_TITLE = EDM Extensible Display Manager
    • Set EDM_SRCNAME = edm
    • Set EDM_SHORTNAME = EDM
    • Set EDM_VERSION = 1-12-85
    • Set EDM_VERSION_STRING = 1-12-85
    • Set EDM_VERSIONDATE = 13 Dec 2012
    • Set EDM_VERSIONCOMMENT =
    • Set EDM_DOWNLOADADRESS = http://ics-web.sns.ornl.gov/edm/
    • Set EDM_DIRECTDOWNLOADADRESS = http://ics-web.sns.ornl.gov/edm/info/getAttachment.php?attachId=321&name=
    • Set EDM_DIRECTDOWLOADADRESS_TAG = &type=application/x-gzip&size=2663593&mon=Jul&theDay=8&year=2009
    • Set EDM_DOWNLOADPATH = ${EPICS_DOWNLOAD_DIR}/extensions/edm
    • Set EDM_INSTALLDIR = ${EPICS_EXTENSIONS}/src
    • Set EDM_TARFILENAME = edm-1-12-85.tgz
    • Set EDM_TOPLEVELDIR = ${EPICS_EXTENSIONS}/src/edm
    • Set EDM_OPTIONALMAKEOPTIONS = EPICS_BASE=${EPICS_BASE}
    • Set EDM_INSTALLATIONDOCS =
    • Set EDM_DOCS = http://ics-web.sns.ornl.gov/edm/edmUserManual/index.html
    • Set EDM_DOCS_TITLE = EDM User Guide
    • Set EDM_ID = EDM Extensible Display Manager Version: 1-12-85 (13 Mar 2013)
    • Set EDM_STATUS_3_14_12_3_lenny32 = +
    • Set EDM_STATUS_3_14_12_3_lenny64 = +
    • Set EDM_STATUS_3_14_12_3_squeeze64 = +

    Not yet working

    Prerequisites

    • Needs GIF and PNG libraries installed
      [ -f /usr/include/gif_lib.h ] || echo install GIF

    Installation

    1. Set EPICS variables, if not yet done:
      (e.g. assuming the to be ~epics/EPICS-7.0.4, and running version 7.0.4)
      $> cd ${EPICS_MYHOME:?} && . epics -H $(dirname $PWD) -P "" $(basename $PWD) && export EPICS_MYHOME=$PWD
    2. To make things easier, first export the environment variable "$SUBSTITUTE(${EPICS_DOWNLOAD_DIR},[${}],,,r)"}% containing the path to the download directory:
      $> [ -z "${EPICS_DOWNLOAD_DIR}" ] && export "$SUBSTITUTE(${EPICS_DOWNLOAD_DIR},[${}],,,r)"}%=~/${EPICS_HOME}/Download
      Then create download directory, if not yet existing:
      $> mkdir -p ${EPICS_DOWNLOAD_DIR}/extensions/edm
    3. 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
    4. To avoid further problems, set the correct group (if you are a member of it (GSI specific)): epicsadm
      $> groups | grep -q -w epicsadm && chgrp -R epicsadm ${EPICS_DOWNLOAD_DIR}/extensions/edm
    5. and also set the correct rights:
      $> find ${EPICS_DOWNLOAD_DIR}/extensions/edm -user $(id -n -u) -exec chmod ug+rw {} \;
    6. Having followed the instructions for the Prerequisites for Extensions you should have in your (= ${EPICS_EXTENSIONS}) a subdirectory src.
    7. Untar and unpack the file to ${EPICS_EXTENSIONS}/src
      $> cd ${EPICS_EXTENSIONS}/src && tar axvf ${EPICS_DOWNLOAD_DIR}/extensions/edm/edm-1-12-85.tgz
    8. By default XRTgraph is not supported:
      $> perl -pi -e "s|^(XRTGRAPH.*)$|#\1|g;s|^#\s*(SCIPLOT.*)|\1|g" ${EPICS_EXTENSIONS}/configure/os/CONFIG_SITE.${EPICS_HOST_ARCH}.${EPICS_HOST_ARCH}
    9. Run make in the top-level directory:
      $> cd ${EPICS_EXTENSIONS}/src/edm && make

    Compact

    Download address: http://ics-web.sns.ornl.gov/edm/
    [ -z "${EPICS_DOWNLOAD_DIR}" ] && export "$SUBSTITUTE(${EPICS_DOWNLOAD_DIR},[${}],,,r)"}%=~/${EPICS_HOME}/Download

    cd ${EPICS_MYHOME:?} && . epics -H $(dirname $PWD) -P "" $(basename $PWD) && export EPICS_MYHOME=$PWD

    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

    Documentation

    TIP EDM User Guide.

    -- PeterZumbruch - 13 Mar 2013


    MEDM - Motif Editor and Display Manager -- Version: 3.1.7 (13 Mar 2013)

    Installation

    1. Set EPICS variables, if not yet done:
      (e.g. assuming the to be ~epics/EPICS-7.0.4, and running version 7.0.4)
      $> cd ${EPICS_MYHOME:?} && . epics -H $(dirname $PWD) -P "" $(basename $PWD) && export EPICS_MYHOME=$PWD
    2. To make things easier, first export the environment variable "$SUBSTITUTE(${EPICS_DOWNLOAD_DIR},[${}],,,r)"}% containing the path to the download directory:
      $> [ -z "${EPICS_DOWNLOAD_DIR}" ] && export "$SUBSTITUTE(${EPICS_DOWNLOAD_DIR},[${}],,,r)"}%=~/${EPICS_HOME}/Download
      Then create download directory, if not yet existing:
      $> mkdir -p ${EPICS_DOWNLOAD_DIR}/extensions/medm
    3. 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
      $> cd ${EPICS_DOWNLOAD_DIR}/extensions/medm &&
      wget -N https://epics-controls.org/download/extensions/medm3_1_7.tar.gz
    4. To avoid further problems, set the correct group (if you are a member of it (GSI specific)): epicsadm
      $> groups | grep -q -w epicsadm && chgrp -R epicsadm ${EPICS_DOWNLOAD_DIR}/extensions/medm
    5. and also set the correct rights:
      $> find ${EPICS_DOWNLOAD_DIR}/extensions/medm -user $(id -n -u) -exec chmod ug+rw {} \;
    6. Having followed the instructions for the Prerequisites for Extensions you should have in your (= ${EPICS_EXTENSIONS}) a subdirectory src.
    7. 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
    8. 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
      $> perl -pi -e "s&^MEDM = medm.*$&MEDM = medm3_1_7&" ${EPICS_EXTENSIONS}/src/Makefile
    9. By default XRTgraph is not supported:
      $> perl -pi -e "s|^(XRTGRAPH.*)$|#\1|g;s|^#\s*(SCIPLOT.*)|\1|g" ${EPICS_EXTENSIONS}/configure/os/CONFIG_SITE.${EPICS_HOST_ARCH}.${EPICS_HOST_ARCH}
    10. Run make in the top-level directory:
      $> cd ${EPICS_EXTENSIONS}/src && make

    Compact

    Download address: https://epics-controls.org/extensions/medm/index.php

    [ -z "${EPICS_DOWNLOAD_DIR}" ] && export "$SUBSTITUTE(${EPICS_DOWNLOAD_DIR},[${}],,,r)"}%=~/${EPICS_HOME}/Download

    cd ${EPICS_MYHOME:?} && . epics -H $(dirname $PWD) -P "" $(basename $PWD) && export EPICS_MYHOME=$PWD

    mkdir -p ${EPICS_DOWNLOAD_DIR}/extensions/medm
    cd ${EPICS_DOWNLOAD_DIR}/extensions/medm &&
    wget -N https://epics-controls.org/download/extensions/medm3_1_7.tar.gz
    groups | grep -q -w epicsadm && chgrp -R epicsadm ${EPICS_DOWNLOAD_DIR}/extensions/medm
    find ${EPICS_DOWNLOAD_DIR}/extensions/medm -user $(id -n -u) -exec chmod ug+rw {} \;
    cd ${EPICS_EXTENSIONS}/src &&
    tar axvf ${EPICS_DOWNLOAD_DIR}/extensions/medm/medm3_1_7.tar.gz
    perl -pi -e "s&^MEDM = medm.*$&MEDM = medm3_1_7&" ${EPICS_EXTENSIONS}/src/Makefile
    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 && make

    Documentation

    TIP MEDM Reference Manual.

    -- PeterZumbruch - 13 Mar 2013


    VDCT - Visual Database Construction Tool -- (14 Mar 2013)

    VDCT - Visual Database Construction Tool

    1. Set EPICS variables, if not yet done:
      (e.g. assuming the to be ~epics/EPICS-7.0.4, and running version 7.0.4)
      $> cd ${EPICS_MYHOME:?} && . epics -H $(dirname $PWD) -P "" $(basename $PWD) && export EPICS_MYHOME=$PWD
    2. Download the latest distribution of VDCT here http://visualdct.sourceforge.net.
    3. Unzip the file and move the created directory to ${EPICS_EXTENSIONS}/programs/ .
    4. 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 .
    5. Download VisualDCT here and move file to ${EPICS_EXTENSIONS}/bin/ .
    6. Change the file permissions of VisualDCT. Type chmod a+x VisualDCT .
    7. Run the program by calling VisualDCT or type java -jar VisualDCT.jar in the EPICS/extensions/src/ directory.
    -- MartinFeldmann - 30 Oct 2006
    -- PeterZumbruch - 10 Nov 2008


    Channel Archiver -- Version: 2.9.2 (12 September 2008)

    Installation

    1. Set EPICS variables, if not yet done:
      (e.g. assuming the to be ~epics/EPICS-7.0.4, and running version 7.0.4)
      $> cd ${EPICS_MYHOME:?} && . epics -H $(dirname $PWD) -P "" $(basename $PWD) && export EPICS_MYHOME=$PWD
    2. To make things easier, first export the environment variable "$SUBSTITUTE(${EPICS_DOWNLOAD_DIR},[${}],,,r)"}% containing the path to the download directory:
      $> [ -z "${EPICS_DOWNLOAD_DIR}" ] && export "$SUBSTITUTE(${EPICS_DOWNLOAD_DIR},[${}],,,r)"}%=~/${EPICS_HOME}/Download
      Then create download directory, if not yet existing:
      $> mkdir -p ${EPICS_DOWNLOAD_DIR}/extensions/ChannelArchiver
    3. 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
      $> cd ${EPICS_DOWNLOAD_DIR}/extensions/ChannelArchiver &&
      wget -N http://ics-web.sns.ornl.gov/kasemir/archiver/archiver.tgz
    4. To avoid further problems, set the correct group (if you are a member of it (GSI specific)): epicsadm
      $> groups | grep -q -w epicsadm && chgrp -R epicsadm ${EPICS_DOWNLOAD_DIR}/extensions/ChannelArchiver
    5. and also set the correct rights:
      $> find ${EPICS_DOWNLOAD_DIR}/extensions/ChannelArchiver -user $(id -n -u) -exec chmod ug+rw {} \;
    6. Having followed the instructions for the Prerequisites for Extensions you should have in your (= ${EPICS_EXTENSIONS}) a subdirectory src.
    7. Untar and unpack the file to ${EPICS_EXTENSIONS}/src
      $> cd ${EPICS_EXTENSIONS}/src && tar axvf ${EPICS_DOWNLOAD_DIR}/extensions/ChannelArchiver/archiver.tgz
    8. 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
      perl -pi -e "s&^CHANNELARCHIVER = ChannelArchiver.*$&CHANNELARCHIVER = ChannelArchiver&" ${EPICS_EXTENSIONS}/src/Makefile
    9. To adopt for new compiler standards (gcc 4.7.2) the following patch (ChannelArchiver patch file to adopt for gcc4.7.2 (and wheezy7.4) (F.Uhlig)) has to be downloaded and applied
      cd ${EPICS_DOWNLOAD_DIR}/extensions/ChannelArchiver &&
      wget -N --no-check-certificate https://wiki.gsi.de/pub/Epics/EpicsInstallationsAtGsi/patch.ChannelArchiver.wheezy74_gcc472 &&
      cd ${EPICS_EXTENSIONS}/src/ChannelArchiver && patch --strip=1 --input=${EPICS_DOWNLOAD_DIR}/extensions/ChannelArchiver/patch.ChannelArchiver.wheezy74_gcc472
    10. Run make in the top-level directory:
      $> cd ${EPICS_EXTENSIONS}/src && make
    11. Finally (at GSI) you may have to extend the LD_LIBRARY_PATH by /usr/local/bin to run the executables
      $> export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/bin

    Compact

    Download address: http://ics-web.sns.ornl.gov/kasemir/archiver

    [ -z "${EPICS_DOWNLOAD_DIR}" ] && export "$SUBSTITUTE(${EPICS_DOWNLOAD_DIR},[${}],,,r)"}%=~/${EPICS_HOME}/Download

    cd ${EPICS_MYHOME:?} && . epics -H $(dirname $PWD) -P "" $(basename $PWD) && export EPICS_MYHOME=$PWD

    mkdir -p ${EPICS_DOWNLOAD_DIR}/extensions/ChannelArchiver
    cd ${EPICS_DOWNLOAD_DIR}/extensions/ChannelArchiver &&
    wget -N http://ics-web.sns.ornl.gov/kasemir/archiver/archiver.tgz
    groups | grep -q -w epicsadm && chgrp -R epicsadm ${EPICS_DOWNLOAD_DIR}/extensions/ChannelArchiver
    find ${EPICS_DOWNLOAD_DIR}/extensions/ChannelArchiver -user $(id -n -u) -exec chmod ug+rw {} \;
    cd ${EPICS_EXTENSIONS}/src && tar axvf ${EPICS_DOWNLOAD_DIR}/extensions/ChannelArchiver/archiver.tgz
    perl -pi -e "s&^CHANNELARCHIVER = ChannelArchiver.*$&CHANNELARCHIVER = ChannelArchiver&" ${EPICS_EXTENSIONS}/src/Makefile

    cd ${EPICS_DOWNLOAD_DIR}/extensions/ChannelArchiver &&
    wget -N --no-check-certificate https://wiki.gsi.de/pub/Epics/EpicsInstallationsAtGsi/patch.ChannelArchiver.wheezy74_gcc472 &&
    cd ${EPICS_EXTENSIONS}/src/ChannelArchiver && patch --strip=1 --input=${EPICS_DOWNLOAD_DIR}/extensions/ChannelArchiver/patch.ChannelArchiver.wheezy74_gcc472

    cd ${EPICS_EXTENSIONS}/src && make
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/bin

    Documentation

    TIP Channel Archiver Manual.

    Postrequisites

    Xerces-C++ XML Parser -- Version: 2.7 (22 Aug 2014)

    Channel Archiver 2.9.2 explicitly requires libxerces-c.so.27: or less:
    • Test after installing Channel Archiver e.g. ArchiveEngine
      $> ArchiveEngine

      If you receive an error similar to:
      ArchiveEngine: error while loading shared libraries: libxerces-c.so.27: cannot open shared object file: No such file or directory
      ...OR
    • your current version (i.e. 3.1) is to NEW that XML parsing produces errors, when parsing an automatically converted/genereated script

    Then you might have to install yourself xerces-c
    HELP
    the sub directory "ThirdParty" contains all resources needed for this but only version 2.4 or you try downloading _2.7: from the original web-site

    1. To make things easier, first export the environment variable "$SUBSTITUTE(${EPICS_DOWNLOAD_DIR},[${}],,,r)"}% containing the path to the download directory:
      $> [ -z "${EPICS_DOWNLOAD_DIR}" ] && export "$SUBSTITUTE(${EPICS_DOWNLOAD_DIR},[${}],,,r)"}%=~/${EPICS_HOME}/Download
      Then create download directory, if not yet existing:
      $> mkdir -p ${EPICS_DOWNLOAD_DIR}/lib/xerces
    2. Download the matching version 2.7 of Xerces-C
      from: http://xerces.apache.org/xerces-c/download.cgi
      to the directory ${EPICS_DOWNLOAD_DIR}/lib/xerces
    3. To avoid further problems, set the correct group (if you are a member of it (GSI specific)): epicsadm
      $> groups | grep -q -w epicsadm && chgrp -R epicsadm ${EPICS_DOWNLOAD_DIR}/lib/xerces
    4. and also set the correct rights:
      $> find ${EPICS_DOWNLOAD_DIR}/lib/xerces -user $(id -n -u) -exec chmod ug+rw {} \;
    5. 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.
    6. Create install directory, if necessary:
      $> mkdir -p ${EPICS_HOME}/programs
    7. 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
    8. Set necessary exports to xerces-c src directory:
      $> export XERCESCROOT=${EPICS_DOWNLOAD_DIR}/lib/xerces/xerces-c-src_2_7_0/src/xercesc
    9. Change to new directory:
      $> cd $XERCESCROOT
    10. Run runConfigure (runConfigure w/o any options gives an overview of possible options)
      $> ./runConfigure -plinux -cgcc -xg++ -minmem -nsocket -tnative -rpthread -P${EPICS_HOME}/programs
    11. Make
      $> make
    12. Make
      $> make install
    13. Attach ${EPICS_HOME}/programs/lib to LD_LIBRARY_PATH
      $> LD_LIBRARY_PATH=${EPICS_HOME}/programs/lib:$LD_LIBRARY_PATH

    Compact

    Download address: http://xerces.apache.org/xerces-c/download.cgi

    [ -z "${EPICS_DOWNLOAD_DIR}" ] && export "$SUBSTITUTE(${EPICS_DOWNLOAD_DIR},[${}],,,r)"}%=~/${EPICS_HOME}/Download

    mkdir -p ${EPICS_DOWNLOAD_DIR}/lib/xerces
    cd ${EPICS_DOWNLOAD_DIR}/lib/xerces &&
    wget -N http://archive.apache.org/dist/xml/xerces-c/Xerces-C_2_7_0/source/xerces-c-src_2_7_0.tar.gz
    groups | grep -q -w epicsadm && chgrp -R epicsadm ${EPICS_DOWNLOAD_DIR}/lib/xerces
    find ${EPICS_DOWNLOAD_DIR}/lib/xerces -user $(id -n -u) -exec chmod ug+rw {} \;
    mkdir -p ${EPICS_HOME}/programs
    cd ${EPICS_DOWNLOAD_DIR}/lib/xerces/Xerces-C_2_7_0
    export XERCESCROOT=${EPICS_DOWNLOAD_DIR}/lib/xerces/Xerces-C_2_7_0
    ./runConfigure -plinux -cgcc -xg++ -minmem -nsocket -tnative -rpthread -P${EPICS_HOME}/programs
    make
    make install
    LD_LIBRARY_PATH=${EPICS_HOME}/programs/lib:$LD_LIBRARY_PATH

    -- PeterZumbruch - 12 September 2008

    Probe -- Version: 1_1_7_1 (14 Mar 2013)

    Installation

    1. Set EPICS variables, if not yet done:
      (e.g. assuming the to be ~epics/EPICS-7.0.4, and running version 7.0.4)
      $> cd ${EPICS_MYHOME:?} && . epics -H $(dirname $PWD) -P "" $(basename $PWD) && export EPICS_MYHOME=$PWD
    2. To make things easier, first export the environment variable "$SUBSTITUTE(${EPICS_DOWNLOAD_DIR},[${}],,,r)"}% containing the path to the download directory:
      $> [ -z "${EPICS_DOWNLOAD_DIR}" ] && export "$SUBSTITUTE(${EPICS_DOWNLOAD_DIR},[${}],,,r)"}%=~/${EPICS_HOME}/Download
      Then create download directory, if not yet existing:
      $> mkdir -p ${EPICS_DOWNLOAD_DIR}/extensions/PROBE
    3. Download the latest version of probe (version as of 24 Jan 2013 is 1_1_7_1)
      from: https://epics-controls.org/extensions/probe/index.php
      to the directory ${EPICS_DOWNLOAD_DIR}/extensions/PROBE
      $> cd ${EPICS_DOWNLOAD_DIR}/extensions/PROBE &&
      wget -N https://epics-controls.org/download/extensions/probe1_1_7_1.tar.gz
    4. To avoid further problems, set the correct group (if you are a member of it (GSI specific)): epicsadm
      $> groups | grep -q -w epicsadm && chgrp -R epicsadm ${EPICS_DOWNLOAD_DIR}/extensions/PROBE
    5. and also set the correct rights:
      $> find ${EPICS_DOWNLOAD_DIR}/extensions/PROBE -user $(id -n -u) -exec chmod ug+rw {} \;
    6. Having followed the instructions for the Prerequisites for Extensions you should have in your (= ${EPICS_EXTENSIONS}) a subdirectory src.
    7. 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
    8. 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
      perl -pi -e "s&^PROBE = probe.*$&PROBE = probe1_1_7_1&" ${EPICS_EXTENSIONS}/src/Makefile
    9. Run make in the top-level directory:
      $> cd ${EPICS_EXTENSIONS}/src && make

    Compact
    Download address: https://epics-controls.org/extensions/probe/index.php

    [ -z "${EPICS_DOWNLOAD_DIR}" ] && export "$SUBSTITUTE(${EPICS_DOWNLOAD_DIR},[${}],,,r)"}%=~/${EPICS_HOME}/Download

    cd ${EPICS_MYHOME:?} && . epics -H $(dirname $PWD) -P "" $(basename $PWD) && export EPICS_MYHOME=$PWD

    mkdir -p ${EPICS_DOWNLOAD_DIR}/extensions/PROBE
    cd ${EPICS_DOWNLOAD_DIR}/extensions/PROBE &&
    wget -N https://epics-controls.org/download/extensions/probe1_1_7_1.tar.gz
    groups | grep -q -w epicsadm && chgrp -R epicsadm ${EPICS_DOWNLOAD_DIR}/extensions/PROBE
    find ${EPICS_DOWNLOAD_DIR}/extensions/PROBE -user $(id -n -u) -exec chmod ug+rw {} \;
    cd ${EPICS_EXTENSIONS}/src && tar axvf ${EPICS_DOWNLOAD_DIR}/extensions/PROBE/probe1_1_7_1.tar.gz
    perl -pi -e "s&^PROBE = probe.*$&PROBE = probe1_1_7_1&" ${EPICS_EXTENSIONS}/src/Makefile
    cd ${EPICS_EXTENSIONS}/src && make

    Documentation

    TIP Probe demo in Flash.

    -- PeterZumbruch - 14 Mar 2013


    SDDS Toolkit - Self-Describing Data Sets analysis package -- Version: 3.1 (23 Sep 2013)

    • SDDSlibraries and headers are just used for other extensions
      • Therefore (since it does not compile) the SDDSaps sub directories are not included in the make process

    Prerequisites

    Installation

    1. Set EPICS variables, if not yet done:
      (e.g. assuming the to be ~epics/EPICS-7.0.4, and running version 7.0.4)
      $> cd ${EPICS_MYHOME:?} && . epics -H $(dirname $PWD) -P "" $(basename $PWD) && export EPICS_MYHOME=$PWD
    2. To make things easier, first export the environment variable "$SUBSTITUTE(${EPICS_DOWNLOAD_DIR},[${}],,,r)"}% containing the path to the download directory:
      $> [ -z "${EPICS_DOWNLOAD_DIR}" ] && export "$SUBSTITUTE(${EPICS_DOWNLOAD_DIR},[${}],,,r)"}%=~/${EPICS_HOME}/Download
      Then create download directory, if not yet existing:
      $> mkdir -p ${EPICS_DOWNLOAD_DIR}/extensions/SDDS
    3. Download the latest version of SDDS (version as of 7 Aug 2013 is 3.1)
      from: http://www.aps.anl.gov/Accelerator_Systems_Division/Operations_Analysis/oagPackages.shtml
      to the directory ${EPICS_DOWNLOAD_DIR}/extensions/SDDS
    4. To avoid further problems, set the correct group (if you are a member of it (GSI specific)): epicsadm
      $> groups | grep -q -w epicsadm && chgrp -R epicsadm ${EPICS_DOWNLOAD_DIR}/extensions/SDDS
    5. and also set the correct rights:
      $> find ${EPICS_DOWNLOAD_DIR}/extensions/SDDS -user $(id -n -u) -exec chmod ug+rw {} \;
    6. Download the latest version of defns.rpn
      from: http://www.aps.anl.gov/Accelerator_Systems_Division/Operations_Analysis/oagPackages.shtml
      to the directory ${EPICS_DOWNLOAD_DIR}/extensions/SDDS
    7. To avoid further problems, set the correct group (if you are a member of it (GSI specific)): epicsadm
      $> groups | grep -q -w epicsadm && chgrp -R epicsadm ${EPICS_DOWNLOAD_DIR}/extensions/SDDS
    8. and also set the correct rights:
      $> find ${EPICS_DOWNLOAD_DIR}/extensions/SDDS -user $(id -n -u) -exec chmod ug+rw {} \;
    9. Having followed the instructions for the Prerequisites for Extensions you should have in your (= ${EPICS_EXTENSIONS}) a subdirectory src.
    10. Untar and unpack the file to ${EPICS_EXTENSIONS}/src
      $> cd ${EPICS_EXTENSIONS}/src && tar axvf ${EPICS_DOWNLOAD_DIR}/extensions/SDDS/SDDS.3.1.tar.gz
    11. 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 SDDS ${EPICS_EXTENSIONS}/src &&
      cd ${EPICS_EXTENSIONS}/src &&
      rm -i -r epics
    12. Copy defns.rpn to ${EPICS_EXTENSIONS}/src/SDDS
      $> cp -i ${EPICS_DOWNLOAD_DIR}/extensions/SDDS/defns.rpn ${EPICS_EXTENSIONS}/src/SDDS
    13. Comment out lines in the Makefile adding sub directories of SDDSaps/sdds* and levmar to the make process
      $> cd ${EPICS_EXTENSIONS}/src/SDDS && perl -pi.bak -e "s&(SDDSaps/sdds.*)$&#\1&g;s&^(DIRS \+=) (levmar)&\1 #\2&" Makefile
    14. HOST_ARCH = linux-arm, e.g. Rasperry Pi, dreamplug, ...
      1. 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:
        1. open ${EPICS_EXTENSIONS}/src/SDDS/lzma/Makefile
        2. 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
    15. Run make in the top-level directory:
      $> cd ${EPICS_EXTENSIONS}/src/SDDS && RPN_DEFNS=${EPICS_EXTENSIONS}/src/SDDS/defns.rpn make

    Compact

    Download address: http://www.aps.anl.gov/Accelerator_Systems_Division/Operations_Analysis/oagPackages.shtml

    cd ${EPICS_MYHOME:?} && . epics -H $(dirname $PWD) -P "" $(basename $PWD) && export EPICS_MYHOME=$PWD

    [ -z "${EPICS_DOWNLOAD_DIR}" ] && export "$SUBSTITUTE(${EPICS_DOWNLOAD_DIR},[${}],,,r)"}%=~/${EPICS_HOME}/Download

    mkdir -p ${EPICS_DOWNLOAD_DIR}/extensions/SDDS
    cd ${EPICS_DOWNLOAD_DIR}/extensions/SDDS &&
    wget -N http://www.aps.anl.gov/Accelerator_Systems_Division/Operations_Analysis/downloads/SDDS.3.1.tar.gz
    groups | grep -q -w epicsadm && chgrp -R epicsadm ${EPICS_DOWNLOAD_DIR}/extensions/SDDS
    find ${EPICS_DOWNLOAD_DIR}/extensions/SDDS -user $(id -n -u) -exec chmod ug+rw {} \;
    cd ${EPICS_DOWNLOAD_DIR}/extensions/SDDS &&
    wget -N http://www.aps.anl.gov/Accelerator_Systems_Division/Operations_Analysis/downloads//defns.rpn
    groups | grep -q -w epicsadm && chgrp -R epicsadm ${EPICS_DOWNLOAD_DIR}/extensions/SDDS
    find ${EPICS_DOWNLOAD_DIR}/extensions/SDDS -user $(id -n -u) -exec chmod ug+rw {} \;
    cd ${EPICS_EXTENSIONS}/src && tar axvf ${EPICS_DOWNLOAD_DIR}/extensions/SDDS/SDDS.3.1.tar.gz
    cd ${EPICS_EXTENSIONS}/src/epics/extensions/src &&
    mv SDDS ${EPICS_EXTENSIONS}/src &&
    cd ${EPICS_EXTENSIONS}/src &&
    rm -i -r epics

    cp -i ${EPICS_DOWNLOAD_DIR}/extensions/SDDS/defns.rpn ${EPICS_EXTENSIONS}/src/SDDS &&
    cd ${EPICS_EXTENSIONS}/src/SDDS && perl -pi.bak -e "s&(SDDSaps/sdds.*)$&#\1&g;s&^(DIRS \+=) (levmar)&\1 #\2&" Makefile
    if [ ! -z $EDITOR ];
    then
        $EDITOR ${EPICS_EXTENSIONS}/src/SDDS/lzma/Makefile
    else
        echo '$EDITOR' undefined ... exiting;
    fi &&
    cd ${EPICS_EXTENSIONS}/src/SDDS && RPN_DEFNS=${EPICS_EXTENSIONS}/src/SDDS/defns.rpn make

    Documentation

    TIP Accelerator Operations & Physics Software Documentation.


    SDDSepics -- Version: 3.1 (26 Aug 2013)

    Installation

    1. Set EPICS variables, if not yet done:
      (e.g. assuming the to be ~epics/EPICS-7.0.4, and running version 7.0.4)
      $> cd ${EPICS_MYHOME:?} && . epics -H $(dirname $PWD) -P "" $(basename $PWD) && export EPICS_MYHOME=$PWD
    2. To make things easier, first export the environment variable "$SUBSTITUTE(${EPICS_DOWNLOAD_DIR},[${}],,,r)"}% containing the path to the download directory:
      $> [ -z "${EPICS_DOWNLOAD_DIR}" ] && export "$SUBSTITUTE(${EPICS_DOWNLOAD_DIR},[${}],,,r)"}%=~/${EPICS_HOME}/Download
      Then create download directory, if not yet existing:
      $> mkdir -p ${EPICS_DOWNLOAD_DIR}/extensions/SDDSepics
    3. Download the latest version of SDDSepics (version as of 28 May 2013 is 3.1)
      from: http://www.aps.anl.gov/Accelerator_Systems_Division/Operations_Analysis/oagPackages.shtml
      to the directory ${EPICS_DOWNLOAD_DIR}/extensions/SDDSepics
    4. To avoid further problems, set the correct group (if you are a member of it (GSI specific)): epicsadm
      $> groups | grep -q -w epicsadm && chgrp -R epicsadm ${EPICS_DOWNLOAD_DIR}/extensions/SDDSepics
    5. and also set the correct rights:
      $> find ${EPICS_DOWNLOAD_DIR}/extensions/SDDSepics -user $(id -n -u) -exec chmod ug+rw {} \;
    6. Having followed the instructions for the Prerequisites for Extensions you should have in your (= ${EPICS_EXTENSIONS}) a subdirectory src.
    7. 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
    8. 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
    9. 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
      perl -pi -e "s&^SDDSEPICS = SDDSepics.*$&SDDSEPICS = SDDSepics&" ${EPICS_EXTENSIONS}/src/Makefile
    10. Run make in the top-level directory:
      $> cd ${EPICS_EXTENSIONS}/src && make

    Compact

    Download address: http://www.aps.anl.gov/Accelerator_Systems_Division/Operations_Analysis/oagPackages.shtml


    [ -z "${EPICS_DOWNLOAD_DIR}" ] && export "$SUBSTITUTE(${EPICS_DOWNLOAD_DIR},[${}],,,r)"}%=~/${EPICS_HOME}/Download

    cd ${EPICS_MYHOME:?} && . epics -H $(dirname $PWD) -P "" $(basename $PWD) && export EPICS_MYHOME=$PWD

    mkdir -p ${EPICS_DOWNLOAD_DIR}/extensions/SDDSepics
    cd ${EPICS_DOWNLOAD_DIR}/extensions/SDDSepics &&
    wget -N http://www.aps.anl.gov/Accelerator_Systems_Division/Operations_Analysis/downloads//SDDSepics.3.1.tar.gz
    groups | grep -q -w epicsadm && chgrp -R epicsadm ${EPICS_DOWNLOAD_DIR}/extensions/SDDSepics
    find ${EPICS_DOWNLOAD_DIR}/extensions/SDDSepics -user $(id -n -u) -exec chmod ug+rw {} \;
    cd ${EPICS_EXTENSIONS}/src && tar axvf ${EPICS_DOWNLOAD_DIR}/extensions/SDDSepics/SDDSepics.3.1.tar.gz
    cd ${EPICS_EXTENSIONS}/src/epics/extensions/src &&
    mv SDDSepics oagca ${EPICS_EXTENSIONS}/src &&
    cd ${EPICS_EXTENSIONS}/src &&
    rm -i -r epics

    perl -pi -e "s&^SDDSEPICS = SDDSepics.*$&SDDSEPICS = SDDSepics&" ${EPICS_EXTENSIONS}/src/Makefile
    cd ${EPICS_EXTENSIONS}/src && make

    Documentation

    TIP Accelerator Operations & Physics Software Documentation.


    Burt - Backup and Restore Tool -- Version: 20130124 (24 Sep 2013)

    Prerequisites

    Installation

    1. Set EPICS variables, if not yet done:
      (e.g. assuming the to be ~epics/EPICS-7.0.4, and running version 7.0.4)
      $> cd ${EPICS_MYHOME:?} && . epics -H $(dirname $PWD) -P "" $(basename $PWD) && export EPICS_MYHOME=$PWD
    2. To make things easier, first export the environment variable "$SUBSTITUTE(${EPICS_DOWNLOAD_DIR},[${}],,,r)"}% containing the path to the download directory:
      $> [ -z "${EPICS_DOWNLOAD_DIR}" ] && export "$SUBSTITUTE(${EPICS_DOWNLOAD_DIR},[${}],,,r)"}%=~/${EPICS_HOME}/Download
      Then create download directory, if not yet existing:
      $> mkdir -p ${EPICS_DOWNLOAD_DIR}/extensions/burt
    3. Download the latest version of burt (version as of 24 Jan 2013 is 20130124)
      from: https://epics-controls.org/extensions/burt/index.php
      to the directory ${EPICS_DOWNLOAD_DIR}/extensions/burt
      $> cd ${EPICS_DOWNLOAD_DIR}/extensions/burt &&
      wget -N https://epics-controls.org/download/extensions/burt_20130124.tar.gz
    4. To avoid further problems, set the correct group (if you are a member of it (GSI specific)): epicsadm
      $> groups | grep -q -w epicsadm && chgrp -R epicsadm ${EPICS_DOWNLOAD_DIR}/extensions/burt
    5. and also set the correct rights:
      $> find ${EPICS_DOWNLOAD_DIR}/extensions/burt -user $(id -n -u) -exec chmod ug+rw {} \;
    6. Having followed the instructions for the Prerequisites for Extensions you should have in your (= ${EPICS_EXTENSIONS}) a subdirectory src.
    7. Untar and unpack the file to ${EPICS_EXTENSIONS}/src
      $> cd ${EPICS_EXTENSIONS}/src && tar axvf ${EPICS_DOWNLOAD_DIR}/extensions/burt/burt_20130124.tar.gz
    8. 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
      perl -pi -e "s&^BURT = burt.*$&BURT = burt_20130124&" ${EPICS_EXTENSIONS}/src/Makefile
    9. 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
    10. Run make in the top-level directory:
      $> cd ${EPICS_EXTENSIONS}/src && make

    Compact

    Download address: https://epics-controls.org/extensions/burt/index.php

    [ -z "${EPICS_DOWNLOAD_DIR}" ] && export "$SUBSTITUTE(${EPICS_DOWNLOAD_DIR},[${}],,,r)"}%=~/${EPICS_HOME}/Download

    cd ${EPICS_MYHOME:?} && . epics -H $(dirname $PWD) -P "" $(basename $PWD) && export EPICS_MYHOME=$PWD

    mkdir -p ${EPICS_DOWNLOAD_DIR}/extensions/burt
    cd ${EPICS_DOWNLOAD_DIR}/extensions/burt &&
    wget -N https://epics-controls.org/download/extensions/burt_20130124.tar.gz
    groups | grep -q -w epicsadm && chgrp -R epicsadm ${EPICS_DOWNLOAD_DIR}/extensions/burt
    find ${EPICS_DOWNLOAD_DIR}/extensions/burt -user $(id -n -u) -exec chmod ug+rw {} \;
    cd ${EPICS_EXTENSIONS}/src && tar axvf ${EPICS_DOWNLOAD_DIR}/extensions/burt/burt_20130124.tar.gz
    perl -pi -e "s&^BURT = burt.*$&BURT = burt_20130124&" ${EPICS_EXTENSIONS}/src/Makefile
    cd ${EPICS_EXTENSIONS}/src/burt_20130124 &&
    perl -pi.bak -e "s|^(USR_CXXFLAGS_Linux\s*=\s*-fno-const-strings)|#\1|g" Makefile
    cd ${EPICS_EXTENSIONS}/src && make

    Documentation

    TIP BURT: Back Up and Restore Tool .

    -- PeterZumbruch - 24 Sep 2013


    CASR - Channel Access Save Restore -- Version: 20091027 (13 Mar 2013)

    Prerequisites

    • Needs - optionally (default) - SDDS

    Installation

    1. Set EPICS variables, if not yet done:
      (e.g. assuming the to be ~epics/EPICS-7.0.4, and running version 7.0.4)
      $> cd ${EPICS_MYHOME:?} && . epics -H $(dirname $PWD) -P "" $(basename $PWD) && export EPICS_MYHOME=$PWD
    2. To make things easier, first export the environment variable "$SUBSTITUTE(${EPICS_DOWNLOAD_DIR},[${}],,,r)"}% containing the path to the download directory:
      $> [ -z "${EPICS_DOWNLOAD_DIR}" ] && export "$SUBSTITUTE(${EPICS_DOWNLOAD_DIR},[${}],,,r)"}%=~/${EPICS_HOME}/Download
      Then create download directory, if not yet existing:
      $> mkdir -p ${EPICS_DOWNLOAD_DIR}/extensions/CASR
    3. Download the latest version of casr (version as of 27 Oct 2009 is 20091027)
      from: https://epics-controls.org/extensions/casr/index.php
      to the directory ${EPICS_DOWNLOAD_DIR}/extensions/CASR
      $> cd ${EPICS_DOWNLOAD_DIR}/extensions/CASR &&
      wget -N https://epics-controls.org/download/extensions/casr_20091027.tar.gz
    4. To avoid further problems, set the correct group (if you are a member of it (GSI specific)): epicsadm
      $> groups | grep -q -w epicsadm && chgrp -R epicsadm ${EPICS_DOWNLOAD_DIR}/extensions/CASR
    5. and also set the correct rights:
      $> find ${EPICS_DOWNLOAD_DIR}/extensions/CASR -user $(id -n -u) -exec chmod ug+rw {} \;
    6. Having followed the instructions for the Prerequisites for Extensions you should have in your (= ${EPICS_EXTENSIONS}) a subdirectory src.
    7. Untar and unpack the file to ${EPICS_EXTENSIONS}/src
      $> cd ${EPICS_EXTENSIONS}/src && tar axvf ${EPICS_DOWNLOAD_DIR}/extensions/CASR/casr_20091027.tar.gz
    8. 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
      perl -pi -e "s&^CASR = casr.*$&CASR = casr_20091027&" ${EPICS_EXTENSIONS}/src/Makefile
    9. Run make in the top-level directory:
      $> cd ${EPICS_EXTENSIONS}/src && make

    Compact
    Download address: https://epics-controls.org/extensions/casr/index.php

    [ -z "${EPICS_DOWNLOAD_DIR}" ] && export "$SUBSTITUTE(${EPICS_DOWNLOAD_DIR},[${}],,,r)"}%=~/${EPICS_HOME}/Download

    cd ${EPICS_MYHOME:?} && . epics -H $(dirname $PWD) -P "" $(basename $PWD) && export EPICS_MYHOME=$PWD

    mkdir -p ${EPICS_DOWNLOAD_DIR}/extensions/CASR
    cd ${EPICS_DOWNLOAD_DIR}/extensions/CASR &&
    wget -N https://epics-controls.org/download/extensions/casr_20091027.tar.gz
    groups | grep -q -w epicsadm && chgrp -R epicsadm ${EPICS_DOWNLOAD_DIR}/extensions/CASR
    find ${EPICS_DOWNLOAD_DIR}/extensions/CASR -user $(id -n -u) -exec chmod ug+rw {} \;
    cd ${EPICS_EXTENSIONS}/src && tar axvf ${EPICS_DOWNLOAD_DIR}/extensions/CASR/casr_20091027.tar.gz
    perl -pi -e "s&^CASR = casr.*$&CASR = casr_20091027&" ${EPICS_EXTENSIONS}/src/Makefile
    cd ${EPICS_EXTENSIONS}/src && make

    Documentation

    TIP CASR User Guide.

    -- PeterZumbruch - 13 Mar 2013


    Strip Tool - Strip-chart plotting tool -- Version: 2.5.15.0 (23 Sep 2013)

    Prerequisites

    Installation

    1. Set EPICS variables, if not yet done:
      (e.g. assuming the to be ~epics/EPICS-7.0.4, and running version 7.0.4)
      $> cd ${EPICS_MYHOME:?} && . epics -H $(dirname $PWD) -P "" $(basename $PWD) && export EPICS_MYHOME=$PWD
    2. To make things easier, first export the environment variable "$SUBSTITUTE(${EPICS_DOWNLOAD_DIR},[${}],,,r)"}% containing the path to the download directory:
      $> [ -z "${EPICS_DOWNLOAD_DIR}" ] && export "$SUBSTITUTE(${EPICS_DOWNLOAD_DIR},[${}],,,r)"}%=~/${EPICS_HOME}/Download
      Then create download directory, if not yet existing:
      $> mkdir -p ${EPICS_DOWNLOAD_DIR}/extensions/StripTool
    3. Download the latest version of StripTool (version as of 22 Jun 2012 is 2.5.15.0)
      from: https://epics-controls.org/extensions/StripTool/index.php
      to the directory ${EPICS_DOWNLOAD_DIR}/extensions/StripTool
      $> cd ${EPICS_DOWNLOAD_DIR}/extensions/StripTool &&
      wget -N https://epics-controls.org/download/extensions/StripTool2_5_15_0.tar.gz
    4. To avoid further problems, set the correct group (if you are a member of it (GSI specific)): epicsadm
      $> groups | grep -q -w epicsadm && chgrp -R epicsadm ${EPICS_DOWNLOAD_DIR}/extensions/StripTool
    5. and also set the correct rights:
      $> find ${EPICS_DOWNLOAD_DIR}/extensions/StripTool -user $(id -n -u) -exec chmod ug+rw {} \;
    6. Having followed the instructions for the Prerequisites for Extensions you should have in your (= ${EPICS_EXTENSIONS}) a subdirectory src.
    7. 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
    8. 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
      perl -pi -e "s&^STRIPTOOL = StripTool.*$&STRIPTOOL = StripTool2_5_15_0&" ${EPICS_EXTENSIONS}/src/Makefile
    9. Run make in the top-level directory:
      $> cd ${EPICS_EXTENSIONS}/src && make

    Compact

    Download address: STRIPTOOL%_DOWNLOADADRESS%

    [ -z "${EPICS_DOWNLOAD_DIR}" ] && export "$SUBSTITUTE(${EPICS_DOWNLOAD_DIR},[${}],,,r)"}%=~/${EPICS_HOME}/Download

    cd ${EPICS_MYHOME:?} && . epics -H $(dirname $PWD) -P "" $(basename $PWD) && export EPICS_MYHOME=$PWD

    mkdir -p ${EPICS_DOWNLOAD_DIR}/extensions/StripTool
    cd ${EPICS_DOWNLOAD_DIR}/extensions/StripTool &&
    wget -N https://epics-controls.org/download/extensions/StripTool2_5_15_0.tar.gz
    groups | grep -q -w epicsadm && chgrp -R epicsadm ${EPICS_DOWNLOAD_DIR}/extensions/StripTool
    find ${EPICS_DOWNLOAD_DIR}/extensions/StripTool -user $(id -n -u) -exec chmod ug+rw {} \;
    cd ${EPICS_EXTENSIONS}/src && tar axvf ${EPICS_DOWNLOAD_DIR}/extensions/StripTool/StripTool2_5_15_0.tar.gz
    perl -pi -e "s&^STRIPTOOL = StripTool.*$&STRIPTOOL = StripTool2_5_15_0&" ${EPICS_EXTENSIONS}/src/Makefile
    cd ${EPICS_EXTENSIONS}/src && make

    Documentation

    TIP Strip Tool User Guide.

    -- PeterZumbruch - 23 Sep 2013


    Archive Viewer - Java-based archive data viewer (SNS)


    CaOctave - CA interface for Octave


    WebCA - Channel Access web browser plug-in (CosyLab)


    more Extensions: To check whether to be installed

    Standalone CA Clients

    • CAEX: Channel Access Examples
    • CAU: Channel Access Utility
    • Channel Archiver (SNS)
    • Channel Watcher (SLAC)
    • JoiMint: Java Operator Interface and Management INtegration Toolkit (DESY)
    • NAL: Nagios ALarm Handler (INFN)
    • Probe: Motif Channel Monitoring program

    CA Server tools

    • CAS: Channel Access Server Library
    • CaSnooper: Channel Access Broadcast Monitoring Tool
    • JCAS: Pure Java Channel Access Server (Cosylab)
    • Gateway: Process Variable Gateway

    CA Interfaces to other tools and languages

    • C/C++
      • EZCA: Easy Channel Access interface library for C programs
      • EzcaScan: Easy Channel Access for arrays of channels
      • SCA: Simple Channel Access (LBL/ALS)
    • Java
      • CAJ: Pure Java Channel Access Client (Cosylab)
      • JCA: Channel Access client for Java using JNI (Cosylab) (APS/BCDA)
    • Matlab/Octave/Scilab
      • MCA: Channel Access client library for Matlab (SNS)
      • LabCA: Matlab & Scilab interface to Channel Access (SLAC)
    • Perl
      • CAP5: Channel Access for Perl5
      • PEZCA: Another CA interface to Perl using EZCA (BESSY)
    • Python
    • Other
      • CAML: Channel Access Markup Language (ORNL)
      • IDL: CA client libraries and scripts for IDL via EZCA
      • LabVIEW: CA Client and Shared Memory interface to IOC (SNS)
      • PHP_EPICS: CA interface for PHP-based web applications (SLS)
      • SDDS: The Self-Describing Data Sets analysis package
      • WebCA: Channel Access web browser plug-in (CosyLab)

    IOC Database Management Tools

    • dbVerbose: Verbose database filter
    • GDCT: Graphical Database Configuration Tool (deprecated)
    • MSI: Macro Substitution and Include tool
    • VDCT: Visual Database Configuration Tool

    Other Tools or Libraries

    • CAPutLog: Facility for logging CA puts to an IOC (DESY)
    • CMLOG: Common Message Logging System (JLAB)
    • EdlBuild: Create EDM screens in Perl scripts (TRIUMF)
    • gnuregex: The GNU regex library built with EPICS Makefiles
    • mButton: General Purpose Motif Button
    • Namecapture: Motif Drag & drop support
    • ParseCASW: CA Beacon anomaly diagnostic tool
    • PViewer: Python 1D and 2D data viewer
    • SGA: Simple GIF Animator
    • TS: The R3.13 timestamp library for use with R3.14
    • WiresharkCA: CA plug-in for Wireshark (KEK)
    -- PeterZumbruch - 06 Oct 2009

    Packages / Distributions


    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

    Prerequisites:

    • EPICS base: valid for R3.14.12.3 and higher

    Installation (valid for R3.14.12.3 and higher )

    Installation

    1. Set EPICS variables, if not yet done:
      (e.g. assuming the to be ~epics/EPICS-7.0.4, and running version 7.0.4)
      $> cd ${EPICS_MYHOME:?} && . epics -H $(dirname $PWD) -P "" $(basename $PWD) && export EPICS_MYHOME=$PWD
    2. To make things easier, first export the environment variable "$SUBSTITUTE(${EPICS_DOWNLOAD_DIR},[${}],,,r)"}% containing the path to the download directory:
      $> [ -z "${EPICS_DOWNLOAD_DIR}" ] && export "$SUBSTITUTE(${EPICS_DOWNLOAD_DIR},[${}],,,r)"}%=~/${EPICS_HOME}/Download
      Then create download directory, if not yet existing:
      $> mkdir -p ${EPICS_DOWNLOAD_DIR}/Distributions/synApps
    3. 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
      $> cd ${EPICS_DOWNLOAD_DIR}/Distributions/synApps &&
      wget -N http://www.aps.anl.gov/bcda/synApps/tar/synApps_5_7.tar.gz
    4. To avoid further problems, set the correct group (if you are a member of it (GSI specific)): epicsadm
      $> groups | grep -q -w epicsadm && chgrp -R epicsadm ${EPICS_DOWNLOAD_DIR}/Distributions/synApps
    5. and also set the correct rights:
      $> find ${EPICS_DOWNLOAD_DIR}/Distributions/synApps -user $(id -n -u) -exec chmod ug+rw {} \;
    6. Create installation directory:
      $> mkdir -p ${EPICS_MODULES}/synApps
    7. 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
    8. 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:
      • either absolutely to EPICS_BASE=
      • or relatively to EPICS_BASE=$(TOP)/../base-7.0.4
      perl -pi -e "s|(^(EPICS_BASE=).*$)|#\1\n\2${EPICS_HOME}/base\n|g" $file
      %FOREACH{"support" in="SYNAPPS"}% $ Add %$support_SHORTNAME% (%$support_KEY%) path: %$support_TOPLEVELDIR%
      cd ${EPICS_MODULES}/synApps/synApps_5_7 &&
      if [ 0 -lt $(grep -w %$support_KEY%= $file | wc -l ) ];
      then if [ -d "%$support_TOPLEVELDIR%/support" ];
             then perl -pi -e "s|(^(%$support_KEY%=).*$)|#\1\n\2%$support_TOPLEVELDIR%/support\n|g" $file;
             else perl -pi -e "s|(^(%$support_KEY%=).*$)|#\1|g" $file
          fi
      else echo -e %$support_KEY%=%$support_TOPLEVELDIR%/support\\n | sed 's/ //g' >> $file;
      fi
      %NEXT{"support"}% %NEXT{"file"}%

    $ ... set <Epics Base directory> (EPICS_BASE) path: ${EPICS_BASE} in support/configure/RELEASE
    cd ${EPICS_MODULES}/synApps/synApps_5_7 &&
    perl -pi -e "s&^\#*(EPICS_BASE=).*$&\1${EPICS_HOME}/base&" support/configure/RELEASE
  • Run make release in the ${EPICS_MODULES}/synApps/synApps_5_7/support directory to propagate the content of MASTER_RELEASE to all modules.
    $> cd ${EPICS_MODULES}/synApps/synApps_5_7/support && make release
  • Finally: Run make in the top-level directory: in the directory ${EPICS_MODULES}/synApps/synApps_5_7/support
    $> cd ${EPICS_MODULES}/synApps/synApps_5_7/support && make
  • Compact (valid for R3.14.12.3 and higher )

    Download address: http://www.aps.anl.gov/bcda/synApps/index.php

    [ -z "${EPICS_DOWNLOAD_DIR}" ] && export "$SUBSTITUTE(${EPICS_DOWNLOAD_DIR},[${}],,,r)"}%=~/${EPICS_HOME}/Download

    cd ${EPICS_MYHOME:?} && . epics -H $(dirname $PWD) -P "" $(basename $PWD) && export EPICS_MYHOME=$PWD

    mkdir -p ${EPICS_DOWNLOAD_DIR}/Distributions/synApps
    cd ${EPICS_DOWNLOAD_DIR}/Distributions/synApps &&
    wget -N http://www.aps.anl.gov/bcda/synApps/tar/synApps_5_7.tar.gz
    groups | grep -q -w epicsadm && chgrp -R epicsadm ${EPICS_DOWNLOAD_DIR}/Distributions/synApps
    find ${EPICS_DOWNLOAD_DIR}/Distributions/synApps -user $(id -n -u) -exec chmod ug+rw {} \;
    mkdir -p ${EPICS_MODULES}/synApps
    cd ${EPICS_MODULES}/synApps && tar axvf ${EPICS_DOWNLOAD_DIR}/Distributions/synApps/synApps_5_7.tar.gz
    cd ${EPICS_MODULES}/synApps/synApps_5_7 &&
    perl -pi -e "s&^\#*(SUPPORT=).*$&\1${EPICS_MODULES}/synApps/synApps_5_7/support&" support/configure/RELEASE &&
    cd ${EPICS_MODULES}/synApps/synApps_5_7 &&
    perl -pi -e "s&^\#*(EPICS_BASE=).*$&\1${EPICS_HOME}/base&" support/configure/RELEASE
    cd ${EPICS_MODULES}/synApps/synApps_5_7/support && make release
    cd ${EPICS_MODULES}/synApps/synApps_5_7/support && make

    Documentation

    -- PeterZumbruch - 04 Apr 2014


    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 ...

    Prerequisites (valid for R3.14.8.2 and higher):

    • EPICS base: valid for R3.14.8.2 and higher

    Installation (valid for R3.14.8.2 and higher)

    1. Set EPICS variables, if not yet done:
      (e.g. assuming the to be ~epics/EPICS-7.0.4, and running version 7.0.4)
      $> cd ${EPICS_MYHOME:?} && . epics -H $(dirname $PWD) -P "" $(basename $PWD) && export EPICS_MYHOME=$PWD
    2. To make things easier, first export the environment variable "$SUBSTITUTE(${EPICS_DOWNLOAD_DIR},[${}],,,r)"}% containing the path to the download directory:
      $> [ -z "${EPICS_DOWNLOAD_DIR}" ] && export "$SUBSTITUTE(${EPICS_DOWNLOAD_DIR},[${}],,,r)"}%=~/${EPICS_HOME}/Download
      Then create download directory, if not yet existing:
      $> mkdir -p ${EPICS_DOWNLOAD_DIR}/Distributions/synApps
    3. 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
      $> cd ${EPICS_DOWNLOAD_DIR}/Distributions/synApps &&
      wget -N http://www.aps.anl.gov/bcda/synApps/tar/synApps_5_3.tar.gz
    4. 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).
      $> cd ${EPICS_DOWNLOAD_DIR}/Distributions/synApps &&
      wget -N https://wiki.gsi.de/pub/Epics/EpicsInstallationsAtGsi/RULES_DIRS_5_3.patch
    5. To avoid further problems, set the correct group (if you are a member of it (GSI specific)): epicsadm
      $> groups | grep -q -w epicsadm && chgrp -R epicsadm ${EPICS_DOWNLOAD_DIR}/Distributions/synApps
    6. and also set the correct rights:
      $> find ${EPICS_DOWNLOAD_DIR}/Distributions/synApps -user $(id -n -u) -exec chmod ug+rw {} \;
    7. Create installation directory:
      $> mkdir -p ${EPICS_MODULES}/synApps
    8. Untar and unpack the file to ${EPICS_MODULES}/synApps
      $> cd ${EPICS_MODULES}/synApps && tar axvf ${EPICS_DOWNLOAD_DIR}/Distributions/synApps/synApps_5_3.tar.gz
    9. Following the instructions http://www.aps.anl.gov/bcda/synApps/index.php ...

    $ ... set <Epics Base directory> (EPICS_BASE) path: ${EPICS_BASE} in support/config/MASTER_RELEASE
    cd ${EPICS_MODULES}/synApps/synApps_5_3 &&
    perl -pi -e "s&^\#*(SUPPORT=).*$&\1${EPICS_MODULES}/synApps/synApps_5_3/support&" support/config/MASTER_RELEASE

    $ ... set <Support Directory> (SUPPORT) path: ${EPICS_MODULES}/synApps/synApps_5_3/support in support/config/MASTER_RELEASE
    cd ${EPICS_MODULES}/synApps/synApps_5_3 &&
    perl -pi -e "s&^\#*(EPICS_BASE=).*$&\1${EPICS_BASE}&" support/config/MASTER_RELEASE
    1. Apply private period patch to distribution:
      cd ${EPICS_MODULES}/synApps &&
      patch --strip=0 --input=${EPICS_DOWNLOAD_DIR}/Distributions/synApps/RULES_DIRS_5_3.patch
    2. Run make release in the ${EPICS_MODULES}/synApps/synApps_5_3/support/config directory to propagate the content of MASTER_RELEASE to all modules.
      $> cd ${EPICS_MODULES}/synApps/synApps_5_3/support/config && make release
    3. Finally: Run make in the top-level directory: in the directory ${EPICS_MODULES}/synApps/synApps_5_3/support/config
      $> cd ${EPICS_MODULES}/synApps/synApps_5_3/support/config && make

    Compact (valid for R3.14.8.2 and higher)

    Download address: http://www.aps.anl.gov/bcda/synApps/index.php

    [ -z "${EPICS_DOWNLOAD_DIR}" ] && export "$SUBSTITUTE(${EPICS_DOWNLOAD_DIR},[${}],,,r)"}%=~/${EPICS_HOME}/Download

    cd ${EPICS_MYHOME:?} && . epics -H $(dirname $PWD) -P "" $(basename $PWD) && export EPICS_MYHOME=$PWD

    mkdir -p ${EPICS_DOWNLOAD_DIR}/Distributions/synApps
    cd ${EPICS_DOWNLOAD_DIR}/Distributions/synApps &&
    wget -N http://www.aps.anl.gov/bcda/synApps/tar/synApps_5_3.tar.gz
    cd ${EPICS_DOWNLOAD_DIR}/Distributions/synApps &&
    wget -N https://wiki.gsi.de/pub/Epics/EpicsInstallationsAtGsi/RULES_DIRS_5_3.patch
    groups | grep -q -w epicsadm && chgrp -R epicsadm ${EPICS_DOWNLOAD_DIR}/Distributions/synApps
    find ${EPICS_DOWNLOAD_DIR}/Distributions/synApps -user $(id -n -u) -exec chmod ug+rw {} \;
    mkdir -p ${EPICS_MODULES}/synApps
    cd ${EPICS_MODULES}/synApps && tar axvf ${EPICS_DOWNLOAD_DIR}/Distributions/synApps/synApps_5_3.tar.gz
    cd ${EPICS_MODULES}/synApps/synApps_5_3 &&
    perl -pi -e "s&^\#*(SUPPORT=).*$&\1${EPICS_MODULES}/synApps/synApps_5_3/support&" support/config/MASTER_RELEASE
    cd ${EPICS_MODULES}/synApps/synApps_5_3 &&
    perl -pi -e "s&^\#*(EPICS_BASE=).*$&\1${EPICS_BASE}&" support/config/MASTER_RELEASE
    cd ${EPICS_MODULES}/synApps &&
    patch --strip=0 --input=${EPICS_DOWNLOAD_DIR}/Distributions/synApps/RULES_DIRS_5_3.patch
    cd ${EPICS_MODULES}/synApps/synApps_5_3/support/config && make release
    cd ${EPICS_MODULES}/synApps/synApps_5_3/support/config && make

    Documentation (valid for R3.14.8.2 and higher)

    -- PeterZumbruch - 07 Apr 2009


    Eclipse

    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.
    -- PeterZumbruch - 08 Nov 2006


    Eclipse IDE

    For the eclipse SDK an IDE plug-in for EPICSis provided.
    • To install follow the instructions given.
    • TIP 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)
    -- PeterZumbruch - 08 Nov 2006


    CSS - control system suite

    --

    -- PeterZumbruch - 2020-08-24

    I Attachment Action Size Date Who Comment
    Makefile.patchpatch Makefile.patch manage 310 bytes 2011-02-17 - 10:35 PeterZumbruch <nop>StreamDevice-2-4/srcSynApps/Makefile.patch
    RELEASE.locallocal RELEASE.local manage 315 bytes 2020-08-11 - 17:59 PeterZumbruch RELEASE.local template (7.0.4)
    RULES_DIRS_5_2.patchpatch RULES_DIRS_5_2.patch manage 826 bytes 2008-12-10 - 17:09 PeterZumbruch patch file for synApps_5_2/support/config/RULES_DIR for the period problem
    RULES_DIRS_5_3.patchpatch RULES_DIRS_5_3.patch manage 826 bytes 2008-12-10 - 17:09 PeterZumbruch patch file for synApps_5_3/support/config/RULES_DIR for the period problem
    VisualDCTEXT VisualDCT manage 82 bytes 2006-10-30 - 16:36 UnknownUser script wrapping the call of visualDCT
    dallas1wireRaspberryPi.7z7z dallas1wireRaspberryPi.7z manage 52 K 2013-10-08 - 11:32 PeterZumbruch Dallas 1-wire Raspberry Pi device support by Florian Feldbauer
    dallas1wireRaspberryPi.tar.gzgz dallas1wireRaspberryPi.tar.gz manage 150 K 2013-10-08 - 11:31 PeterZumbruch Dallas 1-wire Raspberry Pi device support by Florian Feldbauer
    devwaveformStream.patchpatch devwaveformStream.patch manage 308 bytes 2011-02-17 - 10:36 PeterZumbruch <nop>StreamDevice-2-4/src/devwaveformStream.patch
    patch.ChannelArchiver.wheezy74_gcc472wheezy74_gcc472 patch.ChannelArchiver.wheezy74_gcc472 manage 8 K 2014-04-14 - 13:58 PeterZumbruch ChannelArchiver patch file to adopt for gcc4.7.2 (and wheezy7.4) by F.Uhlig/GSI
    Topic revision: r230 - 2020-08-24, PeterZumbruch - This page was cached on 2024-11-01 - 00:11.

    This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
    Ideas, requests, problems regarding GSI Wiki? Send feedback | Legal notice | Privacy Policy (german)