Wiki Markup |
---|
h1. Building Gaudi v21r7 |
...
Requirements
...
*Requirements* * CMT v1r20p20090520 available on SLAC Linux on /afs/slac/g/glast/users/heather/gaudi_v21r4/CMT and through the download section of the [CMT web site |
...
|http://www.cmtsite.org/]. * Source Code modified for GLAST to limit the externals required by Gaudi * LCGCMT_58 zip file of externals and interface CMT packages for Gaudi * An updated version of ROOT v5.26.00a-gl1, the binaries are available in GLAST_EXT at SLAC and the source is in compiled against gccxml 0.9 |
...
Windows
...
Windows # Unzip LCGCMT_58 into your local directory |
...
# Unzip Gaudi source code into your local directory |
...
# Copy in our version of ROOT v5.26.00a-gl1 into the external/ROOT directory |
...
# Copy in our version of Python 2.5.1 into the external/Python directory |
...
# Update external/LCGCMT_58/LCG_Configuration/cmt/requirements |
...
set ROOT_config_version to 5.26.00a-gl1 |
...
set Python_config_version to 2.5.1-gl1 |
...
# Update external/LCGCMT/LCGCMT_58/LCG_Interfaces/ROOT/cmt/requirements and comment out |
...
\## apply_pattern use_optional pkg=Qt |
...
\## apply_pattern use_optional pkg=dcache_client |
...
\## apply_pattern use_optional pkg=gfal |
...
and add: |
...
macro ROOT_cppflags "" |
...
\ target-winxp "-DROOT_w32pragma " |
...
# Update external/LCGCMT/LCGCMT_58/LCG_Settings/cmt/requirements |
...
Update LCG_home to the top level location of the Gaudi build to something like: |
...
macro LCG_home "$\{myPathDir\}/buildingGaudi_v21r7/" |
...
Update LCG_Releases to |
...
macro LCG_releases "$(LCG_home)/external" |
...
# Update GaudiKernel's requirements file to remove use of CppUnit |
...
# Update GaudiSvc's requirements file to remove use of CLHEP |
...
# Set up to use CMT v1r20p20090520, for example: |
...
Building Gaudi v21r4
Requirements
...
<!-- /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0pt; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman";} @page Section1 {size:612.0pt 792.0pt; margin:72.0pt 90.0pt 72.0pt 90.0pt; mso-header-margin:36.0pt; mso-footer-margin:36.0pt; mso-paper-source:0;} div.Section1 {page:Section1;} -->CMTBIN=VisualC\\ CMTCONFIG=win32_vc71_dbg\\ CMTPATH=C:\heather\gaudi_v21r7\GAUDI\GAUDI_v21r7;C:\heather\gaudi_v21r7\external;C:\heather\gaudi_v21r4\external\LCGCMT\LCGCMT_56c;C:\heather\glast\tools\\ CMTROOT=C:\heather\glast\tools\CMT\v1r20p20090520\\ CMTVERSION=v1r20p20090520 # Gaudi uses CMT, so building goes something like this We choose to limit the Gaudi packages we build to (in this order): GaudiKernel, GaudiSvc, GaudiUtil, GaudiAlg, GaudiAud For each package, enter the cmt directory and do: cmt broadcast "cmt config" source setup.sh make h1. Building Gaudi v21r4 *Requirements* * CMT v1r20p20090520 available on SLAC Linux on /afs/slac/g/glast/users/heather/gaudi_v21r4/CMT and through the download section of the [CMT web site |
...
|http://www.cmtsite.org/]. * Source Code modified for GLAST to limit the externals required by Gaudi * LCGCMT_56c zip file of externals and interface CMT packages for Gaudi * An updated version of ROOT v5.22.00e-gl1, the binaries are available in GLAST_EXT at SLAC and the source is in compiled against gccxml 0.9 |
...
h3. redhat4-i686-32bit-gcc34 |
...
* Copy in our version of ROOT v5.22.00e-gl1 in the external/ROOT directory |
...
* Copy in our version of python 2.5.1-gl1 into the external/python directory |
...
* Update external/LCGCMT_56c/LCG_Configuration/cmt/requirements and |
...
set ROOT_config_version to 5.22.00e-gl1 |
...
set Python_config_version to 2.5.1-gl1 |
...
* Update external/LCGCMT/LCGCMT_56c/LCG_Interfaces/ROOT/cmt/requirements and comment out |
...
\## apply_pattern use_optional pkg=Qt |
...
\## apply_pattern use_optional pkg=dcache_client |
...
\## apply_pattern use_optional pkg=gfal |
...
and add: |
...
macro ROOT_cppflags "" |
...
\ target-winxp "-DROOT_w32pragma " |
...
* Update external/LCGCMT/LCGCMT_56c/LCG_Settings/cmt/requirements |
...
Update LCG_home to the top level location of the Gaudi build to something like: |
...
macro LCG_home "$\{myPathDir\}/buildingGaudi_v21r4/" |
...
Update LCG_Releases to |
...
macro LCG_releases "$(LCG_home)/external" |
...
* Set up to use CMT v1r20p20090520, for example: |
...
setenv CMTBASE /afs/slac/g/glast/users/heather/gaudi_v21r4/CMT |
...
setenv CMTVERSION v1r20p20090520 |
...
source $CMTBASE/$CMTVERSION/mgr/setup.csh |
...
setenv CMTCONFIG slc4_ia32_gcc34 |
...
setenv CMTPATH /nfs/slac/g/glast/users/glground/heather/buildingGaudi_v21r4/GAUDI/GAUDI_v21r4:/nfs/slac/g/glast/users/glground/heather/buildingGaudi_v21r4/external:/nfs/slac/g/glast/users/glground/heather/buildingGaudi_v21r4/external/LCGCMT/LCGCMT_56c:/afs/slac/g/glast/users/heather/gaudi_v21r4 |
...
* Gaudi uses CMT, so building goes something like this |
...
We choose to limit the Gaudi packages we build to (in this order): |
...
GaudiKernel, GaudiSvc, GaudiUtil, GaudiAlg, GaudiAud |
...
For each package, enter the cmt directory and do: |
...
cmt broadcast "cmt config" |
...
source setup.sh |
...
Building Gaudi v18r1
...
make h1. Building Gaudi v18r1 The official Gaudi Home Page: [http://proj-gaudi.web.cern.ch/proj-gaudi/ |
...
] Our outdated GLAST Gaudi home page: [http://www-glast.slac.stanford.edu/software/gaudi/ |
...
] A good point of contact if having trouble: |
...
Pere Mato (Pere.Mato@cern.ch). |
...
h2. Obtaining the source |
...
The Gaudi home Page sees modification from time to time, especially on the timescale of |
...
our upgrades \- so this information is as of June,2006. |
...
Access the Releases page off the Gaudi home page: [http://proj-gaudi.web.cern.ch/proj-gaudi/releases/ |
...
] Click on the Doxygen link for the version you are interested in. |
...
The Doxygen page for a particular release will provide a Download for the Gaudi source. h2. |
...
Obtaining the external libraries that Gaudi uses |
...
Accessing the Gaudi external libraries is separate from downloading Gaudi itself. |
...
Again, the Gaudi Home Page does see reorganization from time to time, this information is current as of June,2006. |
...
Access the Releases page off the Gaudi Home Page: |
...
[http://proj-gaudi.web.cern.ch/proj-gaudi/releases/ |
...
] Click on the Doxygen link for the version you are interested in. |
...
The Doxygen page will include a link called "Related External Libraries" |
...
For example for Gaudi v18r1: [http://proj-gaudi.web.cern.ch/proj-gaudi/releases/v18r1/doxygen/externaldocs.html]Note the version of LCGCMT, in this case LCGCMT_40a. |
...
Also note that the list of external libraries is not complete exhaustive\! |
...
This page lists the highlights, but some of these externals depend on other external libraries that must be obtained. |
...
This page is helpful in that it provides the version of all Gaudi external, however, I have found that it does not necessarily provide useful links for obtaining the binaries for all platforms. |
...
I found the following link much more helpful in that all the binaries are available in one location: |
...
[http://service-spi.web.cern.ch/service-spi/external/distribution/ |
...
] This page does indeed include ALL externals you might require. |
...
For example, for Gaudi v18r1 we require: |
...
AIDA 3.2.1 |
...
BOOST 1.32 |
...
CLHEP 1.9.2.2 |
...
CppUnit 1.10.2 |
...
expat 1.95.8 |
...
gccxml_0.6.0.patch3 |
...
GSL 1.5 |
...
pcre 4.4 |
...
POOL 2.2.7 |
...
Python 2.4.2 |
...
SEAL 1.7.9 |
...
uuid 1.38 |
...
xerces 2.3.0 |
...
Yes, a long list, this will allow you to get started - after compiling Gaudi and determining which Gaudi packages we actually need and require, one can trim down the list of external libraries. |
...
Currently, GLAST Offline uses the following Gaudi packages: |
...
GaudiAud, GaudiAlg, GaudiKernel, GaudiPI, GaudiSvc. |
...
We are interestd in using GaudiPython as well. |
...
On the windows side - many libraries are only provided in debug mode. |
...
The Gaudi team does not have the time or resources to provide non-debug optimized versions - they use |
...
In addition to downloading the libraries, also download the appropriate version of LCGCMT_*, this package acts as their IExternal package and is necessary to compile Gaudi.
Compilation
Unpack all the source and binaries you have downloaded.
...
Windows as a development environment and not for production. *In addition to downloading the libraries, also download the appropriate version of LCGCMT_\**, *this package acts as their IExternal package and is necessary to compile Gaudi.* h2. Compilation Unpack all the source and binaries you have downloaded. Once LCGCMT has been unpacked you may have a directory tree that looks like: LGCCMT/LCG_CMT40a/LCG_Interfaces - contains packages that behave like our IExtermal package where the subpackages determine how to find the external libraries |
...
LCGCMT/LCG_CMT40a/LCG_Settings - requirements file sets up global environment to find externals - in particular it defines the tags for the various operating systems and compilers |
...
LCGCMT/LCG_CMT40a/LCG_Policy - like our GlastPolicy |
...
There are some environment variables that should be set before compiling Gaudi: |
...
CMTBIN |
...
CMTROOT |
...
CMTVERSION |
...
CMTPATH |
...
CMTCONFIG SITEROOT In addition some of the requirements in LCGCMT should be modified: Update LCG_Settings/cmt/requirements: |
...
set LCG_home=C:\heather |
...
set LCG_releases - determines path to find POOL and SEAL |
...
set LCG_external - determines path to find other externals like AIDA... |
...
haven't experimented with makeing LCG_external == LCG_releases |
...
Update LCG_Interfaces/CLHEP/cmt/requirements |
...
CLHEP_version - version number of CLHEP for Gaudi v18r1 it is 1.9.2.2 |
...
CLHEP_home |
...
\- points to our CLHEP external example: $(GLAST_EXT)/CLHEP/$(CLHEP_native_version) |
...
Also add python.exe to the PATH if it isn't already. |
...
Gaudi uses CMT, so building goes something like this - (Windows version in parentheses): |
...
From within the Gaudi cmt |
...
directory cmt broadcast "cmt config" |
...
source setup.sh (setup.bat) |
...
make (nmake /f nmake) |
...
h3. Linux |
...
Might check if there is a .cmtrc file in your $HOME directory to be sure it doesn't override your CMTPATH
Windows Notes
Some examples env var settings:
...
Notes Might check if there is a .cmtrc file in your $HOME directory to be sure it doesn't override your CMTPATH h3. Windows Notes Some examples env var settings: set CMTBIN = VisualC set CMTROOT=C:\heather\glast\tools\CMT\v1r16p20040901 |
...
set CMTVERSION=v1r16p20040901 |
...
set CMTPATH=C:\heather\gaudi\GAUDI\GAUDI_v18r1;C:\heather\gaudi\LCGCMT;C:\heather\gaudi\LCGCMT\LCGCMT_40a;C:\heather\glast\tools |
...
set CMTCONFIG=win32_vc71_dbg |
...
set SITEROOT=C:\heather |
...
h2. Reorganization of includes and libraries |
...
When Gaudi is done compiling, you will find the libraries distributed under each of its packages: |
...
GaudiAlg, GaudiAud, GaudiKernel, GaudPI, GaudiSvc,... |
...
the libraries and includes may be reorganized under one common gaudi directory for distribution with the GLAST Offline software. |