User Tools

Site Tools


hpc:lcgcmake

LCGCMake Installation Notes

This page documents my attempts to install the LCG software core on various non-traditional machines.

The basic installation instructions are here for a standard Scientific Linix CERN 6 installation: <html><b><a href=“http://ph-dep-sft.web.cern.ch/document/using-lcgcmake” target=“_blank”>LCGCMake SLC6 Installation </a></b></html>

Installing on Cooley@ALCF

Setup

  • Clean Cooley Login (nothing from .softrc.cooley)
  • Create working directory
    • mkdir /path/to/lcg
    • export $LCG_PROJECT_PATH=/path/to/lcg
    • cd $LCG_PROJECT_PATH
    • soft add +cmake
    • soft add +gcc-4.8.1

Install Dependencies

  • mkdir dependencies
  • cd dependencies
  • mkdir install

procmail

  • wget ftp://ftp.ucsb.edu/pub/mirrors/procmail/procmail-3.22.tar.gz
  • tar zxf procmail-3.22.tar.gz
  • cd procmail-3.22
  • make lockfile CC=$(which gcc) CXX=$(which g++)
    • press enter when prompted
    • this only compiles lockfile because other parts of this package fail, but we don't need them.
  • cd ..
  • mkdir install/bin
  • ln -s $PWD/procmail-3.22/src/lockfile $PWD/install/bin/lockfile

libxml2

  • wget ftp://xmlsoft.org/libxml2/libxml2-2.9.2.tar.gz
  • tar zxf libxml2-2.9.2.tar.gz
  • cd libxml2-2.9.2
  • ./configure --with-python --with-threads --prefix=/path/to/lcg/dependencies/install
  • make -j 10
  • make install
  • cd ..

libxslt

  • xslt (bottom of page) (depends on libxml2)
  • git clone git://git.gnome.org/libxslt
  • cd libxslt
  • ./autogen.sh --with-python --with-libxml-prefix=/path/to/lcg/dependencies/install --prefix=/path/to/lcg/dependencies/install
  • make -j 10
  • make install
  • you may need to manually copy ./xslt-config to the install directory and change it's permissions.
  • cd ..

export environment

  • export PATH=/path/to/lcg/dependencies/install/bin:$PATH
  • export LD_LIBRARY_PATH=/path/to/lcg/dependencies/install/lib:$LD_LIBRARY_PATH

LCGCMake

Get LCGCMake repository

  • cd $LCG_PROJECT_PATH
  • svn co http://svn.cern.ch/guest/lcgsoft/trunk/lcgcmake
  • mkdir lcgcmake-build
  • mkdir lcgcmake-install

