1
0
mirror of https://git.FreeBSD.org/ports.git synced 2025-01-16 07:58:04 +00:00

* Cleanup

* Catch up to build ID directory changes
* Remove need for /etc/arch file
This commit is contained in:
Kris Kennaway 2008-07-26 14:12:53 +00:00
parent 9f29c725dd
commit 1d5ba88d7a
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=217590

View File

@ -1,89 +1,90 @@
#!/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.
# To be run on the client, this script looks for chroot directories
# that have not been used in 60 minutes, as well as directories listed
# as 'in use' that have not been touched in 5 days (corresponding to
# port builds that have timed out or shut down uncleanly) and prunes
# them to reclaim space.
kill_procs()
{
dir=$1
dir=$1
pids="XXX"
while [ ! -z "${pids}" ]; do
pids=$(fstat -f "$dir" | tail +2 | awk '{print $3}' | sort -u)
if [ ! -z "${pids}" ]; then
echo "Killing off pids in ${dir}"
ps -p $pids
kill -KILL ${pids} 2> /dev/null
sleep 2
fi
done
pids="XXX"
while [ ! -z "${pids}" ]; do
pids=$(fstat -f "$dir" | tail +2 | awk '{print $3}' | sort -u)
if [ ! -z "${pids}" ]; then
echo "Killing off pids in ${dir}"
ps -p $pids
kill -KILL ${pids} 2> /dev/null
sleep 2
fi
done
}
cleanup_mount() {
chroot=$1
mount=$2
chroot=$1
mount=$2
if [ -d ${chroot}${mount} ]; then
mdir=$(fstat -f ${chroot}${mount} | head -2 | tail -1 | awk '{print $5}')
if [ "${mdir}" = "MOUNT" ]; then
umount ${chroot}${mount} || echo "Cleanup of ${chroot}${mount} failed!"
if [ -d ${chroot}${mount} ]; then
mdir=$(fstat -f ${chroot}${mount} | head -2 | tail -1 | awk '{print $5}')
if [ "${mdir}" = "MOUNT" ]; then
umount ${chroot}${mount} || echo "Cleanup of ${chroot}${mount} failed!"
fi
if [ "${mdir}" = "${chroot}${mount}" ]; then
kill_procs ${chroot}${mount}
umount ${chroot}${mount} || echo "Cleanup of ${chroot}${mount} failed!"
fi
fi
if [ "${mdir}" = "${chroot}${mount}" ]; then
kill_procs ${chroot}${mount}
umount ${chroot}${mount} || echo "Cleanup of ${chroot}${mount} failed!"
fi
fi
}
pb=/var/portbuild
arch=$(cat /etc/arch)
arch=$(uname -m)
. ${pb}/${arch}/portbuild.conf
. ${pb}/${arch}/portbuild.$(hostname)
if [ "${use_zfs}" = "1" ]; then
old=$(find ${scratchdir}/*/* -prune -mmin +20 2> /dev/null)
old=$(find ${scratchdir}/*/*/* -prune -mmin +60 2> /dev/null)
else
old=$(find ${scratchdir}/*/chroot/* -prune -mmin +20 2> /dev/null)
old=$(find ${scratchdir}/*/*/chroot/* -prune -mmin +60 2> /dev/null)
fi
if [ -z "${old}" ]; then
exit 0
exit 0
fi
# Prune out chroots with active builds
for i in ${old}; do
if [ ! -d ${i}/used ]; then
old2="${i} ${old2}"
if [ ! -d ${i}/used ]; then
old2="${i} ${old2}"
# Also remove "in use" chroots that were set up more than 5 days ago
elif [ ! -z "`find $i/used -prune -mmin +7200`" ]; then
echo "cleanup-chroots: Found old files on `hostname`:"
ls -l ${i}/tmp ${i}/used
echo "${i} allegedly in use but >5 days old"
old2="${i} ${old2}"
fi
elif [ ! -z "`find $i/used -prune -mmin +7200`" ]; then
echo "cleanup-chroots: Found old files on `hostname`:"
ls -l ${i}/tmp ${i}/used
echo "${i} allegedly in use but >5 days old"
old2="${i} ${old2}"
fi
done
if [ -z "${old2}" ]; then
exit 0
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
for j in ${mounts}; do
mounts=$(mount | grep $i | awk '{print $3}')
if [ ! -z "${mounts}" ]; then
for j in ${mounts}; do
umount ${j} || cleanup_mount ${j}
done
umount ${i}/compat/linux/proc || cleanup_mount ${i}/compat/linux/proc
fi
if [ "${use_zfs}" != "1" -a "${use_md_swap}" = "1" ]; then
chrootnum=$(basename $i)
umount -f /dev/md${i}
mdconfig -d -u ${chrootnum}
fi
done
umount ${i}/compat/linux/proc || cleanup_mount ${i}/compat/linux/proc
fi
if [ "${use_zfs}" != "1" -a "${use_md_swap}" = "1" ]; then
chrootnum=$(basename $i)
umount -f /dev/md${i}
mdconfig -d -u ${chrootnum}
fi
done
mkdir -p ${scratchdir}/old