diff options
author | Kris Kennaway <kris@FreeBSD.org> | 2003-10-13 00:06:09 +0000 |
---|---|---|
committer | Kris Kennaway <kris@FreeBSD.org> | 2003-10-13 00:06:09 +0000 |
commit | e44489560196b6cfd02e3240ace46803343aff62 (patch) | |
tree | 8d9f984f6cb88f183249df1a8d3fe59991e269f0 /Tools/portbuild/scripts/prunefailure | |
parent | BROKEN on 5.x: does not compile (diff) |
Add a script that prunes the contents of the failure and newfailure files
of stale entries (removed ports, ports listed in duds that were mistakenly
built, malformed entries) and refreshes the version of entries to the
latest in INDEX. This must be run under lockf (see the comments in the
script) to avoid racing with portbuild which also tries to write to
these files.
Notes
Notes:
svn path=/head/; revision=90961
Diffstat (limited to '')
-rwxr-xr-x | Tools/portbuild/scripts/prunefailure | 114 |
1 files changed, 114 insertions, 0 deletions
diff --git a/Tools/portbuild/scripts/prunefailure b/Tools/portbuild/scripts/prunefailure new file mode 100755 index 000000000000..3d559750bcf5 --- /dev/null +++ b/Tools/portbuild/scripts/prunefailure @@ -0,0 +1,114 @@ +#!/bin/sh +# +# Prune the failure and newfailure files of stale entries +# +# This must be called via: +# +# lockf ${pb}/${arch}/${branch}/failure.lock ${pb}/scripts/prunefailure ${arch} ${branch} +# +# to avoid racing with any package builds in progress that might try to append to +# these files. + +# configurable variables +pb=/var/portbuild + +cleanup() { + echo "Problem writing new failure file!" + rm failure.new + exit 1 +} + +if [ $# -ne 2 ]; then + echo "prunefailure <arch> <branch>" + exit 1 +fi + +arch=$1 +branch=$2 +shift 2 + +. ${pb}/${arch}/portbuild.conf +. ${pb}/scripts/buildenv + +buildenv ${pb} ${arch} ${branch} + +home=${pb}/${arch}/${branch} +cd $home + +pkgdir=$home/packages/All +index=${PORTSDIR}/${INDEXFILE} + +if [ "`wc -l $index | awk '{print $1}'`" -lt 9000 ]; then + echo "INDEX is corrupted, terminating!" + exit 1 +fi + +echo "===> Pruning old failure file" + +rm -f failure.new +IFS='|' +while read dir name ver date count; do + + if [ -z "$dir" -o -z "$name" -o -z "$ver" -o -z "$date" -o -z "$count" ]; then + echo Malformed entry "$dir|$name|$ver|$date|$count" + continue + fi + + entry=$(grep "|/usr/ports/$dir|" $index) + if [ -z "$entry" ]; then + echo $dir not in index + continue + fi + + newver=$(echo $entry | awk '{print $1}') + + if [ -e "$home/packages/All/$newver${PKGSUFFIX}" ]; then + echo "$newver package exists, should not still be here!" + continue + fi + + if grep -q $newver $home/duds.orig; then + echo "$newver listed in duds, should not be here" + continue + fi + + (echo "$dir|$name|$newver|$date|$count" >> $home/failure.new) || cleanup +done < $home/failure + +mv failure.new failure + +echo "===> Pruning old newfailure file" + +rm -f newfailure.new +IFS='|' +while read dir name ver date; do + if [ -z "$dir" -o -z "$name" -o -z "$ver" -o -z "$date" ]; then + echo Malformed entry "$dir|$name|$ver|$date|$count" + continue + fi + + entry=$(grep "|/usr/ports/$dir|" $index) + + if [ -z "$entry" ]; then + echo $dir not in index + continue + fi + + newver=$(echo $entry | awk '{print $1}') + + if [ -e "$home/packages/All/$newver${PKGSUFFIX}" ]; then + echo "$newver package exists, should not still be here!" + continue + fi + + if grep -q $newver $home/duds.orig; then + echo "$newver listed in duds, should not be here" + continue + fi + + (echo "$dir|$name|$newver|$date" >> $home/newfailure.new) || cleanup +done < $home/newfailure + +mv newfailure.new newfailure + + |