diff options
Diffstat (limited to 'Tools')
-rwxr-xr-x | Tools/portbuild/scripts/checkmachines | 33 | ||||
-rwxr-xr-x | Tools/portbuild/scripts/getmachine | 53 | ||||
-rwxr-xr-x | Tools/portbuild/scripts/pollmachine | 33 | ||||
-rwxr-xr-x | Tools/portbuild/scripts/releasemachine | 29 |
4 files changed, 119 insertions, 29 deletions
diff --git a/Tools/portbuild/scripts/checkmachines b/Tools/portbuild/scripts/checkmachines index 7f32bac93128..c6108d63b0a4 100755 --- a/Tools/portbuild/scripts/checkmachines +++ b/Tools/portbuild/scripts/checkmachines @@ -24,37 +24,12 @@ while true; do for i in ${arches}; do mlist=${buildroot}/${i}/mlist - unset DISPLAY - - min=99 set $(cat $mlist) - while [ $# -gt 1 ]; do + while [ $# -gt 0 ]; do m=$1 - l=$2 - if (/usr/local/bin/nc -w 5 $m infoseek > ${buildroot}/${i}/loads/$m < /dev/null); then - num=$(awk '{print $1}' ${buildroot}/${i}/loads/$m) - if [ "x$num" = "x" ]; then - # logger "checkmachines: file ${buildroot}/${i}/loads/$m is empty" - num=99 - fi - else - # Don't ever want to list machines we couldn't connect to - num=999 - fi - - num=$(($num / $l)) - - if [ $num -lt $min ]; then - mach=$m - min=$num - elif [ $num = $min ]; then - mach="$mach $m" - fi - - shift 2 - + lockf ${buildroot}/${i}/queue/.lock ${buildroot}/scripts/pollmachine ${i} ${m} + shift 1 done - echo "$mach" > ${buildroot}/${i}/ulist - done + sleep 120 done diff --git a/Tools/portbuild/scripts/getmachine b/Tools/portbuild/scripts/getmachine new file mode 100755 index 000000000000..849d300e6270 --- /dev/null +++ b/Tools/portbuild/scripts/getmachine @@ -0,0 +1,53 @@ +#!/bin/sh +# +# Choose the least-loaded machine in the queue dir +# Called with lock held +# We know that everything in this directory has space for another job + +pb=$1 +arch=$2 +branch=$3 + +qdir=${pb}/${arch}/queue + +cd $qdir +set * +if [ "$1" = "*" ]; then + echo "" + exit 1 +fi + +min=9999 +while [ $# -gt 0 ]; do + m=$1 + num=$(cat $m) + if [ $num -lt $min ]; then + mach=$m + min=$num + elif [ $num -eq $min ]; then + mach="${mach} ${m}" + fi + shift +done + +if [ "$min" = 9999 -o -z "${mach}" ]; then + echo "" + exit 1 +fi + +# Choose highest-priority machine that is free +mach=$(echo ${mach} | tr -s ' ' '\n' | grep -F -f - ${pb}/${arch}/mlist | head -1) + +. ${pb}/${arch}/portbuild.conf +test -f ${pb}/${arch}/portbuild.${mach} && . ${pb}/${arch}/portbuild.${mach} + +# Now that we've found a machine, register our claim in the queue +if [ "$((${min}+1))" -ge "${maxjobs}" ]; then + rm ${mach} +else + echo $(($min+1)) > ${mach} +fi + +# Report to caller +echo ${mach} +exit 0 diff --git a/Tools/portbuild/scripts/pollmachine b/Tools/portbuild/scripts/pollmachine new file mode 100755 index 000000000000..75cd9885ddee --- /dev/null +++ b/Tools/portbuild/scripts/pollmachine @@ -0,0 +1,33 @@ +#!/bin/sh + +buildroot=/var/portbuild + +i=$1 +m=$2 +if [ "$3" = "-queue" ]; then + queue=1 +else + queue=0 +fi + +infoseek_host=$m +infoseek_port=infoseek +. ${buildroot}/${i}/portbuild.conf +if [ -f ${buildroot}/${i}/portbuild.${m} ]; then + . ${buildroot}/${i}/portbuild.${m} +fi +if (/usr/local/bin/nc -w 5 ${infoseek_host} ${infoseek_port} > ${buildroot}/${i}/loads/$m < /dev/null); then + if [ "${queue}" = 1 ]; then + num=$(awk '{print $1}' ${buildroot}/${i}/loads/$m) + if [ "$num" -lt "${maxjobs}" ]; then + echo ${num} > ${buildroot}/${i}/queue/$m + chown ports-${i} ${buildroot}/${i}/queue/$m + else + rm -f ${buildroot}/${i}/queue/$m + fi + fi +else + rm -f ${buildroot}/${i}/queue/$m + exit 1 +fi +exit 0 diff --git a/Tools/portbuild/scripts/releasemachine b/Tools/portbuild/scripts/releasemachine new file mode 100755 index 000000000000..66d23b193845 --- /dev/null +++ b/Tools/portbuild/scripts/releasemachine @@ -0,0 +1,29 @@ +#!/bin/sh + +buildroot=/var/portbuild + +i=$1 +m=$2 + +infoseek_host=$m +infoseek_port=infoseek +. ${buildroot}/${i}/portbuild.conf +if [ -f ${buildroot}/${i}/portbuild.${m} ]; then + . ${buildroot}/${i}/portbuild.${m} +fi + +q=${buildroot}/${i}/queue/$m +if [ -f ${q} ]; then + num=$(cat $q) +else + num=${maxjobs} +fi + +if [ "$num" -gt 0 ]; then + echo $((${num}-1)) > $q +else + echo 0 > $q +fi + +chown ports-${i} ${q} +exit 0 |