From f7806f66c230de66297a0d81c4194dcf3d544079 Mon Sep 17 00:00:00 2001
From: Marko Petric <marko.petric@cern.ch>
Date: Tue, 8 Nov 2016 14:44:40 +0100
Subject: [PATCH] Migrate CI to GCC 6.2 and LLVM 3.9

---
 .dd4hep-ci.d/init_x86_64.sh | 120 ++++++++++++++++++++++++++++++++++++
 .gitlab-ci.yml              |  41 ++++++------
 2 files changed, 139 insertions(+), 22 deletions(-)
 create mode 100644 .dd4hep-ci.d/init_x86_64.sh

diff --git a/.dd4hep-ci.d/init_x86_64.sh b/.dd4hep-ci.d/init_x86_64.sh
new file mode 100644
index 000000000..f70c393f0
--- /dev/null
+++ b/.dd4hep-ci.d/init_x86_64.sh
@@ -0,0 +1,120 @@
+#!/bin/bash
+
+#Determine which OS you are using
+if [ "$( cat /etc/*-release | grep Scientific )" ]; then
+    OS=slc6
+elif [ "$( cat /etc/*-release | grep CentOS )" ]; then
+    OS=centos7
+else
+    echo "UNKNOWN OS"
+    exit 1
+fi
+
+#Determine is you have CVMFS installed
+if [ ! -d "/cvmfs" ]; then
+    echo "No CVMFS detected, please install it."
+    exit 1
+fi
+
+if [ ! -d "/cvmfs/clicdp.cern.ch" ]; then
+    echo "No clicdp CVMFS repository detected, please add it."
+    exit 1
+fi
+
+
+#Determine which compiler to use
+if [ -z ${COMPILER_TYPE} ]; then
+    COMPILER_TYPE="gcc"
+fi
+if [ ${COMPILER_TYPE} == "gcc" ]; then
+    COMPILER_VERSION="gcc62"
+fi
+if [ ${COMPILER_TYPE} == "llvm" ]; then
+    COMPILER_VERSION="llvm39"
+fi
+
+
+#Choose build type
+if [ -z ${BUILD_TYPE} ]; then
+    BUILD_TYPE=opt
+fi
+
+
+# General variables
+CLICREPO=/cvmfs/clicdp.cern.ch
+BUILD_FLAVOUR=x86_64-${OS}-${COMPILER_VERSION}-${BUILD_TYPE}
+
+#--------------------------------------------------------------------------------
+#     Compiler
+#--------------------------------------------------------------------------------
+
+if [ ${COMPILER_TYPE} == "gcc" ]; then
+    source ${CLICREPO}/compilers/gcc/6.2.0/x86_64-${OS}/setup.sh
+else
+    source ${CLICREPO}/compilers/llvm/3.9.0/x86_64-${OS}/setup.sh
+fi
+
+#--------------------------------------------------------------------------------
+#     CMake
+#--------------------------------------------------------------------------------
+
+export CMAKE_HOME=${CLICREPO}/software/CMake/3.6.2/${BUILD_FLAVOUR}
+export PATH=${CMAKE_HOME}/bin:$PATH
+
+#--------------------------------------------------------------------------------
+#     Python
+#--------------------------------------------------------------------------------
+
+export PYTHONDIR=${CLICREPO}/software/Python/2.7.12/${BUILD_FLAVOUR}
+export PATH=${PYTHONDIR}/bin:$PATH
+export LD_LIBRARY_PATH=${PYTHONDIR}/lib:${LD_LIBRARY_PATH}
+
+#--------------------------------------------------------------------------------
+#     ROOT
+#--------------------------------------------------------------------------------
+
+export ROOTSYS=${CLICREPO}/software/ROOT/6.08.00/${BUILD_FLAVOUR}
+export PYTHONPATH="$ROOTSYS/lib:$PYTHONPATH"
+export PATH="$ROOTSYS/bin:$PATH"
+export LD_LIBRARY_PATH="$ROOTSYS/lib:$LD_LIBRARY_PATH"
+
+#--------------------------------------------------------------------------------
+#     XercesC
+#--------------------------------------------------------------------------------
+
+export XercesC_HOME=${CLICREPO}/software/Xerces-C/3.1.4/${BUILD_FLAVOUR}
+export PATH="$XercesC_HOME/bin:$PATH"
+export LD_LIBRARY_PATH="$XercesC_HOME/lib:$LD_LIBRARY_PATH"
+
+
+#--------------------------------------------------------------------------------
+#     Geant4
+#--------------------------------------------------------------------------------
+
+export G4INSTALL=${CLICREPO}/software/Geant4/10.02.p02/${BUILD_FLAVOUR}
+export G4ENV_INIT="${G4INSTALL}/bin/geant4.sh"
+export G4SYSTEM="Linux-g++"
+
+
+#--------------------------------------------------------------------------------
+#     LCIO
+#--------------------------------------------------------------------------------
+export LCIO=${CLICREPO}/software/LCIO/2.7.3/${BUILD_FLAVOUR}
+export PYTHONPATH=${LCIO}/python
+export PATH=${LCIO}/bin:$PATH
+export LD_LIBRARY_PATH="$LCIO/lib:$LD_LIBRARY_PATH"
+
+
+#--------------------------------------------------------------------------------
+#     Boost
+#--------------------------------------------------------------------------------
+
+export BOOST_ROOT=${CLICREPO}/software/Boost/1.62.0/${BUILD_FLAVOUR}
+export LD_LIBRARY_PATH="${BOOST_ROOT}/lib:$LD_LIBRARY_PATH"
+
+#--------------------------------------------------------------------------------
+#     Ninja
+#--------------------------------------------------------------------------------
+
+export Ninja_HOME=${CLICREPO}/software/Ninja/1.7.1/${BUILD_FLAVOUR}
+export PATH="$Ninja_HOME:$PATH"
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index c270d77b0..b461c8d85 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,12 +1,11 @@
-slc6-gcc48:
+slc6-gcc62:
   tags:
     - docker
   image: clicdp/slc6-base
   script:
