#!/bin/sh
# LocalBatchPEGASUS:makeSerialTemplate
# SubmissionScripts/Client/Batch/PEGASUS/serial
#
trap cleanup HUP INT QUIT ABRT TERM

cleanup()
{
   echo "Abnormal termination by signal"
   pegasusRunPID=$(pgrep -f pegasus-run)
   if [ -n "${pegasusRunPID}" ] ; then
      for pid in $(pstree -pn ${pegasusRunPID} | grep -o "([[:digit:]]*)" | grep -o "[[:digit:]]*" | grep -v ${pegasusRunPID}) ; do
         kill -0 ${pid} 2> /dev/null && {
            kill -TERM ${pid}
         }
      done
   fi
}

exitStatus=0

mkdir -p @@{INSTANCEDIRECTORY}/work
mkdir -p @@{SCRATCHDIRECTORY}/work

. @@{USESETUP}
use -e -r pegasus-@@{PEGASUSVERSION}

export JAVA_HEAPMAX=512

TIMEPATH=
for timePath in /bin/time /usr/bin/time /usr/local/bin/time ; do
   if [ -x ${timePath} ] ; then
      TIMEPATH=${timePath}
      break
   fi
done

condorConfigVal=$(which condor_config_val 2> /dev/null)
if [ -z "${condorConfigVal}" ] ; then
   mkdir @@{SCRATCHDIRECTORY}/fakeCondor
   cat > @@{SCRATCHDIRECTORY}/fakeCondor/condor_config_val << EOF
#!/bin/sh

exit 1
EOF
   chmod u+x @@{SCRATCHDIRECTORY}/fakeCondor/condor_config_val
   export PATH=${PATH}:@@{SCRATCHDIRECTORY}/fakeCondor
fi

#Discarded Arguments      = @@{DISCARDED}
#Not Recognized Arguments = @@{NOTRECOGNIZED}

export LANG=en_US.UTF-8

date +"%s" > @@{TS_START}

${TIMEPATH} --format "Command exited with status %x\nreal %e\nuser %U\nsys %S" -o @@{TIME_RESULTS} \
             @@{EXECUTABLE} --conf @@{INSTANCEDIRECTORY}/@@{JOBID}_@@{INSTANCEID}.pegasusrc \
             --sites local \
             --dir @@{SCRATCHDIRECTORY} \
             --relative-dir scratch \
             --relative-submit-dir work \
             --output-site local \
             --quiet \
             @@{ARGUMENTS} --submit \
             @@{DAX} < /dev/null &
wait %1
exitStatus=$?

date +"%s" > @@{TS_FINISH}

rm -rf @@{SCRATCHDIRECTORY}/${USER}
rm -rf @@{SCRATCHDIRECTORY}/fakeCondor

exit ${exitStatus}
