Project

General

Profile

Build at CERN with a compiler stub

Art and its associated packages are supported for gcc 4.7.1 or greater.
We routinely build our own distribution of gcc 4.7.1.
However, we also support building a "product stub" which will point to an appropriate compiler already installed on your system.

This is essentially a log file of the steps needed to build art on lxplus6.cern.ch with a gcc product stub.
My (very temporary) products directory was /tmp/garren/products. You will need 8-15 GB in some permanent location.

This set of example instructions builds for prof. If you want the debug build, use "debug" instead of "prof". Note that the debug build uses more disk space.

First, build ups, upd, cmake, and a gcc product stub

Check before going to the next step

Read the log files in /tmp/garren/products/art_externals/v0_06_03 and have a look with ups.

  • source /tmp/garren/products/setup
  • ups list -aK+
    "cetbuildtools" "v3_02_02" "NULL" "" "" 
    "cetbuildtools" "v3_03_00" "NULL" "" "" 
    "cetbuildtools" "v3_03_05" "NULL" "" "" 
    "cetpkgsupport" "v1_01_00" "NULL" "" "current" 
    "cmake" "v2_8_8" "Linux64bit+2.6-2.12" "" "current" 
    "gcc" "v4_7_1" "Linux64bit+2.6-2.12" "" "" 
    "upd" "v4_7_5" "NULL" "" "current" 
    "ups" "v4_9_7" "Linux64bit+2.6-2.12" "" "current" 
    
  • The download script installed a gcc product stub that uses gcc 4.7.2 for x86_64-slc6
  • setup gcc v4_7_1
  • now compile a simple C or C++ test
  • if this fails, please check $GCC_DIR/README and make the appropriate changes

Build the core external products

  • cd /tmp/garren/products/art_externals/v0_06_03
  • ./buildCore.sh /tmp/garren/products prof
    OK - building with e2:prof
    begin build of boost v1_53_0 in the background
    begin build of python v2_7_3 in the background
    begin build of fftw v3_3_2 in the background
    begin build of cppunit v1_12_1
    begin build of libsigcpp v2_2_10
    begin build of gccxml v0_9_20120702
    begin build of clhep v2_1_3_1
    begin build of sqlite v3_07_13_00
    begin build of libxml2 v2_8_0
    begin build of tbb v4_1_2
    One of the builds may still be running in the background.
    When that job finishes, build root 
    NOTE: mu2e and NOvA both require custom builds of root 
    
  • edit /tmp/garren/products/python/v2_7_3/Linux64bit+2.6-2.12-gcc47/lib/python2.7/config/Makefile
  • change /tmp/garren/products/python/v2_7_3/Linux64bit+2.6-2.12-gcc47 to $(PYTHONHOME)
  • change /tmp/garren/products/python/v2_7_3/source to $(PYTHON_DIR)/source
  • if you aren't going to move python, then you don't need to do this
  • check the log files
  • ups list -aK+ (output should look like this)
    "boost" "v1_53_0" "Linux64bit+2.6-2.12" "e2:prof" "" 
    "cetbuildtools" "v3_02_02" "NULL" "" "" 
    "cetbuildtools" "v3_03_00" "NULL" "" "" 
    "cetbuildtools" "v3_03_05" "NULL" "" "" 
    "cetpkgsupport" "v1_01_00" "NULL" "" "current" 
    "clhep" "v2_1_3_1" "Linux64bit+2.6-2.12" "e2:prof" "" 
    "cmake" "v2_8_8" "Linux64bit+2.6-2.12" "" "current" 
    "cppunit" "v1_12_1" "Linux64bit+2.6-2.12" "e2:prof" "" 
    "fftw" "v3_3_2" "Linux64bit+2.6-2.12" "gcc47:prof" "" 
    "gcc" "v4_7_1" "Linux64bit+2.6-2.12" "" "" 
    "gccxml" "v0_9_20120702" "Linux64bit+2.6-2.12" "gcc47" "" 
    "libsigcpp" "v2_2_10" "Linux64bit+2.6-2.12" "e2:prof" "" 
    "libxml2" "v2_8_0" "Linux64bit+2.6-2.12" "gcc47:prof" "" 
    "python" "v2_7_3" "Linux64bit+2.6-2.12" "gcc47" "" 
    "sqlite" "v3_07_13_00" "Linux64bit+2.6-2.12" "gcc47:prof" "" 
    "tbb" "v4_1_2" "Linux64bit+2.6-2.12" "e2:prof" "" 
    "upd" "v4_7_5" "NULL" "" "current" 
    "ups" "v4_9_7" "Linux64bit+2.6-2.12" "" "current" 
    

