aboutsummaryrefslogtreecommitdiff
path: root/Tools
diff options
context:
space:
mode:
authorKris Kennaway <kris@FreeBSD.org>2004-03-08 01:56:16 +0000
committerKris Kennaway <kris@FreeBSD.org>2004-03-08 01:56:16 +0000
commitf2138752d24a8383445cc9298eb0ccb863b53fe3 (patch)
tree9f0867bc450e147b9a1b567309506221d9ec1bf3 /Tools
parent9ee56fac4b945aab7f52ec2e714dd1531be87b24 (diff)
downloadports-f2138752d24a8383445cc9298eb0ccb863b53fe3.tar.gz
ports-f2138752d24a8383445cc9298eb0ccb863b53fe3.zip
Notes
Diffstat (limited to 'Tools')
-rwxr-xr-xTools/portbuild/scripts/cleanup-chroots48
1 files changed, 48 insertions, 0 deletions
diff --git a/Tools/portbuild/scripts/cleanup-chroots b/Tools/portbuild/scripts/cleanup-chroots
new file mode 100755
index 000000000000..4caae9c91216
--- /dev/null
+++ b/Tools/portbuild/scripts/cleanup-chroots
@@ -0,0 +1,48 @@
+#!/bin/sh
+#
+# To be run on the client, this script looks for chroot directories that have not been
+# used in 20 minutes, as well as directories listed as 'in use' that have not been touched
+# in 24 hours (corresponding to port builds that have timed out or shut down uncleanly)
+# and prunes them to reclaim space.
+
+pb=/var/portbuild
+arch=$(cat /etc/arch)
+
+. ${pb}/${arch}/portbuild.conf
+
+old=$(find ${scratchdir}/*/chroot/* -prune -mmin +20 2> /dev/null)
+
+if [ -z "${old}" ]; then
+ exit 0
+fi
+
+# Prune out chroots with active builds
+for i in ${old}; do
+ if [ ! -d ${i}/used ]; then
+ old2="${i} ${old2}"
+ # Also remove "in use" chroots that were set up more than 24 hours ago
+ elif [ ! -z "`find $i/used -prune -mmin +1440`" ]; then
+ echo "cleanup-chroots: Found old files on `hostname`:"
+ ls -l ${i}/tmp ${i}/used
+ echo "${i} allegedly in use but >24 hours old"
+ old2="${i} ${old2}"
+ fi
+done
+
+if [ -z "${old2}" ]; then
+ exit 0
+fi
+
+# cleanup old NFS and devfs mounts
+for i in ${old2}; do
+ mounts=$(mount | grep $i | awk '{print $3}')
+ if [ ! -z "${mounts}" ]; then
+ umount -f ${mounts}
+ fi
+done
+
+mkdir -p ${scratchdir}/old
+mv ${old2} ${scratchdir}/old
+rm -rf ${scratchdir}/old 2> /dev/null
+chflags -R noschg ${scratchdir}/old
+rm -rf ${scratchdir}/old