This page documents the process to follow when deploying a new versions of EPICS Extensions at SLAC. Extensions at SLAC live in separate directories under $EPICS_TOP/extensions where they can be worked on separately. When it comes time to release new versions, they are re-bundled and placed under $EPICS_EXTENSIONS.
To make the process clear, let's go through an actual example of creating and deploying a new release.
Let's say the current release is R1.2.1, and we'd like to make a new R1.3.0 release which will include updating eget, labca, and removing procServ. To start, create a local copy of the extensions repository somewhere in a sandbox in your home directory to work with:
git clone /afs/slac/g/cd/swe/git/repos/package/epics/extensions/extensions.git
A fresh copy should look similar to the following:
jesseb@aird-b50-srv01:/afs/slac/g/controls/development/users/jesseb/sandbox/extensions $ ls configure Makefile RELEASE_NOTES RELEASE_SITE
The file we will want to modify is configure/RELEASE. The current version looks like this:
jesseb@aird-b50-srv01:/afs/slac/g/controls/development/users/jesseb/sandbox/extensions $ cat configure/RELEASE # # Extension release versions # include $(TOP)/RELEASE_SITE EPICS_EXTENSIONS = $(EPICS_SITE_TOP)/extensions CAMCOM = $(EPICS_EXTENSIONS)/Camcom/R3.0.0 CATOOLS = $(EPICS_EXTENSIONS)/catools/R1.0.0 CHANNELWATCHER = $(EPICS_EXTENSIONS)/ChannelWatcher/R3.0.1 STRIPTOOL = $(EPICS_EXTENSIONS)/StripTool/R2.5.18.0-1.1.0 VISUALDCT = $(EPICS_EXTENSIONS)/VisualDCT/R2.7.0-0.1.0 ALH = $(EPICS_EXTENSIONS)/alh/R1.2.35-1.0.2 CASNOOPER = $(EPICS_EXTENSIONS)/caSnooper/R2.1.2.3-0.1.0 EDM = $(EPICS_EXTENSIONS)/edm/R1.12.105B-1.3.0 EGET = $(EPICS_EXTENSIONS)/eget/R0.0.0-0.0.2 FWDCLIS = $(EPICS_EXTENSIONS)/fwdCliS/R1.2.6 GATEWAY = $(EPICS_EXTENSIONS)/gateway/R2.1.2.0-1.0.0 JCA = $(EPICS_EXTENSIONS)/jca/R2.3.7-0.2.0 LABCA = $(EPICS_EXTENSIONS)/labca/R3.8.0 PARSECASW = $(EPICS_EXTENSIONS)/parsecasw/R1.0.3.0-0.1.0 PROBE = $(EPICS_EXTENSIONS)/probe/R1.1.8.0-0.1.0 PROCSERV = $(EPICS_EXTENSIONS)/procServ/R2.7.0-1.1.0 IOCLOGMSGSERVER = $(EPICS_EXTENSIONS)/iocLogMsgServer/R1.7.0
Now assuming you have already made your changes to the relevant extensions and rebuild them under $EPICS_TOP/extensions, making the new release of the extensions bundle is as simple as modifying the RELEASE file to point to the updated versions. For this example, we will be updating eget to R0.0.0-0.0.4, and labca to R3.8.1-0.1.0. We will also be removing procServ as it does not fit well with the other extensions. So the updated file will look as follows:
# # Extension release versions # include $(TOP)/RELEASE_SITE EPICS_EXTENSIONS = $(EPICS_SITE_TOP)/extensions CAMCOM = $(EPICS_EXTENSIONS)/Camcom/R3.0.0 CATOOLS = $(EPICS_EXTENSIONS)/catools/R1.0.0 CHANNELWATCHER = $(EPICS_EXTENSIONS)/ChannelWatcher/R3.0.1 STRIPTOOL = $(EPICS_EXTENSIONS)/StripTool/R2.5.18.0-1.1.0 VISUALDCT = $(EPICS_EXTENSIONS)/VisualDCT/R2.7.0-0.1.0 ALH = $(EPICS_EXTENSIONS)/alh/R1.2.35-1.0.2 CASNOOPER = $(EPICS_EXTENSIONS)/caSnooper/R2.1.2.3-0.1.0 EDM = $(EPICS_EXTENSIONS)/edm/R1.12.105B-1.3.0 EGET = $(EPICS_EXTENSIONS)/eget/R0.0.0-0.0.4 FWDCLIS = $(EPICS_EXTENSIONS)/fwdCliS/R1.2.6 GATEWAY = $(EPICS_EXTENSIONS)/gateway/R2.1.2.0-1.0.0 JCA = $(EPICS_EXTENSIONS)/jca/R2.3.7-0.2.0 LABCA = $(EPICS_EXTENSIONS)/labca/R3.8.1-0.1.0 PARSECASW = $(EPICS_EXTENSIONS)/parsecasw/R1.0.3.0-0.1.0 PROBE = $(EPICS_EXTENSIONS)/probe/R1.1.8.0-0.1.0 IOCLOGMSGSERVER = $(EPICS_EXTENSIONS)/iocLogMsgServer/R1.7.0
To generate the links to the new versions, just run make from the top level extensions directory. Note that it will generate both the RHEL 6 and RHEL 7 versions at the same time, so there is no need to change to a different machine and run make twice for these.
jesseb@aird-b50-srv01:/afs/slac/g/controls/development/users/jesseb/sandbox/extensions $ make <lots of output> jesseb@aird-b50-srv01:/afs/slac/g/controls/development/users/jesseb/sandbox/extensions $ ls bin rhel6-x86_64 rhel7-x86_64 jesseb@aird-b50-srv01:/afs/slac/g/controls/development/users/jesseb/sandbox/extensions $ ls -la bin/rhel6-x86_64 <lots of output>
Running the ls commands will verify that the softlinks are all pointing to the expected versions.