Title: Packaging of EPICS-basedControl System Software
1Packaging ofEPICS-basedControl System Software
Takashi Nakamoto (Cosylab Japan) takashi.nakamoto_at_
cosylab.com
2Abstract
- 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
3Motivation 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?
Dont waste your time to solve the common
problems!
4Packaging 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.
Software Repository
EPICS base
asyn
Sequencer
5Advantages 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.
6Unix 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).
7Available 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
8How 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
9Basic 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.
xxx-ioc-0.0a1.x86_64.rpm
xxx-opi-0.0a1.x86_64.rpm
10Example architectural view 1
Common Software Repository
Software Repository
RPMs
RPMs
RPMs
RPMs
RPMs
RPMs
- IOC
- EPICS base
- Driver support
- Archiving server
- EPICS base
- Channel Archiver
Developers directly uploadRPMs to the repository.
- Operators clients
- EPICS base
- EDM
- ALH
- Developers workstation
- EPICS base
- EDM
- ALH
- VDCT
- CSS
11Example architectural view 2
Common Software Repository
Software Repository
RPMs
RPMs
RPMs
Continuous Integration server
RPMs
- IOC
- EPICS base
- Driver support
source
Source Repository
source
source
- Operators clients
- EPICS base
- EDM
- ALH
Developers upload only modified source code.
12Conclusion
- Save your time by using packaging system.
- Packaging system gives a consistent way to make
packages and distribute them.
Thank You for Your Attention !