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?

Christophs Comments

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.
/opt/cern/cmw-directory-client
/opt/cern/cmw-directory-client/1.2.5
/opt/cern/cmw-directory-client/1.2.5/include
/opt/cern/cmw-directory-client/1.2.5/include/DeviceInfo.h
/opt/cern/cmw-directory-client/1.2.5/include/DirectoryException.h
/opt/cern/cmw-directory-client/1.2.5/include/Directory.h
/opt/cern/cmw-directory-client/1.2.5/include/ServerInfo.h
/opt/cern/cmw-directory-client/1.2.5/include/Version.h
/opt/cern/cmw-directory-client/1.2.5/lib
/opt/cern/cmw-directory-client/1.2.5/lib/i686
/opt/cern/cmw-directory-client/1.2.5/lib/i686/libcmw-directory-client.a

meta layout

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

meta packages

TODO: describe fesa-base...
Topic revision: r5 - 20 Dec 2012, AlexanderSchwinn
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Foswiki? Send feedback