#!/bin/bash
#
# Purge some obsolete setttings from the shell environment,
# and install the latest centos7 runtime environment for gluex.
#

#scl enable devtoolset-11 bash
#scl enable rh-python38 bash

for pathvar in MANPATH LD_PRELOAD LD_LIBRARY_PATH PYTHONPATH PATH; do
    pathval=""
    for el in $(echo ${!pathvar} | awk -F: '{for(i=1;i<=NF;++i){print $i}}'); do
        if [ -n "$el" -a -z "$pathval" ]; then
            pathval=$el
        elif echo $el | grep -q /usr/local/root; then
            continue
        elif [ -n "$el" ]; then
            pathval=$pathval:$el
        fi
    done
    export $pathvar=$pathval
done

export XROOTD_ROOT=/usr/local/xrootd
if ! echo $PATH | grep -q $XROOTD_ROOT/bin; then
    export PATH=$PATH:$XROOTD_ROOT/bin
fi
if ! echo $LD_LIBRARY_PATH | grep -q $XROOTD_ROOT/lib64; then
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$XROOTD_ROOT/lib64
fi

export ROOTSYS=/nfs/cern.ch/asis/root-v6-28-12/x86_64
if ! echo $LD_PRELOAD | grep -q $ROOTSYS/lib/libXrdPosixPreload.so; then
    export LD_PRELOAD=$ROOTSYS/lib/libXrdPosixPreload.so
fi
if ! echo $LD_LIBRARY_PATH | grep -q $ROOTSYS/lib; then
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ROOTSYS/lib
fi
if ! echo $PYTHONPATH | grep -q $ROOTSYS/lib; then
    export PYTHONPATH=$PYTHONPATH:$ROOTSYS/lib
fi
if ! echo $PATH | grep -q $ROOTSYS/lib; then
    export PATH=$PATH:$ROOTSYS/bin
fi

export HALLD_HOME=/home/halld
export DIRACXX_HOME=$HALLD_HOME/Diracxx
export DIRACXX_DIR=$DIRACXX_HOME/x86_64-centos7
if echo $LD_LIBRARY_PATH | grep -q $DIRACXX_DIR; then
    true
else
    export LD_LIBRARY_PATH=$DIRACXX_DIR/lib:$LD_LIBRARY_PATH
    export ROOT_INCLUDE_PATH=/usr/include/root:$DIRACXX_DIR/include
    export PYTHONPATH=$DIRACXX_DIR/python:$PYTHONPATH
fi

export PYTHON=python3
export PYTHON_VERSION=$($PYTHON --version 2>&1 | awk '{print $2}')
export PYTHON_MAJOR_VERSION=$(echo $PYTHON_VERSION | awk -F. '{print $1}')
export PYTHON_MINOR_VERSION=$(echo $PYTHON_VERSION | awk -F. '{print $2}')
if [[ $PYTHON_MAJOR_VERSION -ge 3 ]]; then
    export PYTHON_GE_3=true
else
    export PYTHON_GE_3=false
fi
unset PYTHONSTARTUP

#JANA_CALIB_CONTEXT=""
JANA_CALIB_CONTEXT="variation=mc"
#JANA_CALIB_URL="sqlite:///$HALLD_HOME/ccdb/sql/ccdb_2017-06-23.sqlite"
JANA_CALIB_URL="mysql://ccdb_user@hallddb.jlab.org/ccdb"
#JANA_GEOMETRY_URL="xmlfile://$HALLD_HOME/hdds/main_HDDS.xml"
JANA_GEOMETRY_URL="ccdb://GEOMETRY/main_HDDS.xml"
export JANA_CALIB_CONTEXT JANA_CALIB_URL JANA_GEOMETRY_URL

