User Tools

Site Tools


hpc:lcgcmake

This is an old revision of the document!


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: LCGCMake SLC6 Installation

Installing on Cooley@ALCF

  1. Clean Cooley Login (nothing from .softrc.cooley)
  2. 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
  3. Install Dependencies first:
    • mkdir dependencies
    • cd dependencies
    • mkdir install
    1. 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
      • edit BASENAME in Makefile to be /path/to/lcg/dependencies/install
      • 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
      • 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 ..
    2. xslt (bottom of page) (depends on libxml2)
      • git clone git://git.gnome.org/libxslt
      • cd libxslt
      • ./configure –with-python –with-libxml-prefix=/path/to/lcg/dependencies/install –prefix=/path/to/lcg/dependencies/install
      • make -j 10
      • make install
      • cd ..
    3. export environment
      • export PATH=/path/to/lcg/dependencies/install/bin:$PATH
      • export LD_LIBRARY_PATH=/path/to/lcg/dependencies/install/lib:$LD_LIBRARY_PATH
  4. Get LCGCMake repository
    • cd $LCG_PROJECT_PATH
    • mkdir lcgcmake-build
    • mkdir lcgcmake-install
    • 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 296 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}
  5. Now build LCG
    • cd lcgcmake-build
    • cmake -DCMAKE_INSTALL_PREFIX=../lcgcmake-install -DCMAKE_C_COMPILER=$(which gcc) -DCMAKE_CXX_COMPILER=$(which g++) ../lcgcmake
  6. Dealing with the aftermath
    • 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.
    • 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/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.
  7. Create setup environment <file bash setup.sh>

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

hpc/lcgcmake.1440166732.txt.gz · Last modified: 2015/08/21 14:18 by jchilders