#! /bin/sh -- # # $NetBSD: checkflist,v 1.21 2003/08/13 00:03:00 lukem Exp $ # # Verify output of makeflist against contents of $DESTDIR. if [ -z "$DESTDIR" ]; then echo "DESTDIR must be set" exit 1 fi prog=${0##*/} # Make sure we don't loop forever if mkdir will always fail. if [ ! -d /tmp ]; then echo /tmp is not a directory exit 1 fi if [ ! -w /tmp ]; then echo /tmp is not writable exit 1 fi SDIR_BASE=/tmp/checkflist.$$ SDIR_SERIAL=0 while true; do SDIR=${SDIR_BASE}.${SDIR_SERIAL} mkdir -m 0700 ${SDIR} && break SDIR_SERIAL=$((${SDIR_SERIAL} + 1)) done es=0 cleanup() { /bin/rm -rf $SDIR if [ $es -gt 255 ] ; then es=255 fi exit $es } trap cleanup 0 2 3 13 # EXIT INT QUIT PIPE origin=. xargs="" dargs="" metalog= # handle args while : ; do case $1 in -x11) xargs="-x" origin="./etc/X11 ./etc/fonts ./usr/X11R6" ;; -both) xargs="-b" ;; -M*) metalog=$2; shift ;; -*) cat 1>&2 < $SDIR/flist ( cd $DESTDIR find $origin \( -type d -o -type f -o -type l \) ) | ( while read line; do case "$line" in $metalog) ;; *) echo $line ;; esac done ) | sort > $SDIR/files comm -23 $SDIR/flist $SDIR/files > $SDIR/missing comm -13 $SDIR/flist $SDIR/files > $SDIR/extra if [ -s $SDIR/extra ]; then echo "" echo "============ extra files ===============" echo "Files in DESTDIR but missing from flist." echo "File is obsolete or flist is out of date ?" echo "------------------------------------------" cat $SDIR/extra echo "========= end of extra files ===========" echo "" es=1 fi if [ -s $SDIR/missing ]; then echo "" echo "=========== missing files ==============" echo "Files in flist but missing from DESTDIR." echo "File wasn't installed ?" echo "------------------------------------------" cat $SDIR/missing echo "======== end of missing files ==========" echo "" es=1 fi exit 0 # cleanup will exit with $es