-    - export GCC_VERSION="4.8.5"
-    - export BUILD_TYPE="opt"
-    - source .gitlab-ci.d/init_x86_64.sh
-    - mkdir build 
+    - export COMPILER_TYPE="gcc"
+    - source .dd4hep-ci.d/init_x86_64.sh
+    - mkdir build
     - cd build
     - cmake -GNinja -D DD4HEP_USE_GEANT4=ON -D DD4HEP_USE_BOOST=ON -DBoost_NO_BOOST_CMAKE=ON -D DD4HEP_USE_LCIO=ON -D BUILD_TESTING=ON  -D Geant4_DIR=$G4INSTALL/lib64/Geant4-10.2.2 -D DD4HEP_USE_CXX11=ON -DCMAKE_BUILD_TYPE=Release ..
     - ninja
@@ -21,14 +20,13 @@ slc6-gcc48:
     - ninja install
     - ctest --output-on-failure
 
-slc6-gcc49:
+slc6-llvm39:
   tags:
     - docker
   image: clicdp/slc6-base
   script:
-    - export GCC_VERSION="4.9.3"
-    - export BUILD_TYPE="opt"
-    - source .gitlab-ci.d/init_x86_64.sh
+    - export COMPILER_TYPE="llvm"
+    - source .dd4hep-ci.d/init_x86_64.sh
     - mkdir build
     - cd build
     - cmake -GNinja -D DD4HEP_USE_GEANT4=ON -D DD4HEP_USE_BOOST=ON -DBoost_NO_BOOST_CMAKE=ON -D DD4HEP_USE_LCIO=ON -D BUILD_TESTING=ON -D Geant4_DIR=$G4INSTALL/lib64/Geant4-10.2.2 -D DD4HEP_USE_CXX11=ON -DCMAKE_BUILD_TYPE=Release ..
@@ -44,15 +42,14 @@ slc6-gcc49:
     - ninja install
     - ctest --output-on-failure
 
-slc6-gcc49-XERCESC:
+slc6-gcc62-XERCESC:
   tags:
     - docker
   image: clicdp/slc6-base
   script:
-    - export GCC_VERSION="4.9.3"
-    - export BUILD_TYPE="opt"
-    - source .gitlab-ci.d/init_x86_64.sh
-    - mkdir build 
+    - export COMPILER_TYPE="gcc"
+    - source .dd4hep-ci.d/init_x86_64.sh
+    - mkdir build
     - cd build
     - cmake -GNinja -D DD4HEP_USE_GEANT4=ON -D DD4HEP_USE_BOOST=ON -DBoost_NO_BOOST_CMAKE=ON -D DD4HEP_USE_LCIO=ON -D BUILD_TESTING=ON -D Geant4_DIR=$G4INSTALL/lib64/Geant4-10.2.2 -D DD4HEP_USE_CXX11=ON -DCMAKE_BUILD_TYPE=Release -DDD4HEP_USE_XERCESC=ON ..
     - ninja
@@ -67,15 +64,14 @@ slc6-gcc49-XERCESC:
     - ninja install
     - ctest --output-on-failure
 
-centos7-gcc49:
+centos7-gcc62:
   tags:
     - docker
   image: clicdp/cc7-base
   script:
-    - export GCC_VERSION="4.9.3"
-    - export BUILD_TYPE="opt"
-    - source .gitlab-ci.d/init_x86_64.sh
-    - mkdir build 
+    - export COMPILER_TYPE="gcc"
+    - source .dd4hep-ci.d/init_x86_64.sh
+    - mkdir build
     - cd build
     - cmake -GNinja -D DD4HEP_USE_GEANT4=ON -D DD4HEP_USE_BOOST=ON -DBoost_NO_BOOST_CMAKE=ON -D DD4HEP_USE_LCIO=ON -D BUILD_TESTING=ON -D Geant4_DIR=$G4INSTALL/lib64/Geant4-10.2.2 -D DD4HEP_USE_CXX11=ON -DCMAKE_BUILD_TYPE=Release ..
     - ninja
@@ -89,14 +85,15 @@ centos7-gcc49:
     - ninja
     - ninja install
     - ctest --output-on-failure
-    
 
-slc6-llvm39:
+
+centos7-llvm39:
   tags:
     - docker
   image: clicdp/slc6-base
   script:
-    - source .gitlab-ci.d/init_clang.sh
+    - export COMPILER_TYPE="llvm"
+    - source .dd4hep-ci.d/init_x86_64.sh
     - mkdir build
     - cd build
     - cmake -GNinja -D DD4HEP_USE_GEANT4=ON -D DD4HEP_USE_BOOST=ON -DBoost_NO_BOOST_CMAKE=ON -D DD4HEP_USE_LCIO=ON -D BUILD_TESTING=ON -D Geant4_DIR=$G4INSTALL/lib64/Geant4-10.2.2 -D DD4HEP_USE_CXX11=ON -DCMAKE_BUILD_TYPE=Release ..
-- 
GitLab