NetBSD/distrib/sets/checkflist
dmcmahill 4134c82db7 add a -print to the find statement to avoid problems on solaris where
each file/directory/link is printed twice.  Fixes PR23270
2003-10-26 14:21:49 +00:00

139 lines
2.3 KiB
Bash
Executable File

#! /bin/sh --
#
# $NetBSD: checkflist,v 1.23 2003/10/26 14:21:49 dmcmahill Exp $
#
# Verify output of makeflist against contents of $DESTDIR.
if [ -z "$DESTDIR" ]; then
echo "DESTDIR must be set"
exit 1
fi
prog=${0##*/}
: ${MKTEMP=mktemp}
SDIR=$(${MKTEMP} -d /tmp/${prog}.XXXXXX)
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=
allowextra=false
allowmissing=false
# handle args
while : ; do
case $1 in
-x11)
xargs="-x"
origin="./etc/X11 ./etc/fonts ./usr/X11R6"
;;
-both)
xargs="-b"
;;
-M)
metalog=$2; shift
;;
-e)
allowextra=true
;;
-m)
allowmissing=true
;;
-*)
cat 1>&2 <<USAGE
Usage: ${prog} [-x11|-both] [-M metalog] [-e] [-m]
-x11 check only x11 lists
-both check netbsd + x11 lists
-M metalog metalog file
-e extra files are not considered an error
-m missing files are not considered an error
USAGE
exit 1
;;
*)
break
;;
esac
shift
done
if [ -n "$metalog" ]; then
case "$metalog" in
${DESTDIR}/*)
# Metalog would be noticed, so make sure it gets
# ignored.
metalog="./${metalog#${DESTDIR}/}"
;;
*)
metalog=""
esac
fi
sh makeflist $xargs $dargs > $SDIR/flist
(
cd $DESTDIR
find $origin \( -type d -o -type f -o -type l \) -print
) | (
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 ?"
if ${allowextra}; then
echo "This is non-fatal."
else
es=1
fi
echo "------------------------------------------"
cat $SDIR/extra
echo "========= end of extra files ==========="
echo ""
fi
if [ -s $SDIR/missing ]; then
echo ""
echo "=========== missing files =============="
echo "Files in flist but missing from DESTDIR."
echo "File wasn't installed ?"
if ${allowmissing}; then
echo "This is non-fatal."
else
es=1
fi
echo "------------------------------------------"
cat $SDIR/missing
echo "======== end of missing files =========="
echo ""
fi
exit 0 # cleanup will exit with $es