#!/bin/sh
# RemoteRunjobAppScript:makeSerialTemplate
# SubmissionScripts/Distributor/Runjob/APP/serial
#
@@{MODULEINITIALIZE}
@@{MODULESUNLOAD}
@@{MODULESLOAD}

CURDIR=`pwd`

SCRIPT=`basename $0`
SITE_SCRATCH_DIR=$3
TARBALL=${SITE_SCRATCH_DIR}/`basename $1 .gz`
WORKINGDIR=${SITE_SCRATCH_DIR}/$2

if [ ! -d ${SITE_SCRATCH_DIR} ] ; then
   echo "Jobs directory ${SITE_SCRATCH_DIR} is missing"
   exit 13
fi

if [ "${USER}" = "" ] ; then
   if [ "${LOGNAME}" != "" ] ; then
      export USER=${LOGNAME}
   else
      export USER=HUBzero
   fi
fi

APP_PROGRAM=@@{EXECUTABLE}
if [ ! -x ${APP_PROGRAM} ] ; then
   if [ "${SITE_APPLICATION_ROOT}" != "" ] ; then
      if [ -x ${SITE_APPLICATION_ROOT}/${APP_PROGRAM} ] ; then
         APP_PROGRAM=${SITE_APPLICATION_ROOT}/${APP_PROGRAM}
      fi
   fi
fi

mkdir -p ${WORKINGDIR}
chmod 700 ${WORKINGDIR}
tar xzm -C ${WORKINGDIR} -f ${SITE_SCRATCH_DIR}/@@{JOBID}_@@{INSTANCEID}_input.tar.gz
#
cd ${WORKINGDIR}
sleep 2
touch .__fileTimeMarker
sleep 1

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

date +"%s" > @@{TS_START}
#
# create output file now - if job times out the
# file is available for transfer by condor
#
tar cf ${TARBALL} ./@@{TS_START}
#
export PATH=${PATH}:${WORKINGDIR}

${TIMEPATH} --format "Command exited with status %x\nreal %e\nuser %U\nsys %S" -o @@{TIME_RESULTS} \
   ${APP_PROGRAM} @@{ARGUMENTS} < @@{STDIN}

date +"%s" > @@{TS_FINISH}
#
# tar: Cannot update compressed archives
# so recreate output file for transfer by condor
#
# Allow for file/directory names with embedded spaces.
find . -newer .__fileTimeMarker -not -name . -not -iname '*hub-proxy.*' -print0 | \
   xargs --null --no-run-if-empty tar rf ${TARBALL} --no-recursion
if [ -f ${TARBALL} ] ; then
   gzip ${TARBALL}
fi

cd ${CURDIR}
rm -rf ${WORKINGDIR}
