#!/bin/bash # ## semi-automated script installing FairSoft, FairRoot (+LMD patch) and CbmRoot ## for the CERN Nov. 2015 CBM-TOF beamtime # # 22.11.2015 - initial version based on autoinstall_framework.sh # by Pierre-Alain Loizeau # 17.07.2015 - introduce option to compile dev settings # 02.06.2015 - introduce parameters for individual package selection # 13.03.2015 - initial version # by David Emschermann #------------------------------------- # usage: # mkdir -p ${HOME}/Software/cern15nov # svn co https://subversion.gsi.de/cbmsoft/cbmroot/development/tofcern15nov/autoinstall ${HOME}/Software/cern15nov/ # cd ${HOME}/Software/cern15nov # autoinstall/autoinstall_tofcern15nov.sh ## or for the duration of the beamtime # autoinstall/autoinstall_tofcern15nov.sh dev #------------------------------------- # Ressources consumption: around 12G, of which 7-9G are due to the fairsoft sources # Contact P-A Loizeau if needed to get rid of these extra things #------------------------------------- # This version of the install script is made to install # EVERYTHING in sub-folders of the current one export STARTDIR=`pwd` mkdir -p fairsoft mkdir -p fairroot mkdir -p cbmroot #------------------------------------- # put your desired variants here: export FSOFTDEV=mar15p2 export FROOTDEV=v-15.07a export CROOTDEV=development/tofcern15nov export CRDIRDEV=tofcern15nov export FSOFTPRO=nov15p1 export FROOTPRO=v-15.07b export CROOTPRO=trunk export CRDIRPRO=trunk export NUMOFCPU=`cat /proc/cpuinfo | grep processor | wc -l` #------------------------------------- # set default version to pro export FSOFTVER=$FSOFTPRO export FROOTVER=$FROOTPRO export CROOTVER=$CROOTPRO export CROOTDIR=$CRDIRPRO # check if we want to run with GSI compiler if [ $# -ge 1 ]; then if [ "$1" == "gsi" ]; then # use a different compiler from GSI module use /cvmfs/it.gsi.de/modulefiles/ module load compiler/gcc/4.9.2 export CXX=g++ shift fi fi # check if we want to run with dev if [ $# -ge 1 ]; then if [ "$1" == "dev" ]; then echo "DEV version for this script is just the dev branch of cbmroot" export FSOFTVER=$FSOFTDEV export FROOTVER=$FROOTDEV export CROOTVER=$CROOTDEV export CROOTDIR=$CRDIRDEV shift fi fi echo FSOFTVER: $FSOFTVER echo FROOTVER: $FROOTVER export CBMSRCDIR=$STARTDIR/cbmroot/$CROOTDIR # install everything by default SETUP_FAIRSOFT=1 SETUP_FAIRROOT=1 SETUP_CBMROOT=1 echo number of parameters: $# # handle parameters, if supplied if [ $# -eq 1 ]; then SETUP_FAIRSOFT=$1 SETUP_FAIRROOT=0 SETUP_CBMROOT=0 fi # handle parameters, if supplied if [ $# -eq 2 ]; then SETUP_FAIRSOFT=$1 SETUP_FAIRROOT=$2 SETUP_CBMROOT=0 fi # handle parameters, if supplied if [ $# -eq 3 ]; then SETUP_FAIRSOFT=$1 SETUP_FAIRROOT=$2 SETUP_CBMROOT=$3 fi echo "Install Fairsoft:" $SETUP_FAIRSOFT echo "Install Fairroot:" $SETUP_FAIRROOT echo "Install Cbmroot :" $SETUP_CBMROOT echo "Version Fairsoft:" $FSOFTVER echo "Version Fairroot:" $FROOTVER echo "Version Cbmroot :" $CROOTVER echo "Current dir :" $STARTDIR echo "Cbmroot dir :" $CBMSRCDIR echo # exit #SETUP_FAIRSOFT=0 #SETUP_FAIRROOT=0 #SETUP_CBMROOT=0 # ## FairSoft # if [ $SETUP_FAIRSOFT -ge 1 ]; then echo "Setting up Fairsoft ..." cd $STARTDIR git clone https://github.com/FairRootGroup/FairSoft $STARTDIR/fairsoft/$FSOFTVER cd $STARTDIR/fairsoft/$FSOFTVER git tag -l git checkout -b $FSOFTVER $FSOFTVER #emacs -nw automatic.conf #./configure.sh automatic.conf sed s/compiler=/compiler=gcc/ automatic.conf > automatic_gcc.conf # sed s/build_root6=no/build_root6=yes/ automatic.conf > automatic_root6.conf # sed s/compiler=/compiler=gcc/ automatic_root6.conf > automatic_gcc.conf ./configure.sh automatic_gcc.conf cd $STARTDIR echo done installing FairSoft fi # ## FairRoot # if [ $SETUP_FAIRROOT -ge 1 ]; then echo "Setting up Fairroot ..." # set SIMPATH cd $STARTDIR echo "SIMPATH before: $SIMPATH" cd fairsoft/$FSOFTVER/installation/ export SIMPATH=`pwd` echo "SIMPATH now : $SIMPATH" cd $STARTDIR cd $STARTDIR git clone https://github.com/FairRootGroup/FairRoot.git $STARTDIR/fairroot/src_$FROOTVER curl https://cbm-wiki.gsi.de/foswiki/pub/TOF/Trunksoftware/lmdTof.patch -o $STARTDIR/fairroot/lmdTof.patch curl https://cbm-wiki.gsi.de/foswiki/pub/TOF/Trunksoftware/fairroot_v1507a_source.patch -o $STARTDIR/fairroot/fairroot_v1507a_source.patch curl https://cbm-wiki.gsi.de/foswiki/pub/TOF/Trunksoftware/fairroot_v1507a_fatalreset.patch -o $STARTDIR/fairroot/fairroot_v1507a_fatalreset.patch curl https://cbm-wiki.gsi.de/foswiki/pub/TOF/Trunksoftware/fairroot_v1507a_streamapi.patch -o $STARTDIR/fairroot/fairroot_v1507a_streamapi.patch cd $STARTDIR/fairroot/src_$FROOTVER git tag -l git checkout -b $FROOTVER $FROOTVER # check if we want to run with dev, as patches are made only for v15-07a if [ $# -ge 1 ]; then if [ "$1" == "dev" ]; then # Apply patch for buggy LMD header with TOF DABC git apply $STARTDIR/fairroot/lmdTof.patch # Apply changes from "1 parent 8de468b commit 0c0bd037c201d3496f9d5d7c133874382e885677 @kresan kresan committed on Jan 22" to FairMbsStreamSource # Apply changes from "1 parent 8de468b commit 0c0bd037c201d3496f9d5d7c133874382e885677 @kresan kresan committed on Jan 22" to FairRemoteSource # Change printout in MRevBuffer to FairLogger and make most of them DEBUG git apply $STARTDIR/fairroot/fairroot_v1507a_source.patch # Apply patch for console text format restoring after a FATAL error git apply $STARTDIR/fairroot/fairroot_v1507a_fatalreset.patch # Apply patch to allow user custom port for connection to a stream server git apply $STARTDIR/fairroot/fairroot_v1507a_streamapi.patch fi fi mkdir build cd build cmake .. -DCMAKE_INSTALL_PREFIX=$STARTDIR/fairroot/$FROOTVER-fairsoft_$FSOFTVER-tofpatched nice make install -j$NUMOFCPU cd $STARTDIR echo done installing FairRoot fi # ## CbmRoot # if [ $SETUP_CBMROOT -ge 1 ]; then echo "Setting up Cbmroot ..." # set SIMPATH cd $STARTDIR echo "SIMPATH before: $SIMPATH" cd $STARTDIR/fairsoft/$FSOFTVER/installation/ export SIMPATH=`pwd` echo "SIMPATH now : $SIMPATH" cd $STARTDIR # set FAIRROOTPATH cd $STARTDIR cd $STARTDIR/fairroot/$FROOTVER-fairsoft_$FSOFTVER-tofpatched export FAIRROOTPATH=`pwd` echo "FAIRROOTPATH: $FAIRROOTPATH" cd $STARTDIR cd $STARTDIR if [ -d fieldmaps ]; then svn up fieldmaps else svn co https://subversion.gsi.de/cbmsoft/cbmroot/fieldmaps $STARTDIR/fieldmaps fi mkdir -p $CBMSRCDIR svn co https://subversion.gsi.de/cbmsoft/cbmroot/$CROOTVER $CBMSRCDIR/src cd $CBMSRCDIR mkdir build cd build cmake ../src nice make -j$NUMOFCPU cd .. cd input ln -s $STARTDIR/fieldmaps/* . cd $STARTDIR echo done installing CbmRoot echo echo "source $CBMSRCDIR/build/config.sh" echo "export SIMPATH=$SIMPATH" echo "export FAIRROOTPATH=$FAIRROOTPATH" fi ##################################################################################### #####################################################################################