https://twiki.cern.ch/twiki/bin/view/LHCb/SoftwareInstallation
These instructions are intended for software managers installing the LHCb software at LHCb institutes on officially supported platforms. See also Chris Jones' recipe for installing on non-supported platforms. If you find problems with these instructions, or with the install_project.py script, please report them to the install_project category of the lhcbscripts Savannah bug tracker
The installation is made with a python script which requires python version >=2.2.3 on Linux and >=2.3.4 on Win32. If you don't have Python on your machine, you can download it from the Python web site.
The installation is made of several steps. The order is very important and none of them can be skipped. Make sure that the step is correctly finished before to go to the next.
You should first decide where to install the software and set MYSITEROOT to the full path (no softlink):
You should set the following environment variable:
Download the python scripts
install_project.py
> cd $MYSITEROOT
> python install_project.py -h
Usage:
python install_project.py -p <project> -v <version> [-b ] [-d
or --debug] [-m <do_config|global|select>]
$CMTCONFIG is the binary
directory name
creates log/
to receive log files
scripts/
to receive script files
lcg/
to receive lcg software
lhcb/
to receive lhcb software
contrib/
to receive CMT and OpenScientist
targz/
to receive tar files from the web
$CMTCONFIG/
to receive runtime libraries
download necessary scripts in scripts/
get the list of projects to download
download project sources
if binaries are required: download project binaries
otherwise compile project sources
-d or --debug
: to print more info
-l or --list
: to list the <project>_<version>_*.tar.gz files available on the web
-r or --remove
: remove the <project>/<version>
-c or --cmtversion : download this CMT
version
-m global
: to compile all projects but LCGCMT
-m select
: to compile only the project given in -p argument
-m do_config
: to make a 'cmt broadcast cmt config' of all projects but LCGCMT
-h or --help
: to print this help
-b
: to import $CMTCONFIG binaries
--binary=<bin>
: to import another binary (i.e. $CMTCONFIG_dbg on Linux)
this triggers a 'cmt broadcast cmt config' of all projects but LCGCMT
-f
: to import sources, $CMTCONFIG binaries, $CMTCONFIG_dbg binaries
and make a 'cmt broadcast cmt config' in all projects but LCGCMT
Perequisite:
requires python version >= 2.3.4 on Win32 and python >=2.2.3
on Linux
the following environment variables should have been set
before invoking the script:
$MYSITEROOT is the
current directory
$CMTCONFIG is the
binary directory name
download of a tar file is made if it does not exist yet
in targz/ or if the main directory is not present.
the download is made in get_file function with urllib.urlretrieve
the decision to install a tar file is made in get_untar_flag function.
when the tar.gz file has been untared it is replaced by
a one line file to save disk space.
If the tar.gz file has not been properly untared the file is removed.
Note, the script will start by downloading the version of CMT defined in ExtCMT.(c)sh, if not already present. To get a more recent version add the argument -c <cmt-version>
> python install_project.py [-c <cmt-version>] -p <project> -v <version> [ -b | --binary=<bin>] [ -m <do_config|global|select> ] [ -f ] [ -d ]
Some examples
> setenv MYSITEROOT /scratch/Install
> setenv CMTCONFIG slc3_ia32_gcc323
> cd $MYSITEROOT
> python install_project.py -p DaVinci -v v19r1 -b
will install all required projects by DaVinci v19r1 for slc3_ia32_gcc323 binary platform starting from CMT, LCGCMT, till DAVINCI. as well as the necessary scripts.
to use directly your local release version
> cd $MYSITEROOT
> source scripts/ExtCMT.csh ! this is essential to
set all <project>_release_area environment variables
> SetupProject DaVinci v19r3
> cd $DaVinci_release_area/DAVINCI/DAVINCI_v19r3/Phys/DaVinci/v19r3/cmt
> source setup.csh
> ../$CMTCONFIG/DaVinci.exe ../options/DaVinci.opts
to use it from your working directory
> setenv User_release_area <my working_directory>
!(or update $MYSITEROOT/scripts/ExtCMT.csh to set it)
> source $MYSITEROOT/scripts/ExtCMT.csh
> setenvDaVinci v19r3 !(this puts you in the directory
$User_release_area/DaVinci_v19r3)
> getpack Phys/DaVinci v19r3
> cd Phys/DaVinci/v19r3/cmt
> source setup.csh
> gmake
> ../$CMTCONFIG/DaVinci.exe ../options/DaVinci.opts
to run it on a platform which is not slc3_ia32_gcc323 but pretends to be slc3_ia32_gcc323
> ${MYSITEROOT}/${CMTCONFIG}/ld-linux.so.2 --library-path ${MYSITEROOT}/${CMTCONFIG}:${LD_LIBRARY_PATH} ../$CMTCONFIG/DaVinci.exe ../options/DaVinci.opts
> cd $MYSITEROOT
> python install_project.py -p Gauss -v v25r9 -b -m do_config [-c <cmt-version>]
will download all source projects and binaries = $CMTCONFIG required by Gauss v25r9 and run a 'cmt broadcast cmt config' in all projects but LCGCMT
> source $MYSITEROOT/scripts/ExtCMT.csh [cmt-version]
> cd $MYSITEROOT
> python install_project.py -p Gauss -v v25r9 -m select [-c <cmt-version>]
will download all source projects required by Gauss v25r9 and will compile Gauss assuming that all other projects are already compiled.
> cd $MYSITEROOT
> python install_project.py -p Gauss -v v25r9 -m global [-c <cmt-version>]
will download all source projects required by Gauss v25r9 and will compile all of them. but LCGCMT.
> cd $MYSITEROOT
> python install_project.py -p Gauss -v v25r9 -r
will remove all occurences of Gauss v25r9 in html/ , targz/ , lhcb/
> python install_project.py -p LCGCMT -v 46e -r
will remove all occurences of LCGCMT 46e
> python install_project.py -p root -v 5.12.00c -r
will remove all occurences of root 5.12.00c
> python install_project.py -p SEAL -v SEAL_1_4_0 -r
will remove all occurences of SEAL SEAL_1_4_0
A LCG package or LHCb project already installed is never overwritten unless it is previously removed
LCG packages are distributed through a unique LCGCMT tar file, so to get a brand
new version of a LCG package already installed
you should first removed the LCG package/version and the LCGCMT/version it
belongs to and then re-installed the Gaudi/version using this LCGCMT/version.
i.e - you want to get a new version of root 5.12.00c already installed, it belongs to LCGCMT 46e used by Gaudi v18r7
> cd $MYSITEROOT
> python install_project.py -p root -v 5.12.00c -r
> python install_project.py -p LCGCMT -v 46e -r
> python install_project.py -p Gaudi -v v18r7 -b