#!/bin/sh # $FreeBSD: ports/Tools/portbuild/scripts/dopackages.wrapper,v 1.5 2010/06/25 23:16:46 linimon Exp $ # server-side script which wraps the dopackages script # NOTE: rearranged 20100615 to not have to be linked to dopackages.N # configurable variables pbc=${PORTBUILD_CHECKOUT:-/a/portbuild} pbd=${PORTBUILD_DATA:-/a/portbuild} if [ $# -lt 3 ]; then echo "usage: $0 [ ...]" exit 1 fi arch=$1 branch=$2 buildid=$3 shift 3 . ${pbc}/conf/server.conf . ${pbc}/scripts/buildenv if ! validate_env ${arch} ${branch} ; then echo "dopackages.wrapper: invalid build environment: \"${arch}/${branch}\"" exit 1 fi buildid2=$(resolve ${pbd} ${arch} ${branch} ${buildid}) if [ -z "${buildid2}" ]; then echo "dopackages.wrapper: build ID \"${buildid}\" does not exist for \"${arch}/${branch}\"" exit 1 fi lock=${pbd}/${arch}/${branch}/${buildid2}.lock # datestamp will be used as buildid iff the latest/previous dance # is needed, but in any case, it distinguishes all logfile names # (e.g. for restarted and continued builds, there will be unique # lognames for each attempt.) datestamp=$(date '+%Y%m%d%H%M%S')"."`hostname -s` logdir=${pbd}/${arch}/archive/buildlogs if [ ! -d ${logdir} ]; then echo "use 'build create' to create the ${logdir} directory before trying dopackages" exit 1 fi logname=${logdir}/log.${branch}.${datestamp} dorun() { lockf -k -t 0 ${lock} ${pbc}/scripts/dopackages ${arch} ${branch} ${buildid2} ${datestamp} $@ 2>&1 \ | tee ${logname} } dorun $@ || (echo "dopackages.wrapper: build failed."; exit 1)