Build root

  • source /tmp/garren/products/setup
  • cd /tmp/garren/products/root/v5_34_05/
  • nohup ./buildRoot.sh e2 prof >& log.buildRoot.e2.prof &
  • check the log file
  • ups list -aK+ root
    "root" "v5_34_05" "Linux64bit+2.6-2.12" "e2:prof" "" 
    

Build art support packages

  • source /tmp/garren/products/setup
  • cd /tmp/garren/products/art_suite/v1_03_08/
  • nohup ./buildCET.sh prof e2 >& log.buildCET.e2.prof &

Build art

  • source /tmp/garren/products/setup
  • cd /tmp/garren/products/art_suite/v1_03_08/
  • nohup ./buildArt.sh e2 prof >& log.buildArt.e2.prof &
  • ups list -aK+
    "art" "v1_03_08" "Linux64bit+2.6-2.12" "e2:prof" "" 
    "boost" "v1_53_0" "Linux64bit+2.6-2.12" "e2:prof" "" 
    "cetbuildtools" "v3_02_02" "NULL" "" "" 
    "cetbuildtools" "v3_03_00" "NULL" "" "" 
    "cetbuildtools" "v3_03_05" "NULL" "" "" 
    "cetlib" "v1_03_15" "Linux64bit+2.6-2.12" "e2:prof" "" 
    "cetpkgsupport" "v1_01_00" "NULL" "" "current" 
    "clhep" "v2_1_3_1" "Linux64bit+2.6-2.12" "e2:prof" "" 
    "cmake" "v2_8_8" "Linux64bit+2.6-2.12" "" "current" 
    "cpp0x" "v1_03_15" "Linux64bit+2.6-2.12" "e2:prof" "" 
    "cppunit" "v1_12_1" "Linux64bit+2.6-2.12" "e2:prof" "" 
    "fftw" "v3_3_2" "Linux64bit+2.6-2.12" "gcc47:prof" "" 
    "fhiclcpp" "v2_17_02" "Linux64bit+2.6-2.12" "e2:prof" "" 
    "gcc" "v4_7_1" "Linux64bit+2.6-2.12" "" "" 
    "gccxml" "v0_9_20120702" "Linux64bit+2.6-2.12" "gcc47" "" 
    "libsigcpp" "v2_2_10" "Linux64bit+2.6-2.12" "e2:prof" "" 
    "libxml2" "v2_8_0" "Linux64bit+2.6-2.12" "gcc47:prof" "" 
    "messagefacility" "v1_10_16" "Linux64bit+2.6-2.12" "e2:prof" "" 
    "python" "v2_7_3" "Linux64bit+2.6-2.12" "gcc47" "" 
    "root" "v5_34_05" "Linux64bit+2.6-2.12" "e2:prof" "" 
    "sqlite" "v3_07_13_00" "Linux64bit+2.6-2.12" "gcc47:prof" "" 
    "tbb" "v4_1_2" "Linux64bit+2.6-2.12" "e2:prof" "" 
    "upd" "v4_7_5" "NULL" "" "current" 
    "ups" "v4_9_7" "Linux64bit+2.6-2.12" "" "current" 
    

Useful ups commands

setup and unsetup

  • setup and unsetup are the basic ups command
  • setup <product name> <product version>
  • setup <product name> <product version> -q <product qualifier>
  • unsetup <product name>

ups list

  • Use ups list to see which products are available
  • ups list -aK+
  • ups list -aK+ <product name>

