aboutsummaryrefslogtreecommitdiff
path: root/Tools
diff options
context:
space:
mode:
authorKris Kennaway <kris@FreeBSD.org>2003-10-13 00:06:09 +0000
committerKris Kennaway <kris@FreeBSD.org>2003-10-13 00:06:09 +0000
commite44489560196b6cfd02e3240ace46803343aff62 (patch)
tree8d9f984f6cb88f183249df1a8d3fe59991e269f0 /Tools
parent81ffd01a06a33c805b0c5d574fd4642cf053f2c9 (diff)
downloadports-e44489560196b6cfd02e3240ace46803343aff62.tar.gz
ports-e44489560196b6cfd02e3240ace46803343aff62.zip
Notes
Diffstat (limited to 'Tools')
-rwxr-xr-xTools/portbuild/scripts/prunefailure114
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
+
+