139 lines
2.4 KiB
Bash
Executable File
139 lines
2.4 KiB
Bash
Executable File
#! /bin/sh --
|
|
#
|
|
# $NetBSD: checkflist,v 1.26 2005/10/21 02:41:14 jmc Exp $
|
|
#
|
|
# Verify output of makeflist against contents of $DESTDIR.
|
|
|
|
if [ -z "$DESTDIR" ]; then
|
|
echo "DESTDIR must be set"
|
|
exit 1
|
|
fi
|
|
|
|
prog=${0##*/}
|
|
|
|
: ${HOST_SH:=sh}
|
|
: ${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 getopts xbM:em ch; do
|
|
case ${ch} in
|
|
x)
|
|
xargs="-x"
|
|
origin="./etc/X11 ./etc/fonts ./usr/X11R6"
|
|
;;
|
|
b)
|
|
xargs="-b"
|
|
;;
|
|
M)
|
|
metalog=${OPTARG}
|
|
;;
|
|
e)
|
|
allowextra=true
|
|
;;
|
|
m)
|
|
allowmissing=true
|
|
;;
|
|
*)
|
|
cat 1>&2 <<USAGE
|
|
Usage: ${prog} [-x|-b] [-M metalog] [-e] [-m]
|
|
-x check only x11 lists
|
|
-b 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
|
|
;;
|
|
esac
|
|
done
|
|
shift $((${OPTIND} - 1))
|
|
|
|
if [ -n "$metalog" ]; then
|
|
case "$metalog" in
|
|
${DESTDIR}/*)
|
|
# Metalog would be noticed, so make sure it gets
|
|
# ignored.
|
|
metalog="./${metalog#${DESTDIR}/}"
|
|
;;
|
|
*)
|
|
metalog=""
|
|
esac
|
|
fi
|
|
|
|
|
|
${HOST_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
|
|
count=$(awk 'END {print NR}' $SDIR/extra)
|
|
echo ""
|
|
echo "============ ${count} 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 ${count} extra files ==========="
|
|
echo ""
|
|
fi
|
|
|
|
if [ -s $SDIR/missing ]; then
|
|
count=$(awk 'END {print NR}' $SDIR/missing)
|
|
echo ""
|
|
echo "=========== ${count} 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 ${count} missing files =========="
|
|
echo ""
|
|
fi
|
|
|
|
exit 0 # cleanup will exit with $es
|