Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Prerequisites

First, review the materials in units 1, 2, 3, and 6 of the EPICS Training Slides linked above.

Next, let's prepare to solve the problem.  We need to do some work to set up accounts and environments to build against EPICS at SLAC.

Use your unix account to log into the a SLAC controls development server (instructions).

  • The link above suggests using FastX as a method to connect to the remote server.  Any X-windows forwarding should work (for the Mac, there's XQuartz).  SLAC IT supports a few optionsNoMachine works well. Most of them are available using the SLAC Self Service application.
  • Also, when the above link has you create your .bashrc file from the get_my_bash script, it sources two scripts, one of which is listed below.

Log into the development server.  The main development server is lcls-dev3:

Code Block
titleLog into lcls-dev3
ssh -Y <unix_username>@lcls-dev3

...

Code Block
languagebash
title~/.ssh/config
Host *
    HostKeyAlgorithms=+ssh-rsa
    PubkeyAcceptedKeyTypes=+ssh-rsa

It could well be, also, that you are logging into an environment where it's entirely authenticated via Kerberos to authenticate AFS. That's the usual case. Look here for help with that. Setting that up will make it so that, like the ssh key exchange, logging in will be passwordless.

SLAC Controls Software Group maintains a standard environment that can be set up by sourcing a single setup script

Code Block
titleSource the SLAC environment
source /afs/slac/g/lcls/tools/script/ENVS64.bash

Running this script will set up many environment variables and symbolic links that are very useful for your work.  You will become familiar with them as you move forward.  For now, you can make sure the environment was set up properly:

Code Block
titleCheck environment
[jmock@lcls-dev3 ~]$ printenv | grep EPICS_BASE
EPICS_BASE_HOST_BIN=/afs/slac.stanford.edu/g/lcls/vol9/package/anaconda/envs/python3.8envs/v2.5/epics/bin/linux-x86_64
EPICS_BASE_VERSION=7.0.6.1
EPICS_BASE_RELEASE=/afs/slac/g/lcls/epics/base/R7.0.3.1-1.0
EPICS_BASE=/afs/slac/g/lcls/epics/base/R7.0.3.1-1.0
EPICS_BASE_VER=R7.0.3.1-1.0

Note: As of May 5, 2023, EPICS_BASE_HOST_BIN and EPICS_BASE_VERSION don't show up when you execute the above command. So, it now looks more like:

Code Block
[0 jmpdude@lcls-dev3 ~]$ printenv | grep EPICS_BASE
EPICS_BASE_RELEASE=/afs/slac/g/lcls/epics/base/R7.0.3.1-1.0
EPICS_BASE=/afs/slac/g/lcls/epics/base/R7.0.3.1-1.0
EPICS_BASE_VER=R7.0.3.1-1.0

...

Calling makeBaseApp.pl with the flag -t and type ioc will create the Application and configure directories as well as makefiles needed for a basic EPICS application.  Calling it a second time with the -i flag will create an iocBoot directory and test IOC.  See the output example in the code block below.

...