# pointers to top-level packages
GLUEX_TOP=$HALLD_HOME
ONLINE=$HALLD_HOME/online
BUILD_SCRIPTS=$HALLD_HOME/build_scripts
HALLD_SIM_HOME=$HALLD_HOME/halld_sim/
HALLD_RECON_HOME=$HALLD_HOME/halld_recon/
HD_UTILITIES_HOME=$HALLD_HOME/hd_utilities/
ROOT_ANALYSIS_HOME=$HALLD_HOME/gluex_root_analysis/
MCWRAPPER_CENTRAL=$HALLD_HOME/gluex_MCwrapper
HDDM_DIR=$HALLD_HOME/hddm/HDDM/x86_64-centos7
HDDS_HOME=$HALLD_HOME/hdds
BMS_OSNAME=`$HALLD_RECON_HOME/src/BMS/osrelease.pl`
EVTGEN_VERSION=01.07.00
EVTGEN_HOME=/home/halld/evtgen/evtgen-$EVTGEN_VERSION
EVTGENDIR=$EVTGEN_HOME/x86_64-centos7
HEPMC_VERSION=2.06.10
HEPMC_HOME=$HALLD_HOME/hepmc/HepMC-$HEPMC_VERSION
HEPMCDIR=$HEPMC_HOME/x86_64-centos7
PHOTOS_VERSION=3.61
PHOTOS_HOME=/home/halld/photos/Photos-$PHOTOS_VERSION
PHOTOSDIR=$PHOTOS_HOME/x86_64-centos7
EVIO_HOME=$HALLD_HOME/evio/evio-4.4_centos7
EVIO_BUILD=$EVIO_HOME/$(uname)-$(uname -m)
EVIOROOT=$EVIO_BUILD
JANA_LEVEL=0.8.2
JANA_HOME=$HALLD_HOME/jana/jana_$JANA_LEVEL/$BMS_OSNAME
JANA_RESOURCE_DIR=$HALLD_HOME/jana/resources
JANA_PLUGIN_PATH=$JANA_HOME/plugins:$HALLD_RECON_HOME/$BMS_OSNAME/plugins:$HALLD_SIM_HOME/$BMS_OSNAME/plugins:$ONLINE/monitoring/$BMS_OSNAME/plugins
AMPTOOLS_DIR=$HALLD_HOME/amptools/centos7
AMPTOOLS_VERSION=0.12.1
AMPTOOLS=$AMPTOOLS_DIR/AmpTools
AMPPLOTTER=$AMPTOOLS_DIR/AmpPlotter
BATCH_MODE=0
export GLUEX_TOP
export BUILD_SCRIPTS
export ONLINE
export HALLD_HOME
export HALLD_SIM_HOME
export HALLD_RECON_HOME
export HD_UTILITIES_HOME
export ROOT_ANALYSIS_HOME
export MCWRAPPER_CENTRAL
export HDDM_DIR
export HDDS_HOME
export BMS_OSNAME
export EVTGEN_VERSION
export EVTGEN_HOME
export EVTGENDIR
export HEPMC_VERSION
export HEPMC_HOME
export HEPMCDIR
export PHOTOS_VERSION
export PHOTOS_HOME
export PHOTOSDIR
export EVIO_HOME
export EVIO_BUILD
export EVIOROOT
export JANA_HOME
export JANA_LEVEL
export JANA_RESOURCE_DIR
export JANA_PLUGIN_PATH
export AMPTOOLS_DIR
export AMPTOOLS_VERSION
export AMPTOOLS AMPPLOTTER
export BATCH_MODE

# access to python modules in sim_recon
if [[ -z "$PYTHONPATH" ]]; then
    PYTHONPATH=$HALLD_RECON_HOME/$BMS_OSNAME/python3:$HALLD_SIM_HOME/$BMS_OSNAME/python3
else
    PYTHONPATH=$HALLD_RECON_HOME/$BMS_OSNAME/python3:$HALLD_SIM_HOME/$BMS_OSNAME/python3:$PYTHONPATH
fi
PYTHONPATH=$PYTHONPATH:$HALLD_RECON_HOME/$BMS_OSNAME/python2:$HALLD_SIM_HOME/$BMS_OSNAME/python2
export PYTHONPATH

# this is needed to build evio, but not to use it
export CODA=$EVIO_HOME