ups active

  • Use ups active to see which ups products are currently setup
  • setup art v1_03_08 -q e2:prof
  • ups active
    Active ups products:
    art               v1_03_08        -f Linux64bit+2.6-2.12  -q e2:prof        
    boost             v1_53_0         -f Linux64bit+2.6-2.12  -q e2:prof        
    cetlib            v1_03_15        -f Linux64bit+2.6-2.12  -q e2:prof        
    cetpkgsupport     v1_01_00        -f NULL                
    clhep             v2_1_3_1        -f Linux64bit+2.6-2.12  -q e2:prof        
    cmake             v2_8_8          -f Linux64bit+2.6-2.12 
    cpp0x             v1_03_15        -f Linux64bit+2.6-2.12  -q e2:prof        
    cppunit           v1_12_1         -f Linux64bit+2.6-2.12  -q e2:prof        
    fftw              v3_3_2          -f Linux64bit+2.6-2.12  -q gcc47:prof     
    fhiclcpp          v2_17_02        -f Linux64bit+2.6-2.12  -q e2:prof        
    gcc               v4_7_1          -f Linux64bit+2.6-2.12 
    gccxml            v0_9_20120702   -f Linux64bit+2.6-2.12  -q gcc47          
    libsigcpp         v2_2_10         -f Linux64bit+2.6-2.12  -q e2:prof        
    libxml2           v2_8_0          -f Linux64bit+2.6-2.12  -q gcc47:prof     
    messagefacility   v1_10_16        -f Linux64bit+2.6-2.12  -q e2:prof        
    python            v2_7_3          -f Linux64bit+2.6-2.12  -q gcc47          
    root              v5_34_05        -f Linux64bit+2.6-2.12  -q e2:prof        
    sqlite            v3_07_13_00     -f Linux64bit+2.6-2.12  -q gcc47:prof     
    tbb               v4_1_2          -f Linux64bit+2.6-2.12  -q e2:prof        
    ups               v4_9_7          -f Linux64bit+2.6-2.12 
    
  • unsetup art
  • ups active
    Active ups products:
    ups               v4_9_7          -f Linux64bit+2.6-2.12 
    

ups depend

  • Use ups depend to see which other products are required by any product
  • ups depend root v5_34_05 -q e2:prof
    root v5_34_05 -f Linux64bit+2.6-2.12 -z /tmp/garren/products -q e2:prof
    |__fftw v3_3_2 -f Linux64bit+2.6-2.12 -z /tmp/garren/products -q gcc47:prof
    |  |__gcc v4_7_1 -f Linux64bit+2.6-2.12 -z /tmp/garren/products
    |__libxml2 v2_8_0 -f Linux64bit+2.6-2.12 -z /tmp/garren/products -q gcc47:prof
    |__python v2_7_3 -f Linux64bit+2.6-2.12 -z /tmp/garren/products -q gcc47
    
  • ups depend art v1_03_08 -q e2:prof
    art v1_03_08 -f Linux64bit+2.6-2.12 -z /tmp/garren/products -q e2:prof
    |__cetpkgsupport v1_01_00 -f NULL -z /tmp/garren/products -g current
    |__messagefacility v1_10_16 -f Linux64bit+2.6-2.12 -z /tmp/garren/products -q e2:prof
    |  |__fhiclcpp v2_17_02 -f Linux64bit+2.6-2.12 -z /tmp/garren/products -q e2:prof
    |     |__cetlib v1_03_15 -f Linux64bit+2.6-2.12 -z /tmp/garren/products -q e2:prof
    |        |__cpp0x v1_03_15 -f Linux64bit+2.6-2.12 -z /tmp/garren/products -q e2:prof
    |           |__boost v1_53_0 -f Linux64bit+2.6-2.12 -z /tmp/garren/products -q e2:prof
    |              |__gcc v4_7_1 -f Linux64bit+2.6-2.12 -z /tmp/garren/products
    |__root v5_34_05 -f Linux64bit+2.6-2.12 -z /tmp/garren/products -q e2:prof
    |  |__fftw v3_3_2 -f Linux64bit+2.6-2.12 -z /tmp/garren/products -q gcc47:prof
    |  |__libxml2 v2_8_0 -f Linux64bit+2.6-2.12 -z /tmp/garren/products -q gcc47:prof
    |  |__python v2_7_3 -f Linux64bit+2.6-2.12 -z /tmp/garren/products -q gcc47
    |__clhep v2_1_3_1 -f Linux64bit+2.6-2.12 -z /tmp/garren/products -q e2:prof
    |__cppunit v1_12_1 -f Linux64bit+2.6-2.12 -z /tmp/garren/products -q e2:prof
    |__libsigcpp v2_2_10 -f Linux64bit+2.6-2.12 -z /tmp/garren/products -q e2:prof
    |__gccxml v0_9_20120702 -f Linux64bit+2.6-2.12 -z /tmp/garren/products -q gcc47
    |  |__cmake v2_8_8 -f Linux64bit+2.6-2.12 -z /tmp/garren/products -g current
    |__sqlite v3_07_13_00 -f Linux64bit+2.6-2.12 -z /tmp/garren/products -q gcc47:prof
    |__tbb v4_1_2 -f Linux64bit+2.6-2.12 -z /tmp/garren/products -q e2:prof