Before you build

  • The bits below are summarized in this patch file Cooley Patch File
  • Edit lcgcmake/toolchain.cmake line 2
     set(LCG_VERSION dev2 CACHE STRING "HepTools version (aka LCG configuration)") 

    to

     set(LCG_VERSION 78root6 CACHE STRING "HepTools version (aka LCG configuration)") 
  • You have to force cmake to identify your machine as slc6 because some of the tarballs live on a webserver with slc6 in the name, in the case of Cooley, slc6 gets replaced with linux and the downloads fail since there is no tarball with linux in the name. Edit lcgcmake/cmake/toolchain/heptools-common.cmake around line 75 from
    else()
            execute_process(COMMAND cat /etc/os-release OUTPUT_VARIABLE os_release OUTPUT_STRIP_TRAILING_WHITESPACE)
            if(os_release MATCHES "centos")
              set(os "cc")
              string(REGEX REPLACE ".*VERSION_ID=\"([0-9]+).*" "\\1" osvers "${os_release}")
            else()
              message(WARNING "Unkown OS, assuming 'linux'")
              set(os linux)
              set(osvers)
            endif()
          endif()

    to

     else()
            execute_process(COMMAND cat /etc/os-release OUTPUT_VARIABLE os_release OUTPUT_STRIP_TRAILING_WHITESPACE)
            if(os_release MATCHES "centos")
              set(os "cc")
              string(REGEX REPLACE ".*VERSION_ID=\"([0-9]+).*" "\\1" osvers "${os_release}")
            else()
              message(WARNING "Unkown OS, assuming 'slc6'")
              set(os "slc")
              set(osvers "6")
            endif()
          endif()
  • Edit lcgcmake/projects/CMakeLists.txt line 244 in CORAL package from
     SVN_REPOSITORY=http://svn.cern.ch/guest/lcgcoral/coral/tags/${CORAL_native_version} --quiet 

    to

     SVN_REPOSITORY=http://svn.cern.ch/guest/lcgcoral/coral/tags/CORAL_${CORAL_native_version} --quiet 
  • Edit lcgcmake/externals/CMakeLists.txt lines 297 - 302 (or so) from
    #---Davix--------------------------------------------------------------------------------------------
    LCGPackage_Add(
      Davix
      URL http://grid-deployment.web.cern.ch/grid-deployment/dms/lcgutil/tar/davix/davix-<NATIVE_VERSION>.tar.gz
      CONFIGURE_COMMAND ${CMAKE_COMMAND} -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
                                           -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
                                           -DBOOST_ROOT:PATHNAME=${Boost_home}
                                           -DBOOST_INCLUDEDIR=${Boost_home}/include
                                           -DBOOST_LIBRARYDIR=${Boost_home}/lib
                                           -DBoost_NO_BOOST_CMAKE=True
                                           <SOURCE_DIR>
      DEPENDS Boost
    )

    to

    #---Davix--------------------------------------------------------------------------------------------
    LCGPackage_Add(
      Davix
      URL http://grid-deployment.web.cern.ch/grid-deployment/dms/lcgutil/tar/davix/davix-<NATIVE_VERSION>.tar.gz
      CONFIGURE_COMMAND ${CMAKE_COMMAND} -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
                                           -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
                                           -DBOOST_ROOT:PATHNAME=${Boost_home}
                                           -DBoost_INCLUDE_DIR:PATH=${Boost_home}/include/boost-1_55
                                           -DBoost_LIBRARY_DIR_DEBUG:PATH=${Boost_home}/lib
                                           -DBoost_LIBRARY_DIR_RELEASE:PATH=${Boost_home}/lib
                                           -DBoost_NO_BOOST_CMAKE:BOOL=True
                                           -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
                                           -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
                                           <SOURCE_DIR>
      DEPENDS Boost
    )
  • Edit lcgcmake/projects/CMakeLists.txt and insert around line 99 to the ROOT package config
    -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
    -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
  • Edit lcgcmake/projects/CMakeLists.txt around line 186 in the RELAX package and add the lines
    -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
    -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}

    .

  • Edit lcgcmake/generators/CMakeLists.txt around line 1679 in the crmc package and add the lines
    -DCMAKE_MODULE_PATH=${CMAKE_SOURCE_DIR}/cmake/modules
    -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
    -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
  • Edit lcgcmake/externals/CMakeLists.txt around line ? in the hepmc3 package and add the lines
    -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
    -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}

    .

  • Edit lcgcmake/externals/CMakeLists.txt around line 842 in the igprof package and comment out the -Wno-error=unused-result.
  • Edit lcgcmake/externals/CMakeLists.txt line 339 in the hepmc3 package from
    set(hepmc3_source_command GIT_REPOSITORY http://git.cern.ch/cernpub/hepmc3) 

    to

    set(hepmc3_source_command GIT_REPOSITORY http://git.cern.ch/pub/hepmc3) 

Building LCG

  • cd lcgcmake-build
  • cmake -DCMAKE_INSTALL_PREFIX=../lcgcmake-install -DCMAKE_C_COMPILER=$(which gcc) -DCMAKE_CXX_COMPILER=$(which g++) ../lcgcmake

When Build Fails

When a build fails, look at this list for fixes, fix, then continue with make -j 10.

  • After the pythia8 packages download and fail to build, the Makefile's must be edited, the files lcgcmake-build/generators/pythia8-201/src/pythia8/201/Makefile have $(CXX_SONAME),$(notdir $@) which must be changed to -shared.
    • sed 's/$(CXX_SONAME),$(notdir\ $@)/-shared/g' generators/pythia8-201/src/pythia8/201/Makefile > generators/pythia8-201/src/pythia8/201/Makefile.tmp
  • After evtgen package downloads and fails to build, the Makefile must be edited, the file lcgcmake-build/generators/evtgen-1.2.0/src/evtgen/1.2.0/src/Makefile have $(shell find … ) commands inside, Add -not -path '*/\.*' to the end of these finds. This is to exclude the many stupid hidden files ._<fildname> that someone must have commit to the repo from their MAC.
  • After ROOT 6 downloads and fails the build, you can make the following edits to fix the ODBC files. Add to the files lcgcmake-build/projects/ROOT-6.02.12/src/ROOT/6.02.12/sql/odbc/inc/TODBC*.h a #include<sqlcli.h> just under the #include<sql.h> at the top of the file. Add to the files lcgcmake-build/projects/ROOT-6.02.12/src/ROOT/6.02.12/sql/odbc/src/TODBCServer.cxx and lcgcmake-build/projects/ROOT-6.02.12/src/ROOT/6.02.12/sql/odbc/src/TODBCStatement.cxx a #include<sqlcli1.h> at the top of the files.
  • Create setup environment <file bash setup.sh>

#!/usr/bin/env bash soft add +cmake soft add +gcc-4.8.1

hpc/lcgcmake.txt · Last modified: 2015/08/24 19:29 by jchilders