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 options. NoMachine 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 |
---|
|
ssh -Y <unix_username>@lcls-dev3 |
...
Code Block |
---|
language | bash |
---|
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 |
---|
title | Source 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 |
---|
|
[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.
...