Installation procedures

This page is obsolete and no longer maintained. The new address is:

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 ]

available project tar files

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