# stuff related to the calibration constants db
if [ ! -d "$CCDB_HOME" ]; then
	CCDB_VERSION=1.07
	CCDB_HOME=$HALLD_HOME/ccdb/ccdb-centos7
	source $CCDB_HOME/environment.bash
	export CCDB_HOME
	#export PYTHONPATH=$CCDB_HOME/python/ccdb:$PYTHONPATH
	export PATH=$CCDB_HOME/bin:$PATH
	SQLITE_VERSION=3.13.0
	SQLITE_YEAR=2016
	SQLITE_HOME=$HALLD_HOME/sqlite/sqlite-$SQLITE_VERSION
	SQLITECPP_HOME=$HALLD_HOME/SQLiteCpp/x86_64-centos7
	export SQLITE_HOME
	export SQLITECPP_HOME
	export SQLITECPP_VERSION
fi
#CCDB_CONNECTION="mysql://jonesrt@hallddb.jlab.org/ccdb"
CCDB_CONNECTION=$JANA_CALIB_URL
export CCDB_CONNECTION

# stuff related to the run conditions database
if [ ! -d "$RCDB_HOME" ]; then
	RCDB_HOME=$HALLD_HOME/rcdb
	source $RCDB_HOME/environment.bash
	export RCDB_HOME
fi
RCDB_CONNECTION="mysql://rcdb@hallddb.jlab.org/rcdb"
export RCDB_CONNECTION

# add hddm utilities to the path
if [[ -d $HDDM_DIR ]]; then
    export PATH=$HDDM_DIR/bin:$PATH
fi

# stuff related to the hdds geometry database
if ! echo $LD_LIBRARY_PATH | grep -q "$HDDS_HOME/$BMS_OSNAME/lib"; then
    LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HDDS_HOME/$BMS_OSNAME/lib
fi
export LD_LIBRARY_PATH

# add support for the hdf5 library
HDF5ROOT=$HDDM_DIR
export HDF5ROOT
if ! echo $LD_LIBRARY_PATH | grep -q $HDF5ROOT; then
    LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HDF5ROOT/lib
    export LD_LIBRARY_PATH
fi
if ! echo $PATH | grep -q $HDF5ROOT; then
    PATH=$PATH:$HDF5ROOT/bin
    export PATH
fi

# stuff for nvidia gpu support library cuda
if false; then
    CUDA_INSTALL_PATH=/usr/local/cuda
    export CUDA_INSTALL_PATH
    if ! echo $PATH | grep -q "$CUDA_INSTALL_PATH/bin"; then
        PATH=$PATH:$CUDA_INSTALL_PATH/bin
    fi
    if ! echo $LD_LIBRARY_PATH | grep -q "$CUDA_INSTALL_PATH/lib"; then
        LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CUDA_INSTALL_PATH/lib:$CUDA_INSTALL_PATH/lib64
    fi
fi

# add the appropriate bin directories to path
if ! echo $PATH | grep -q "$HALLD_HOME/bin"; then
    PATH=$HALLD_HOME/bin:$PATH
fi
if ! echo $PATH | grep -q "$HALLD_RECON_HOME/$BMS_OSNAME/bin"; then
    PATH=$HALLD_RECON_HOME/$BMS_OSNAME/bin:$PATH
fi
if ! echo $PATH | grep -q "$HALLD_RECON_HOME/$BMS_OSNAME/bin"; then
    PATH=$HALLD_RECON_HOME/$BMS_OSNAME/bin:$PATH
fi
if ! echo $PATH | grep -q "$HALLD_SIM_HOME/$BMS_OSNAME/bin"; then
    PATH=$HALLD_SIM_HOME/$BMS_OSNAME/bin:$PATH
fi
if ! echo $PATH | grep -q "$MCWRAPPER_CENTRAL/bin"; then
    PATH=$MCWRAPPER_CENTRAL/bin:$PATH
fi
if ! echo $PATH | grep -q "$HDDS_HOME/$BMS_OSNAME/bin"; then
    PATH=$HDDS_HOME/$BMS_OSNAME/bin:$PATH
fi
if ! echo $PATH | grep -q "$EVIO_BUILD/bin"; then
    PATH=$EVIO_BUILD/bin:$PATH
