188 lines
4.4 KiB
Bash
188 lines
4.4 KiB
Bash
|
#!/bin/sh
|
||
|
#$ -S /bin/sh
|
||
|
#$ -pe make 1
|
||
|
#$ -N SSession
|
||
|
#$ -v PATH
|
||
|
|
||
|
#___INFO__MARK_BEGIN__
|
||
|
##########################################################################
|
||
|
#
|
||
|
# The Contents of this file are made available subject to the terms of
|
||
|
# the Sun Industry Standards Source License Version 1.2
|
||
|
#
|
||
|
# Sun Microsystems Inc., March, 2001
|
||
|
#
|
||
|
#
|
||
|
# Sun Industry Standards Source License Version 1.2
|
||
|
# =================================================
|
||
|
# The contents of this file are subject to the Sun Industry Standards
|
||
|
# Source License Version 1.2 (the "License"); You may not use this file
|
||
|
# except in compliance with the License. You may obtain a copy of the
|
||
|
# License at http://gridengine.sunsource.net/Gridengine_SISSL_license.html
|
||
|
#
|
||
|
# Software provided under this License is provided on an "AS IS" basis,
|
||
|
# WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
|
||
|
# WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
|
||
|
# MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
|
||
|
# See the License for the specific provisions governing your rights and
|
||
|
# obligations concerning the Software.
|
||
|
#
|
||
|
# The Initial Developer of the Original Code is: Sun Microsystems, Inc.
|
||
|
#
|
||
|
# Copyright: 2009 by Sun Microsystems, Inc.
|
||
|
#
|
||
|
# All Rights Reserved.
|
||
|
#
|
||
|
##########################################################################
|
||
|
#___INFO__MARK_END__
|
||
|
|
||
|
|
||
|
ARCH=`$SGE_ROOT/util/arch`
|
||
|
ECHO="$SGE_ROOT/utilbin/$ARCH/echo_raw -e"
|
||
|
|
||
|
ssession_logging_enabled="false" # is logging enabled?
|
||
|
ssession_logfile="/tmp/ssession.log" # logfile
|
||
|
tfile="taskfile.txt" # default taskfile name if not other specified
|
||
|
mfile="" # makefile name
|
||
|
isource="tfile" # type of onput "tfile" or "mfile"
|
||
|
|
||
|
ssession_show_usage()
|
||
|
{
|
||
|
echo "usage: ssession [ taskfile | -mf makefile ]"
|
||
|
echo
|
||
|
echo " If there is neither a taskfile nor a makefile specified then"
|
||
|
echo " this script assumes that there is taskfile named taskfile.txt"
|
||
|
echo " in the current working directory."
|
||
|
echo
|
||
|
echo " taskfile - taskfile containing the tasks to be executed in the session"
|
||
|
echo " makefile - makefile containing the tasks an depedency definition"
|
||
|
}
|
||
|
|
||
|
# add start rule to makefile
|
||
|
ssession_makefile_add_all()
|
||
|
{
|
||
|
taskfile=$1
|
||
|
makefile=$2
|
||
|
|
||
|
start="all:"
|
||
|
line_i=1
|
||
|
max=`wc -l $taskfile|cut -c 1-8`
|
||
|
while [ $line_i -le $max ]; do
|
||
|
line=`head -$line_i $taskfile | tail -1`
|
||
|
|
||
|
start=`echo $start task${line_i}`
|
||
|
line_i=`expr $line_i + 1`
|
||
|
done
|
||
|
|
||
|
echo $start >>$makefile
|
||
|
echo "" >>$makefile
|
||
|
|
||
|
unset makefile
|
||
|
unset start
|
||
|
unset line_i
|
||
|
}
|
||
|
|
||
|
# add one rule for each task in taskfile
|
||
|
ssession_makefile_add_task()
|
||
|
{
|
||
|
taskfile=$1
|
||
|
makefile=$2
|
||
|
|
||
|
line_i=1
|
||
|
max_lines=`wc -l $taskfile|cut -c 1-8`
|
||
|
while [ $line_i -le $max_lines ]; do
|
||
|
command=`head -$line_i $taskfile | tail -1`
|
||
|
|
||
|
echo "task${line_i}:" >>$makefile
|
||
|
$ECHO "\t${command}" >>$makefile
|
||
|
echo "" >>$makefile
|
||
|
line_i=`expr $line_i + 1`
|
||
|
done
|
||
|
|
||
|
unset max_lines
|
||
|
unset taskfile
|
||
|
unset makefile
|
||
|
unset line_i
|
||
|
}
|
||
|
|
||
|
# create the makefile
|
||
|
ssession_makefile_create()
|
||
|
{
|
||
|
makefile=$1
|
||
|
|
||
|
if [ -f $makefile ]; then
|
||
|
rm -f $makefile
|
||
|
echo rm
|
||
|
fi
|
||
|
touch $makefile
|
||
|
|
||
|
unset makefile
|
||
|
}
|
||
|
|
||
|
# destroy the taskfile
|
||
|
ssession_makefile_destroy()
|
||
|
{
|
||
|
makefile=$1
|
||
|
|
||
|
# rm -f $makefile
|
||
|
unset makefile
|
||
|
}
|
||
|
|
||
|
# start a qmake job that executes tasks in taskfile
|
||
|
ssession_start_qmake()
|
||
|
{
|
||
|
makefile=$1
|
||
|
|
||
|
qmake -inherit -- -f $makefile
|
||
|
}
|
||
|
|
||
|
ssession_log()
|
||
|
{
|
||
|
if [ $ssession_logging_enabled = true ]; then
|
||
|
echo "$@" >>$ssession_logfile
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
if [ $# = 1 ]; then
|
||
|
if [ -f "$1" ]; then
|
||
|
tfile="$1"
|
||
|
else
|
||
|
ssession_show_usage
|
||
|
exit
|
||
|
fi
|
||
|
elif [ $# = 2 ]; then
|
||
|
if [ "$1" = "-mf" ]; then
|
||
|
mfile="$2"
|
||
|
isource="mfile"
|
||
|
else
|
||
|
ssession_show_usage
|
||
|
exit
|
||
|
fi
|
||
|
else
|
||
|
tfile="taskfile.txt"
|
||
|
fi
|
||
|
|
||
|
if [ "$mfile" = "" ]; then
|
||
|
if [ -d "$TMPDIR" ]; then
|
||
|
mfile="${TMPDIR}/Makefile.$$"
|
||
|
else
|
||
|
mfile="/tmp/Makefile.$$"
|
||
|
fi
|
||
|
fi
|
||
|
|
||
|
if [ "$isource" = "tfile" ]; then
|
||
|
ssession_log "Using taskfile \"$tfile\""
|
||
|
ssession_log "Creating makefile \"$mfile\""
|
||
|
|
||
|
ssession_makefile_create $mfile
|
||
|
ssession_makefile_add_all $tfile $mfile
|
||
|
ssession_makefile_add_task $tfile $mfile
|
||
|
ssession_start_qmake $mfile
|
||
|
ssession_makefile_destroy $mfile
|
||
|
else
|
||
|
ssession_log "Using makefile \"$mfile\""
|
||
|
|
||
|
ssession_start_qmake $mfile
|
||
|
fi
|
||
|
|