diff --git a/cmake/setup.sh.in b/cmake/setup.sh.in index f5ef12e..e65ff10 100644 --- a/cmake/setup.sh.in +++ b/cmake/setup.sh.in @@ -1,134 +1,146 @@ # Copyright 2016 L. Pickering, P Stowell, R. Terri, C. Wilkinson, C. Wret ################################################################################ # This file is part of NUISANCE. # # NUISANCE is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # NUISANCE is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with NUISANCE. If not, see <http://www.gnu.org/licenses/>. ################################################################################ #!/bin/sh -if ! [[ ":$PATH:" == *":@CMAKE_INSTALL_PREFIX@/bin:"* ]]; then - export PATH=@CMAKE_INSTALL_PREFIX@/bin:$PATH -fi -if ! [[ ":$LD_LIBRARY_PATH:" == *":@CMAKE_INSTALL_PREFIX@/lib:"* ]]; then - export LD_LIBRARY_PATH=@CMAKE_INSTALL_PREFIX@/lib:$LD_LIBRARY_PATH -fi +### Adapted from https://unix.stackexchange.com/questions/4965/keep-duplicates-out-of-path-on-source +add_to_PATH () { + for d; do + + d=$(cd -- "$d" && { pwd -P || pwd; }) 2>/dev/null # canonicalize symbolic links + if [ -z "$d" ]; then continue; fi # skip nonexistent directory + + if [ "$d" == "/usr/bin" ] || [ "$d" == "/usr/bin64" ] || [ "$d" == "/usr/local/bin" ] || [ "$d" == "/usr/local/bin64" ]; then + case ":$PATH:" in + *":$d:"*) :;; + *) export PATH=$PATH:$d;; + esac + else + case ":$PATH:" in + *":$d:"*) :;; + *) export PATH=$d:$PATH;; + esac + fi + done +} + +add_to_LD_LIBRARY_PATH () { + for d; do + + d=$(cd -- "$d" && { pwd -P || pwd; }) 2>/dev/null # canonicalize symbolic links + if [ -z "$d" ]; then continue; fi # skip nonexistent directory + + if [ "$d" == "/usr/lib" ] || [ "$d" == "/usr/lib64" ] || [ "$d" == "/usr/local/lib" ] || [ "$d" == "/usr/local/lib64" ]; then + case ":$LD_LIBRARY_PATH:" in + *":$d:"*) :;; + *) export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$d;; + esac + else + case ":$LD_LIBRARY_PATH:" in + *":$d:"*) :;; + *) export LD_LIBRARY_PATH=$d:$LD_LIBRARY_PATH;; + esac + fi + done +} + +add_to_PATH "@CMAKE_INSTALL_PREFIX@/bin" + +add_to_LD_LIBRARY_PATH "@CMAKE_INSTALL_PREFIX@/lib" -if [[ ! "${ROOTSYS}" ]]; then +if [ ! "${ROOTSYS}" ]; then echo "[INFO]: Sourcing ROOT from: @CMAKE_ROOTSYS@" source "@CMAKE_ROOTSYS@/bin/thisroot.sh" fi - -if [[ "@USE_NEUT@" != "FALSE" ]]; then +if [ "@USE_NEUT@" != "FALSE" ]; then echo "[INFO]: Adding NEUT library paths to the environment." export NEUT_ROOT=@NEUT_ROOT@ export CERN=@CERN@ export CERN_LEVEL=@CERN_LEVEL@ - if ! [[ ":$LD_LIBRARY_PATH:" == *":${NEUT_ROOT}/lib/Linux_pc:"* ]]; then - export LD_LIBRARY_PATH=${NEUT_ROOT}/lib/Linux_pc:$LD_LIBRARY_PATH - fi - if ! [[ ":$LD_LIBRARY_PATH:" == *":${NEUT_ROOT}/src/reweight:"* ]]; then - export LD_LIBRARY_PATH=${NEUT_ROOT}/src/reweight:$LD_LIBRARY_PATH - fi + add_to_LD_LIBRARY_PATH "${NEUT_ROOT}/lib/Linux_pc" "${NEUT_ROOT}/src/reweight" fi -if [[ "@USE_NuWro@" != "FALSE" ]]; then - if [[ "@NUWRO_BUILT_FROM_FILE@" == "FALSE" ]]; then +if [ "@USE_NuWro@" != "FALSE" ]; then + if [ "@NUWRO_BUILT_FROM_FILE@" == "FALSE" ]; then echo "[INFO]: Adding NuWro library paths to the environment." export NUWRO="@NUWRO@" - if ! [[ ":$LD_LIBRARY_PATH:" == *":@NUWRO@/build/@CMAKE_SYSTEM_NAME@/lib:"* ]]; then - export LD_LIBRARY_PATH=@NUWRO@/build/@CMAKE_SYSTEM_NAME@/lib:$LD_LIBRARY_PATH - fi - if [[ "@NUWRO_INC@" ]]; then + add_to_PATH "@NUWRO@/bin" + add_to_LD_LIBRARY_PATH "@NUWRO@/build/@CMAKE_SYSTEM_NAME@/lib" + + if [ "@NUWRO_INC@" ]; then export NUWRO_INC=@NUWRO_INC@ fi + else echo "[INFO]: NuWro support included from input event file." fi fi -if [[ "@NEED_PYTHIA6@" != "FALSE" ]]; then +if [ "@NEED_PYTHIA6@" != "FALSE" ]; then echo "[INFO]: Adding PYTHIA6 library paths to the environment." export PYTHIA6="@PYTHIA6@" - if ! [[ ":$LD_LIBRARY_PATH:" == *":@PYTHIA6@:"* ]]; then - export LD_LIBRARY_PATH=@PYTHIA6@:$LD_LIBRARY_PATH - fi + + add_to_LD_LIBRARY_PATH "@PYTHIA6@" fi -if [[ "@USE_GENIE@" != "FALSE" ]]; then +if [ "@USE_GENIE@" != "FALSE" ]; then echo "[INFO]: Adding GENIE paths to the environment." export GENIE="@GENIE@" export LHAPDF_LIB="@LHAPDF_LIB@" export LHAPDF_INC="@LHAPDF_INC@" export LIBXML2_LIB="@LIBXML2_LIB@" export LIBXML2_INC="@LIBXML2_INC@" export LOG4CPP_LIB="@LOG4CPP_LIB@" export LOG4CPP_INC="@LOG4CPP_INC@" - if [[ "@LHAPATH@" ]]; then + if [ "@LHAPATH@" ]; then export LHAPATH="@LHAPATH@" fi - if ! [[ ":$PATH:" == *":@GENIE@/bin:"* ]]; then - export PATH=@GENIE@/bin:$PATH - fi - - if ! [[ ":$LD_LIBRARY_PATH:" == *":@GENIE@/lib:"* ]]; then - export LD_LIBRARY_PATH=@GENIE@/lib:$LD_LIBRARY_PATH - fi - - if ! [[ ":$LD_LIBRARY_PATH:" == *":@LHAPDF_LIB@:"* ]]; then - export LD_LIBRARY_PATH=@LHAPDF_LIB@:$LD_LIBRARY_PATH - fi + add_to_PATH "@GENIE@/bin" - if ! [[ ":$LD_LIBRARY_PATH:" == *":@LIBXML2_LIB@:"* ]]; then - export LD_LIBRARY_PATH=@LIBXML2_LIB@:$LD_LIBRARY_PATH - fi + add_to_LD_LIBRARY_PATH "@GENIE@/lib" "@LHAPDF_LIB@" "@LIBXML2_LIB@" "@LOG4CPP_LIB@" - if ! [[ ":$LD_LIBRARY_PATH:" == *":@LOG4CPP_LIB@:"* ]]; then - export LD_LIBRARY_PATH=@LOG4CPP_LIB@:$LD_LIBRARY_PATH - fi fi -if [[ "@USE_NIWG@" != "FALSE" ]]; then +if [ "@USE_NIWG@" != "FALSE" ]; then echo "[INFO]: Adding NIWG paths to the environment." export NIWG=@NIWG_ROOT@ export NIWGREWEIGHT_INPUTS=@NIWG_ROOT@/inputs - if ! [[ ":$LD_LIBRARY_PATH:" == *":@NIWG_ROOT@:"* ]]; then - export LD_LIBRARY_PATH=${NIWG}:${LD_LIBRARY_PATH} - fi - + add_to_LD_LIBRARY_PATH "@NIWG_ROOT@" fi -if [[ "@USE_T2K@" != "FALSE" ]]; then +if [ "@USE_T2K@" != "FALSE" ]; then echo "[INFO]: Adding T2K paths to the environment." export T2KREWEIGHT=@T2KREWEIGHT@ - if ! [[ ":$LD_LIBRARY_PATH:" == *":@T2KREWEIGHT@/lib:"* ]]; then - export LD_LIBRARY_PATH=${T2KREWEIGHT}/lib:${LD_LIBRARY_PATH} - fi + add_to_LD_LIBRARY_PATH "@T2KREWEIGHT@/lib" fi -if [[ "@BUILD_GiBUU@" != "FALSE" ]]; then +if [ "@BUILD_GiBUU@" != "FALSE" ]; then echo "[INFO]: Sourcing GiBUU tools." source @CMAKE_BINARY_DIR@/GiBUUTools/src/GiBUUTools-build/Linux/setup.sh fi export NUISANCE="@CMAKE_SOURCE_DIR@"