Alex' comments: Some Ideas, regarding the suggestion:
/opt/cern/cmw-...
I would prefer: /opt/cmw/cmw-... Even if cmw currently comes from CERN, this will change in the near future for some of the sub-packages.
/opt/fesa/version/lib/fesa-core.a
Problem here is sub-versioning.
to have e.g. v.1.2.3 of fesa does not necesarily mean that as well fesa-core of version 1.2.3 exists.
A possibility to put lib/include folder on the desired level would be:
/opt/fesa-fwk/version/links to fesa-core,fesa-core-gsi,fesa-codegen,fesa-codegen-gsi,fesa-model,fesa-model-gsi
/fesa-core/version/lib|include/...
/fesa-core-gsi/version/...
/fesa-codegen/version/...
/fesa-codegen-gsi/version/...
/fesa-model/version/...
/fesa-model-gsi/version/...
same could be done for cmw ... just as additional possibility to keep in mind.
The required XML and XSLT-files and templates could be collected in /opt/fesa/version/model and /opt/fesa/version/codegen
No separation of core and lab-part? I dont fully get the idea here. In SVN we currently have e.g. fesa-model and fesa-model-gsi. So the idea is to install both into the same folder? As sub-folder fesa-model and fesa-model-gsi? Or both use the same structures? What would be the benefit here?
Obvious Benefit: no symlinks required between packages, e.g no symlink from 'lab' to core as in fesa-model-gsi and not symlink from core to 'lab' as in fesa-codegen...
- Obvious problem: Not possible to version them separatly. Example: We use fesa-model v1.2.3 together with fesa-model-gsi 1.2.4(because we had to do a bubfix) What would be the version of the shared-folder? How I know which version of fesa-model/fesa-model-gsi is installed?
names
- fesa libraries
- Core and lab specific library.
- 3rdparty libraries
- cerns rda and all it's dependencies. Additionally cern timing.
- xsl files
- Transformation files for the eclipse plugin.
- system libraries
- openssl, boost, curl. No longer available as static versions on rhel6
compile vs blob
At gsi we can't compile the 3rdparty libraries (except timing). For these we use a binary copy from cern.
requirements
It must be possible to have multiple versions of the same library installed.
filesystem layout
/opt/cern/project/version/include
/opt/cern/project/version/lib/cpu
/opt/fesa/project/version/include
/opt/fesa/project/version/lib/cpu
All 3rdparty libraries developed at cern live underneath a common prefix
/opt/cern
. For each project (cmw-logging, cmw-rda, ...) there is one project folder. Inside the project folder is a versioning directory to fullfill the requirement of multiple version inside the system.
Developers don't want to specify all include and library folders. The idea is, to have a single location that holds all dependencies for a specific fesa version. This folder defines which libraries should be used for a specific fesa version. There are actually two folders.One folder for all 3rdparty dependencies and one folder for all fesa dependencies.
Here is the 3rdparty include folder for fesa 0.8.0
/opt/fesa/fesa-3rdparty/0.8.0/include/cmw-directory-client
/opt/fesa/fesa-3rdparty/0.8.0/include/cmw-log
/opt/fesa/fesa-3rdparty/0.8.0/include/cmw-log-stomp
/opt/fesa/fesa-3rdparty/0.8.0/include/cmw-rbac
/opt/fesa/fesa-3rdparty/0.8.0/include/cmw-rda
/opt/fesa/fesa-3rdparty/0.8.0/include/cmw-serializer
/opt/fesa/fesa-3rdparty/0.8.0/include/cmw-stomp
/opt/fesa/fesa-3rdparty/0.8.0/include/cmw-util
/opt/fesa/fesa-3rdparty/0.8.0/include/dtm
/opt/fesa/fesa-3rdparty/0.8.0/include/err
/opt/fesa/fesa-3rdparty/0.8.0/include/IceUtil
/opt/fesa/fesa-3rdparty/0.8.0/include/omniorb
/opt/fesa/fesa-3rdparty/0.8.0/include/tgm
/opt/fesa/fesa-3rdparty/0.8.0/include/tgv
/opt/fesa/fesa-3rdparty/0.8.0/include/tim
each entry is only a symlink. for the cmw-directory-client it is
/opt/fesa/fesa-3rdparty/0.8.0/include/cmw-directory-client ->
/opt/cern/cmw-directory-client/1.2.5/include
In a C File that wants to include the cmw-directory-client.
#include cmw-directory-client/Directory.h
and the compiler flag
-I/opt/fesa/fesa-3rdparty/0.8.0
The include path is set inside of the fesa-environments
Make.parent
. So a developer can just include.
Same setup is for fesa-fwk which collects all links for "real" fesa libraries.
packages
TODO: describe fesa-base...