#!/bin/sh # # buildfailure cleanup() { echo "Problem writing new failure file!" rm -f failure.new exit 1 } # configurable variables pb=/var/portbuild usage () { echo "usage: buildfailure arch branch buildid pkgname" exit 1 } if [ $# -ne 4 ]; then usage fi arch=$1 branch=$2 buildid=$3 pkgname=$4 shift 4 builddir=${pb}/${arch}/${branch}/builds/${buildid} . ${pb}/${arch}/portbuild.conf . ${pb}/scripts/buildenv buildenv ${pb} ${arch} ${branch} ${builddir} # Don't pick up installed packages from the host export LOCALBASE=/nonexistentlocal export X11BASE=/nonexistentx index=${PORTSDIR}/${INDEXFILE} portloc=$(grep "^$pkgname|" ${index} | cut -f 2 -d \| | sed s,/usr/ports/,,) pkgbase=$(cd ${PORTSDIR}/${portloc}/ && make -V PKGBASE) cd ${pb}/${arch}/${branch} entry=$(grep "^${portloc}|" failure) date=$(date +%s) IFS='|' if [ ! -z "$entry" ]; then count=$(echo $entry | cut -f 6 -d \ ) olddate=$(echo $entry | cut -f 4 -d \ ) (grep -v "^${portloc}|" failure > failure.new) || cleanup (echo "${portloc}|${pkgbase}|${pkgname}|${olddate}|${date}|$((${count}+1))" >> failure.new) || cleanup mv failure.new failure else (echo "${portloc}|${pkgbase}|${pkgname}|${date}|${date}|1" >> failure) || cleanup fi link=${pb}/${arch}/${branch}/latest/${portloc} mkdir -p $(dirname ${link}) errorloc=$(realpath ${builddir}/errors/${pkgname}.log) ln -sf ${errorloc} ${link}