I think you are asking about a fairly small and simple installation. I handle our rather small set of beamlines using the following scheme.
I use a single Linux machine (called corvette) to hold the working directories of EPICS base, synApps, areaDetector, etc. This machine runs Centos 7. I build on corvette itself for the linux-x86_64, linux-x86, and vxWorks-ppc32 architectures.
I also build for the following additional architectures from other computers:
linux-x86_64-rhel6 64-bit RHEL 6
linux-86_64-gcc42 64-bit Suse 11.0
linux-x86-rhel6 32-bit RHEL 6
windows-x64-static 64-bit Windows static
windows-x64 64-bit Windows dynamic
win32-x86-static 32-bit Windows static
These builds are needed because I have hardware that only runs on those operating systems. However, all of those builds are done using NFS or SMB mounts to the same working directories on corvette. There is only a single copy of the
source code, and a single bin/, lib/, etc. directory for each module.
I typically build the same IOC application called CARS for most of our IOCs. Here is a listing of the bin directory for that application:
corvette:~/support>ls -l ~/support/CARS/bin
drwxrwxr-x 2 epics domain users 20 Oct 3 13:20 linux-x86
drwxrwxr-x 2 epics domain users 20 Oct 3 13:25 linux-x86-rhel6
drwxrwxr-x 2 epics domain users 20 Oct 3 13:15 linux-x86_64
drwxr-xr-x 2 epics domain users 20 Oct 3 13:35 linux-x86_64-gcc42
drwxrwxr-x 2 epics domain users 20 Sep 25 10:06 linux-x86_64-rhel6
drwxrwxr-x 2 epics domain users 40 Oct 3 13:20 vxWorks-ppc32
drwxrwxrwx 2 epics domain users 24 Oct 3 13:36 win32-x86-static
drwxrwxrwx 2 epics domain users 39 Oct 3 14:08 windows-x64
drwxrwxrwx 2 epics domain users 24 Oct 3 13:51 windows-x64-static
For areaDetector and a few other “detector” modules I don’t build those into the CARS application, but rather make dedicated IOCs for each detector type (Pilatus, Perkin Elmer, Prosilica, etc.)
When running EPICS on computers on our local beamlines, the setup is as follows:
- IOC application runs on the machines running the above operating systems (mix of various Linux and Windows) which is connected to the hardware.
- For all Linux machines all files (executables, shareable libraries, db files, dbd files, OPI files, iocBoot directories,) are on corvette. There is nothing locally installed on the IOC computer, unless the IOC is running on corvette.
- For Windows all files are on corvette except .exe and .dll files used by the IOCs at run-time. These cannot be kept on corvette, because they cannot be updated when any IOC has a file in use. Thus, the .exe and .dll files are copied
to a single local directory on the Windows machine each time an update is done.
For remote machines that cannot access corvette at run-time I build a standalone tar or zip file using a script like that attached. It copies all require bin, db, dbd, and op directories. This tar or zip file can be unpacked on a remote
machine. A starting iocBoot/iocXXX directory is copied to a new one and the st.cmd and envPaths files are edited. It is very simple, and has proven very useful for remote or portable Windows and Linux systems.
For areaDetector IOCs there is a simple script that does the same thing as the attached script, building a standalone package for the selected detector type and target architecture that can be installed on any computer.
From: firstname.lastname@example.org <email@example.com> On Behalf Of Vikram Bhagat via Tech-talk
Sent: Thursday, October 11, 2018 11:55 PM
To: epics talk <firstname.lastname@example.org>
Subject: EPICS Application Package
What is the way to package EPICS application?
I have developed EPICS IOC application using Base7, Asyn and Stream device. I is working fine on my development computer having Ubuntu OS.
Now i would like to deploy the IOC application on the other ubuntu computer without installing EPICS base, Asyn etc.
How i can make package so that i can directly install application on the new PC without installing all stuff separately.
How people are doing this for EPICS development?