#!/usr/bin/env bash set -x # # CBM package compilation script # protopop@jlab.org, June 2007 # m.al-turany@gsi.de, June 2006 # protopop@jlab.org, June 2006 export SIMPATH=$PWD export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$SIMPATH/tools/Xpm # Error handling functions check=1 #---------------------------------------------------------------- function not_there { pack=$1 file=$2 if [[ -e $file ]] then echo "*** Package $1 is OK ***" return 1 else echo "*** Compiling $1 ................ " return 0 fi } #---------------------------------------------------------------- function untar { pack=$1 tarf=$2 if [[ -d $pack ]] then echo "*** Package $pack already unpacked ***" else echo "*** Unpacking $tarf .............." tar zxf $tarf fi } #---------------------------------------------------------------- function check_success { pack=$1 file=$2 if [[ -e $file ]] then echo "*** $1 compiled successfully ***" return 1 else echo "*** ERROR: $1 could not be created." return 0 fi } #---------------------------------------------------------------- if [ "$check" = "1" ] then # Now start compilations with checks cd $SIMPATH/generators if (not_there "*" $SIMPATH/generators/lib) then mkdir lib fi if (not_there Pythia6 $SIMPATH/generators/Pythia6/libPythia6.so) then untar Pythia6 Pythia6.tar.gz cd Pythia6 . makePythia6.linux check = check_success Pythia6 $SIMPATH/generators/Pythia6/libPythia6.so ln -s $SIMPATH/generators/Pythia6/libPythia6.so $SIMPATH/generators/lib/libPythia6.so fi #check the link if (not_there libPythia6.so $SIMPATH/generators/lib/libPythia6.so) then ln -s $SIMPATH/generators/Pythia6/libPythia6.so $SIMPATH/generators/lib/libPythia6.so fi export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$SIMPATH/generators/lib fi #---------------------------------------------------------------- if [ "$check" = "1" ] then if (not_there Clhep $SIMPATH/cern/clhep/lib/libCLHEP-2.0.3.1.so) then cd $SIMPATH/cern/clhep untar 2.0.3.1/CLHEP clhep-2.0.3.1.tgz ./2.0.3.1/CLHEP/configure --prefix=$PWD make make install check = check_success Clhep $SIMPATH/cern/clhep/lib/libCLHEP-2.0.3.1.so if [ "$check" = "1" ] then export CLHEP_BASE_DIR=$SIMPATH/cern/clhep fi fi fi #---------------------------------------------------------------- if [ "$check" = "1" ] then cd $SIMPATH/transport/ if (not_there Geant4-lib $SIMPATH/transport/geant4/lib/Linux-g++/liblist) then untar geant4 geant4.8.2.gtar.gz ln -s geant4.8.2 geant4 if (not_there env.sh $SIMPATH/transport/geant4/source/env.sh) then cd geant4/source ln -s ../../g4env.sh env.sh fi cd $SIMPATH/transport/geant4/source . env.sh make check = check_success Geant4-lib $SIMPATH/transport/geant4/lib/Linux-g++/liblist else cd geant4/source . env.sh fi cd $SIMPATH/transport/ fi #---------------------------------------------------------------- if [ "$check" = "1" ] then if (not_there Geant4-include $SIMPATH/transport/geant4/include/globals.hh) then cd $SIMPATH/transport/geant4/source make includes check = check_success Geant4-include $SIMPATH/transport/geant4/include/globals.hh fi fi #---------------------------------------------------------------- if [ "$check" = "1" ] then if (not_there ApMon $SIMPATH/tools/monalisa/lib/libapmoncpp.so.2.0.6) then cd $SIMPATH/tools untar ApMon ApMon_cpp-2.2.2.tar.gz cd ApMon_cpp-2.2.2 ./configure --prefix=$SIMPATH/tools/monalisa make make install check = check_success ApMon $SIMPATH/tools/monalisa/lib/libapmoncpp.so.2.0.6 cd $SIMPATH/tools fi fi #---------------------------------------------------------------- if [ "$check" = "1" ] then if (not_there ml-gsoapclient $SIMPATH/tools/monalisa/lib/libmonalisawsclient.so.1.0.0) then cd $SIMPATH/tools untar ml-gsoapclient ml-gsoapclient-1.0.0.tar.gz cd ml-gsoapclient-1.0.0 ./configure --prefix=$SIMPATH/tools/monalisa make make install check = check_success ml-gsoapclient $SIMPATH/tools/monalisa/lib/libmonalisawsclient.so.1.0.0 fi fi #---------------------------------------------------------------- if [ "$check" = "1" ] then export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$SIMPATH/tools/monalisa/lib cd $SIMPATH/tools export ROOTSYS=$PWD/root fi #---------------------------------------------------------------- if [ "$check" = "1" ] then if (not_there root $ROOTSYS/bin/root.exe) then untar root root_v5.14.00.source.tar.gz cd $ROOTSYS cp ../rootconfig.sh . echo "Configuring Root ......................................" . rootconfig.sh make make install check = check_success root $ROOTSYS/bin/root.exe fi export PATH=${PATH}:${ROOTSYS}/bin/ export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${ROOTSYS}/lib/ fi #---------------------------------------------------------------- #check if we have gcc4.1.x, if yes set the flag needed by this compiler if [ "$check" = "1" ] then platform=$(root-config --arch) GCC_MAJOR="$(gcc -dumpversion 2>&1 | cut -d'.' -f1)" GCC_MINOR="$(gcc -dumpversion 2>&1 | cut -d'.' -f2)" export FRIENDFLAG="" if test "$GCC_MAJOR" = "4"; then if test "$GCC_MINOR" != "0"; then export FRIENDFLAG="-ffriend-injection" fi fi cd $SIMPATH/generators fi #---------------------------------------------------------------- if [ "$check" = "1" ] then if (not_there pluto $SIMPATH/generators/pluto/libPluto.so) then untar pluto Pluto.v412.tar.gz cd pluto make check = check_success Pluto $SIMPATH/generators/pluto/libPluto.so if [ "$check" = "1" ] then cd ../lib if (not_there pluto $SIMPATH/generators/lib/libPluto.so) then ln -s ../pluto/libPluto.so libPluto.so ln -s ../pluto/libPluto.a libPluto.a fi fi fi fi #---------------------------------------------------------------- if [ "$check" = "1" ] then if (not_there Geant3 $SIMPATH/transport/geant3/lib/tgt_$platform/libgeant321.so) then cd $SIMPATH/transport untar geant3 geant321.tar.gz cd geant3 make check = check_success Geant3 $SIMPATH/transport/geant3/lib/tgt_$platform/libgeant321.so fi if [ "$check" = "1" ] then export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$SIMPATH/transport/geant3/lib/tgt_$platform/ fi fi #---------------------------------------------------------------- if [ "$check" = "1" ] then export VGM_INSTALL=$SIMPATH/transport/vgm.2.08.04 export VGM_SYSTEM=Linux-g++ if (not_there VGM $VGM_INSTALL/lib/$VGM_SYSTEM/libBaseVGM.so) then cd $SIMPATH/transport untar vgm.2.08.04 vgm.2.08.04.tar.gz cd vgm.2.08.04/packages make check = check_success VGM $VGM_INSTALL/lib/$VGM_SYSTEM/libBaseVGM.so fi if [ "$check" = "1" ] then export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$VGM_INSTALL/lib/$VGM_SYSTEM/ export USE_VGM=1 fi fi #---------------------------------------------------------------- if [ "$check" = "1" ] then if (not_there VGM $SIMPATH/transport/vgm/lib/$VGM_SYSTEM/libBaseVGM.so) then cd $SIMPATH/transport ln -s vgm.2.08.04 vgm check = check_success VGM $SIMPATH/transport/vgm/lib/$VGM_SYSTEM/libBaseVGM.so fi if [ "$check" = "1" ] then export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$SIMPATH/transport/vgm/lib/$VGM_SYSTEM/ fi fi #---------------------------------------------------------------- if [ "$check" = "1" ] then if (not_there Geant4_VMC $SIMPATH/transport/geant4_vmc/lib/tgt_$platform/libgeant4vmc.so) then cd $SIMPATH/transport untar geant4_vmc geant4_vmc.2.0.tar.gz cd geant4_vmc/config if(not_there Geant4_VMC $SIMPATH/transport/geant4_vmc/config/Makefile.$platform) then echo "No Makefile was found for your system, we will try the Linux standard one" ln -s $SIMPATH/transport/geant4_vmc/config/Makefile.linux $SIMPATH/transport/geant4_vmc/config/Makefile.$platform fi cd $SIMPATH/transport/geant4_vmc/source make check = check_success Geant4_VMC $SIMPATH/transport/geant4_vmc/lib/tgt_$platform/libgeant4vmc.so fi if [ "$check" = "1" ] then export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$SIMPATH/transport/geant4_vmc/lib/tgt_$platform/ fi fi #---------------------------------------------------------------- cd $SIMPATH if [ "$check" = "1" ] then echo "*** End without Errors***" exit 0 else echo "*** End with Errors***" exit 1 fi