packaging of epics-basedcontrol system software takashi nakamoto (cosylab japan)...
TRANSCRIPT
2
Abstract
Packaging of control system software Control system software: EPICS base, driver
supports, modules, extensions, CSS, etc. Gives a consistent way to install, uninstall and
upgrade them. This work is sponsored by ITER
Examples in this presentation are taken from ITER CODAC Core System.
Visit ITER website for more details about CODAC Core System.https://www.iter.org/org/team/chd/cid/codac/coresystem
3
Motivation: typical problems
EPICS drivers, modules, extensions and relevant applications are provided in different way. In most cases, only source is provided and you
need to build it before you use it. Compilation errors
Build dependencies. Wrong build configuration.
Inconsistent way to install, uninstall and upgrade Many people scatter files in different directories
with different conventions. Complex dependencies. How do you manage which version you have?
Don’t waste your time tosolve the common problems!
Software Repository
4
Packaging & Repository
Make use of RPM, the standard packaging system. ITER: Built for 64-bit RHEL (currently 5.5).
You can also use CentOS, Scientific Linux, etc. Save compiled software on a shared repository
RHN Satellite Server yum repository exposed via HTTP
Distribute software through this repository.
EPICS base asyn
Sequencer …
5
Advantages from users perspective
Standard tools to install, uninstall and upgrade are available. yum install / yum remove / yum upgrade … any GUI tool
Compiled software packages are ready for you. Dependencies are automatically resolved. Scripts can be run after installation if any.
6
Unix standards
All packages are installed in accordance with the standard directory structure. Use of “alternative” to resolve path to executable
files. Run daemons in the same fashion of other Unix
services. Run a daemon with a separate account (not root).
optcodac-2.0
binepics
basemoduleextension
libinclude
etcopt
codac-2.0edmarchiver
init.dvar
optcodac-2.0
autosaveepicsIOCLog
Directory structure of CODAC Core System 2.0:
7
Available packages on CODAC Core System 2.0
EPICS base EPICS modules (record/device/driver support)
sncseq, asyn, s7plc, autosave, … ni6259, pxi6682
Tools and libraries VDCT, caSnooper, pycachannel, …
CSS (Control System Studio) BOY, BEAST, BEAUTY, Data Browser, …
SDD tools
8
How to make packages?
Maven Software project management tool. XML based configuration (pom.xml).
We developed Maven plug-ins to make RPMs of control system software. No need to write SPEC file. Particularly customized to quickly package EPICS
relevant software (IOC, modules, CSS etc.). Automatically detects dependencies.
Beginning part of pom.xml Packaging information in pom.xml
9
Basic packaging procedure of IOC
mvn-make-base-app src/main/epics/xxxApp src/main/epics/iocBoot/iocXXX src/main/edm …
Make database, configure st.cmd, make operators’ screen, etc.
mvn package This command compiles source, runs tests if any
and makes RPMs in target directory.
srcmain
edmepics
xxxAppiocXXX
testtarget
Example source directory structure:
xxx-ioc-0.0a1.x86_64.rpm
xxx-opi-0.0a1.x86_64.rpm
10
Example architectural view 1
IOC-EPICS base-Driver support
Operators’ clients-EPICS base-EDM-ALH
Archiving server-EPICS base-Channel Archiver
Developers’ workstation-EPICS base-EDM-ALH-VDCT-CSS
Common Software Repository
Software Repository
Developers directly uploadRPMs to the repository.
RPMs
RPMs
RPMsRPMs RPMs
RPMs
11
Example architectural view 2
IOC-EPICS base-Driver support
Operators’ clients-EPICS base-EDM-ALH
Common Software Repository
Software Repository
Developers upload only modified source code.
RPMs
RPMsRPMs
Continuous Integration server
Source Repository
RPMs
source
sourcesource
…