Purdue CMS
Xroot startup tutorial Print
#!/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 >

 

 

Utilization
1518 jobs running
Total: 1728 job slots
Jobs running: 1518
Jobs queued: 4
dCache
40% utilization
Total: 455 TB
40% Used, 60% Free

This site, and the work it describes, is primarily funded by a grant from the National Science Foundation (NSF).