
| Xroot startup tutorial |
|
|
#!/bin/bash ######################################################################## # This script generates two scripts that are used to configure xrootd # to be used with a particular cmssw version. The reason this script # was created was to make life a little easier when implementing # the xrootd startup script for each version of cmssw. The script # is currently configured with the below variables to generate a setup # shell script and a root macro. # ######################################################################## # Variables for script ######################################################################## POSSIBLE_CMSSW_SW_VO_BASES="/grp/cms/purdueCMS /apps/02/cmssoft/cms" SETUP_SCRIPT="setup.sh" SETUP_MACRO="rootlogon.C" DEPLOYMENT_DIR=/grp/cms/root/etc ######################################################################## # Select the cmssw base directory ######################################################################## #select CMSSW base PS3='Choose software base:' select CMSSW_SW_VO_BASE in $POSSIBLE_CMSSW_SW_VO_BASES do echo $CMSSW_SW_VO_BASE break done ######################################################################## # Select the architecture to use ######################################################################## ARCHS=$(ls -d ${CMSSW_SW_VO_BASE}/sl*) count=0 for a in $ARCHS do POSSIBLE_ARCHS[count]=$(basename $a) let count=count+1 done source $CMSSW_SW_VO_BASE/cmsset_default.sh # select ARCH PS3='Choose Architecture:' echo select arch in $ARCHS do echo -n $arch break done SCRAM_ARCH=$(basename $arch) ######################################################################## # Select cmssw version ######################################################################## CMSSW_VERSIONS=$(ls $CMSSW_SW_VO_BASE/$SCRAM_ARCH/cms/cmssw/) PS3='Choose CMSSW version:' echo select CMSSW_VERSION in $CMSSW_VERSIONS do echo -n $CMSSW_VERSION break done ######################################################################## # Get enviroment variables from scram ######################################################################## START_DIR=`pwd` mkdir -p cmssw_test cd cmssw_test pwd scramv1 project CMSSW $CMSSW_VERSION cd $CMSSW_VERSION/src scramv1 runtime -sh -dump $START_DIR/env.sh > /dev/null cd $START_DIR rm -rf cmssw_test vars=$(cat env.sh | awk '{c=index($2,"=");x=substr($2,0,c-1);print x }') values=$(cat env.sh | awk '{c=index($2,"=");d=length($2);x=substr($2,c+1,d);e=index(x,";");x=substr(x,0,e-1);print x}') rm -f env.sh CMSSW_BASE=`pwd` index=0 markIndex=-1; for v in $vars do VARS[index]=$v if [ "$v" == "CMSSW_BASE" ] then let markIndex=index fi let index=index+1 done index=0 for v in $values do VALUES[index]=$(echo $v | sed -e "s/\"//g") let index=index+1 done CMSSW_BASE=${VALUES[markIndex]} CMSSW_BASE_SUB=$(echo $CMSSW_BASE | sed -e "s/\//|/g") CMSSW_SW_VO_BASE_SUB=$(echo $CMSSW_SW_VO_BASE | sed -e "s/\//|/g") ########################################################################## # Create a directory to hold the generated files ########################################################################## TARGET_DIR=$(basename ${CMSSW_SW_VO_BASE})_${CMSSW_VERSION} mkdir -p $TARGET_DIR ########################################################################## # Generate a setup file that will be use to setup the user environment ########################################################################## START_DIR=`pwd` cd $TARGET_DIR cat > $SETUP_SCRIPT <<EOF ########################################################################## # Generated on $(date) ########################################################################## CMSSW_BASE=${CMSSW_BASE} EOF for((i=0;i<$index;i++)) do if [ "${VARS[$i]}" != "CMSSW_BASE" ] then vv=${VALUES[$i]//\//|} #v1=$(echo $vv | sed -e "s/${CMSSW_BASE_SUB}*/\${CMSSW_BASE}/g" | sed -e "s/${CMSSW_SW_VO_BASE_SUB}*/\${CMSSW_SW_VO_BASE}/g" ) v1=$(echo $vv | sed -e "s/${CMSSW_BASE_SUB}*/\${CMSSW_BASE}/g" ) v=$(echo $v1 | sed -e "s/|/\//g") echo "export ${VARS[$i]}=\"$v\";" >> $SETUP_SCRIPT echo "" >> $SETUP_SCRIPT fi done cat >> $SETUP_SCRIPT <<EOF export XROOTD=\$ROOTSYS/bin/xrootd export XRDLOG=/var/log/xrootd.log export XRDUSER=daemon export XRDDEBUG=1 export XRDLIBS=\$ROOTSYS/lib export DCAPLIB=/opt/d-cache/dcap/lib export LD_LIBRARY_PATH=\$DCAPLIB:\$XRDLIBS:\$LD_LIBRARY_PATH export PATH=\$PATH:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/opt/d-cache/dcap/bin:/usr/moab/bin:/usr/pbs/bin EOF cd $START_DIR ######################################################################## # build a rootLogon macro file. ######################################################################## START_DIR=`pwd` cd $TARGET_DIR CMSSW_RELEASE_BASE=$CMSSW_SW_VO_BASE/$SCRAM_ARCH/cms/cmssw/$CMSSW_VERSION echo "{" > ${SETUP_MACRO} echo " // Setup macro for $CMSSW_RELEASE_BASE" >> {$SETUP_MACRO} #for path in $(find $CMSSW_RELEASE_BASE/src -name interface) echo " gInterpreter->AddIncludePath(\".\");" >> ${SETUP_MACRO} echo " gInterpreter->AddIncludePath(\"${CMSSW_RELEASE_BASE}/src\");" >> ${SETUP_MACRO} #for path in $(ls -d $CMSSW_RELEASE_BASE/src/*) #do # echo " gInterpreter->AddIncludePath(\"${path}\");" >> ${SETUP_MACRO} #done #for path in $(find ${CMSSW_RELEASE_BASE}/src -name classes.h) #do #p=${path%/classes.h} # echo " gInterpreter->AddIncludePath(\"${p}\");" >> ${SETUP_MACRO} #done #for path in $(find ${CMSSW_RELEASE_BASE}/src -name classes.h) #do #p=${path%/classes.h} # echo " gInterpreter->AddIncludePath(\"${p}\");" >> ${SETUP_MACRO} #done echo "}" >> ${SETUP_MACRO} cd $START_DIR ######################################################################### # Deploy to the deployment directory ######################################################################### if [ -e "$DEPLOYMENT_DIR" ] then mkdir -p $DEPLOYMENT_DIR fi mv $TARGET_DIR $DEPLOYMENT_DIR |
| < Prev | Next > |
|---|