Skip to content
Snippets Groups Projects
wmakeScheduler.old 2.19 KiB
Newer Older
#!/bin/bash
#------------------------------------------------------------------------------
# =========                 |
# \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
#  \\    /   O peration     |
#   \\  /    A nd           | Copyright (C) 1991-2007 OpenCFD Ltd.
#    \\/     M anipulation  |
#-------------------------------------------------------------------------------
# License
#     This file is part of OpenFOAM.
#
#     OpenFOAM is free software; you can redistribute it and/or modify it
#     under the terms of the GNU General Public License as published by the
#     Free Software Foundation; either version 2 of the License, or (at your
#     option) any later version.
#
#     OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
#     ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
#     FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
#     for more details.
#
#     You should have received a copy of the GNU General Public License
#     along with OpenFOAM; if not, write to the Free Software Foundation,
#     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#
# Script
#     wmakeScheduler
#
# Description
#     Scheduler for network distributed compilations using wmake
#
#-------------------------------------------------------------------------------

lockDir=$HOME/.wmakeScheduler

eval "cores=$WM_HOSTS"
n=${#cores[@]}

while [ true ]
do
    let "w = 15*$RANDOM"
    usleep $w
    for ((i=0; i<n; i++))
    do
        core=${cores[$i]}
        host=${cores[$i]%:*}
        #echo "** i:$i core:$core host:$host"
        lock=$lockDir/$core
        if [ ! -f $lock ]
        then
            touch $lock
            #echo "** Using core $core"
            if [ "$host" = "$HOST" ]
            then
                $*
            else
                cmd=`echo $* | sed s/\"/\'\"\'/g`
                #echo "ssh $host \"cd $PWD; $cmd\""
                ssh $host "cd $PWD; $cmd"
            fi
            retval=$?
            #echo "** Releasing core $core"
            rm -f $lock
            exit $retval
        fi
    done
done


#------------------------------------------------------------------------------