RDA2 is adopted by GSI to use mainly as a communication layer between FESA device classes and the User Specific components. Commonly those components are using the JAPC Framework for communication, which itself is an abstraction level for CMW - RDA calls. Since neither FESA nor JAPC require all CMW libraries, only a particular snapshot of them is used by GSI. The snapshot contains following cmw libraries:
In particular only the cmw-rda and cmw-log components are used directly by FESA
. Those however depend on the other libraries within the snapshot.
Additionaly the cmw snapshot contains the following 3rd party libraries required to run the CMW: omniORB and iceutils. In case of the iceutils only a small cut of the original library is used.
To deploy and run the CMW Middlware it is also necessary to run the CMW Directory Server, which resolve Device or Deployment Unit Names to CORBA IORs.
The main usage of RDA messaging at GSI is to provide the functionality of the FESA
Framewok, which includes the communication layer and the logging capability. Those functionalities are provided by the cmw-rda and cmw-log packages. However they have multiple dependencies to other packages of CMW Framework and hence are also used at GSI. The following figure provides the overview of the packages and their build dependencies.
are 3rd part libraries. However CMW Framework is using only a thread part of the IceUtils
library, which is also modified by the CERN middleware team. The modied sources for the IceUtils can be found in the CERN repository.
In Order to build the CMW libraries at GSI (Scientific Linux 6) following points need to be considered:
- The required libraries (see figure above) can be checked out from the CERN repository
- Additionally a tagged version used by FESA is also copied into a GSI repository
- The build requires some common configuration files (Make.cmw, Make.generic and Make.common), those can be obtained from the CERN repository
- The configuration files need to be adjusted according the environment, e.g. the -m32 flag for the compiler
- Currently the used and tested omniORB version is 4.1.6
- The build of omniORB for a 32bit target System requires a 32bit Python interpreter (can be cross-compiled)
- The used and tested 32bit Python version is 2.7.3
- An attached build script can be used to build the libraries
- 09 Dec 2015