SFT

From PDP/Grid Wiki
Jump to navigationJump to search

The CERN SFT group maintains a repository of all sorts of software. The PDP group has yet to explore all the options.


Setting up a C/C++ compiler

One question we are frequently asked is, "how do I I get gcc <instead version here> installed"? SFT can do this for you. SFT is accessible via the CVMFS service. Check to see if you have CVMFS and if SFT is configured:

stbc-i2:~> ls /cvmfs/atlas.cern.ch
repo
stbc-i2:~> ls /cvmfs/sft.cern.ch  
lcg

If you don't get the same output, contact the helpdesk. It should work on newer desktop machines and on all stoomboot machines (both batch and interactive).

To set up the C compiler, look here to find the releases you could use:

stbc-i2:~> ls -ld /cvmfs/sft.cern.ch/lcg/releases/LCG_*
drwxr-xr-x. 67 cvmfs cvmfs   7 Jul  6 21:04 /cvmfs/sft.cern.ch/lcg/releases/LCG_78root6
drwxr-xr-x. 67 cvmfs cvmfs  90 Jul 16 17:23 /cvmfs/sft.cern.ch/lcg/releases/LCG_79
drwxr-xr-x. 71 cvmfs cvmfs 104 Oct 20 03:59 /cvmfs/sft.cern.ch/lcg/releases/LCG_80

The newest release of the SFT suite is hence LCG_80 right now, you will probably find a newer one when you run it. Pick the newest one.

stbc-i2:~> ls /cvmfs/sft.cern.ch/lcg/releases/LCG_80/gcc/                            
4.8.4  4.9.3

These are the two gcc releases available. Suppose you want 4.8.4. Set it up with the command

source /cvmfs/sft.cern.ch/lcg/releases/LCG_80/gcc/4.8.4/x86_64-slc6/setup.sh 
stbc-i2:~> gcc --version
gcc (GCC) 4.8.4

At this point you are ready to use gcc 4.8.4.

Setting up Geant4

As of this writing, Geant4 10.01.p02 is available in SFT. Scripts are available in

stbc-i2:~> ls /cvmfs/sft.cern.ch/lcg/releases/LCG_80/Geant4/10.01.p02/x86_64-slc6-gcc48-opt/bin/      
geant4-config  geant4.csh  geant4.sh

geant4.(c)sh appear to make sure that all the needed libraries are in your path before you run a program requiring Geant4 libraries. geant4-config appears to print out the flags needed to compile and link with those libraries:

/cvmfs/sft.cern.ch/lcg/releases/LCG_80/Geant4/10.01.p02/x86_64-slc6-gcc48-opt/bin/geant4-config --cflags
-DG4INTY_USE_XT -DG4VIS_USE_OPENGL -DG4UI_USE_TCSH -DG4INTY_USE_QT -DG4UI_USE_QT -DG4VIS_USE_OPENGLQT
-I/cvmfs/sft.cern.ch/lcg/releases/qt/4.8.4-f642c/x86_64-slc6-gcc48-opt/include/QtCore
-I/cvmfs/sft.cern.ch/lcg/releases/qt/4.8.4-f642c/x86_64-slc6-gcc48-opt/include/QtGui
-I/cvmfs/sft.cern.ch/lcg/releases/qt/4.8.4-f642c/x86_64-slc6-gcc48-opt/include/QtOpenGL -DG4UI_USE_XM
-DG4VIS_USE_OPENGLXM -DG4VIS_USE_RAYTRACERX -DG4VIS_USE_OPENGLX -W -Wall -pedantic -Wno-non-virtual-dtor
-Wno-long-long -Wwrite-strings -Wpointer-arith -Woverloaded-virtual -Wno-variadic-macros -Wshadow -pipe -pthread
-ftls-model=initial-exec -std=c++11 -DG4USE_STD11 -DG4MULTITHREADED
-I/cvmfs/sft.cern.ch/lcg/releases/LCG_80/Geant4/10.01.p02/x86_64-slc6-gcc48-opt/bin/../include/Geant4
-I/cvmfs/sft.cern.ch/lcg/releases/XercesC/3.1.1p1-8ccd5/x86_64-slc6-gcc48-opt/include

Make sure you use the matching gcc version when you do this ... if you've set up gcc 4.8.4 when this Geant (with x86_64-slc6-gcc48-opt) is the right one.