summaryrefslogtreecommitdiff
path: root/Tools/portbuild
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/portbuild
parentBROKEN 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 'Tools/portbuild')
-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
+
+