fi
export PATH

# add the appropriate lib directories to LD_LIBRARY_PATH
if ! echo $LD_LIBRARY | grep -q "$EVIO_BUILD/lib"; then
    LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$EVIO_BUILD/lib
fi
if ! echo $LD_LIBRARY_PATH | grep -q "$HALLD_RECON_HOME/$BMS_OSNAME/lib"; then
    LD_LIBRARY_PATH=$HALLD_RECON_HOME/$BMS_OSNAME/lib:$LD_LIBRARY_PATH
fi
if ! echo $LD_LIBRARY_PATH | grep -q "$HALLD_SIM_HOME/$BMS_OSNAME/lib"; then
    LD_LIBRARY_PATH=$HALLD_SIM_HOME/$BMS_OSNAME/lib:$LD_LIBRARY_PATH
fi
if ! echo $LD_LIBRARY_PATH | grep -q "$HALLD_RECON_HOME/$BMS_OSNAME/lib"; then
    LD_LIBRARY_PATH=$HALLD_RECON_HOME/$BMS_OSNAME/lib:$LD_LIBRARY_PATH
fi
export LD_LIBRARY_PATH

# select the cernlib installation
CERN=$HALLD_HOME/cernlib/$BMS_OSNAME
CERN_LEVEL=2005
CERN_ROOT=$CERN/$CERN_LEVEL
CERN_DIR=$CERN/$CERN_LEVEL
export CERN CERN_ROOT CERN_LEVEL CERN_DIR
if ! echo $PATH | grep -q "$CERN_ROOT/$CERN_LEVEL/bin"; then
    PATH=$PATH:$CERN_ROOT/$CERN_LEVEL/bin
fi
unset CERN32_ROOT
unset CERN32

# add pointers to Geant4 libraries
if [[ "$G4BUILD" = "cvmfs debug" ]]; then
    G4ROOT=/nfs/cern.ch/asis/geant4-v10.7.4/centos7-debug
    G4WORKDIR=$HALLD_HOME/HDGeant4/centos7-debug
elif [[ "$G4BUILD" = "cvmfs" ]]; then
    G4ROOT=/nfs/cern.ch/asis/geant4-v10.7.4/centos7-MT
    G4WORKDIR=$HALLD_HOME/HDGeant4/centos7-MT
elif [[ "$G4BUILD" = "debug" ]]; then
    G4ROOT=/nfs/cern.ch/asis/geant4-v10.7.4/centos7-debug
    G4WORKDIR=$HALLD_HOME/HDGeant4/centos7-debug
else
    G4ROOT=/nfs/cern.ch/asis/geant4-v10.7.4/centos7-MT
    G4WORKDIR=$HALLD_HOME/HDGeant4/centos7-MT
fi
G4INSTALL=$G4ROOT/share/geant4make
G4INCLUDE=$G4ROOT/include/Geant4
export G4ROOT G4INSTALL G4INCLUDE G4WORKDIR
source $G4ROOT/bin/geant4.sh
source $G4INSTALL/geant4make.sh
export LD_LIBRARY_PATH=$(echo $LD_LIBRARY_PATH | sed 's/:[^:]*views.*$//')
export LD_LIBRARY_PATH=$(echo $LD_LIBRARY_PATH | sed 's/.*views[^:]*://')
export CLHEP_DIR=$HALLD_HOME/CLHEP
export CLHEP_BASE_DIR=$CLHEP_DIR/x86_64-centos7
export CLHEP_INCLUDE_DIR=$CLHEP_DIR/x86_64-centos7/include
export CLHEP_LIB_DIR=$CLHEP_BASE_DIR/lib
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CLHEP_LIB_DIR
unset CLHEP
if [[ "$G4BUILD" = "debug" ]]; then
    unset G4MULTITHREADED
fi

export QTHOME=/usr
export QTLIBPATH=$QTHOME/lib64
export XERCESCROOT=/usr
export VDTDIR=$HALLD_HOME/vdt/x86_64-centos7
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$VDTDIR/lib
