Home | History | Annotate | Line # | Download | only in sets
checkflist revision 1.20
      1   1.3    mikel #! /bin/sh --
      2   1.3    mikel #
      3  1.20    lukem #	$NetBSD: checkflist,v 1.20 2003/08/12 04:20:08 lukem Exp $
      4   1.3    mikel #
      5   1.3    mikel # Verify output of makeflist against contents of $DESTDIR.
      6   1.1      cgd 
      7  1.15    lukem if [ -z "$DESTDIR" ]; then
      8  1.15    lukem 	echo "DESTDIR must be set"
      9   1.1      cgd 	exit 1
     10  1.15    lukem fi
     11  1.15    lukem 
     12  1.15    lukem prog=${0##*/}
     13   1.1      cgd 
     14  1.20    lukem 
     15  1.20    lukem # Make sure we don't loop forever if mkdir will always fail.
     16  1.20    lukem if [ ! -d /tmp ]; then
     17  1.20    lukem 	echo /tmp is not a directory
     18  1.20    lukem 	exit 1
     19  1.20    lukem fi
     20  1.20    lukem 
     21  1.20    lukem if [ ! -w /tmp ]; then
     22  1.20    lukem 	echo /tmp is not writable
     23  1.20    lukem 	exit 1
     24  1.20    lukem fi
     25  1.20    lukem 
     26  1.20    lukem SDIR_BASE=/tmp/checkflist.$$
     27  1.20    lukem SDIR_SERIAL=0
     28  1.20    lukem 
     29  1.20    lukem while true; do
     30  1.20    lukem 	SDIR=${SDIR_BASE}.${SDIR_SERIAL}
     31  1.20    lukem 	mkdir -m 0700 ${SDIR} && break
     32  1.20    lukem 	SDIR_SERIAL=$((${SDIR_SERIAL} + 1))
     33  1.20    lukem done    
     34  1.20    lukem 
     35  1.20    lukem es=0
     36  1.20    lukem cleanup()
     37  1.20    lukem {
     38  1.20    lukem 	/bin/rm -rf $SDIR
     39  1.20    lukem 	if [ $es -gt 255 ] ; then
     40  1.20    lukem 		es=255
     41  1.20    lukem 	fi
     42  1.20    lukem 	exit $es
     43  1.20    lukem }
     44  1.20    lukem trap cleanup 0 2 3 13		# EXIT INT QUIT PIPE
     45  1.20    lukem 
     46  1.20    lukem 
     47   1.9     ross origin=.
     48  1.10    perry xargs=""
     49  1.10    perry dargs=""
     50  1.15    lukem metalog=
     51  1.10    perry 
     52  1.10    perry # handle args
     53  1.10    perry while : ; do
     54  1.10    perry 	case $1 in
     55  1.10    perry 	-x11)
     56  1.10    perry 		xargs="-x"
     57  1.18     tron 		origin="./etc/X11 ./etc/fonts ./usr/X11R6"
     58  1.10    perry 		;;
     59  1.10    perry 	-both)
     60  1.10    perry 		xargs="-b"
     61  1.10    perry 		;;
     62  1.15    lukem 	-M*)
     63  1.15    lukem 		metalog=$2; shift
     64  1.15    lukem 		;;
     65  1.10    perry 	-*)
     66  1.10    perry 		cat 1>&2 <<USAGE
     67  1.20    lukem Usage: ${prog} [-x11|-both] [-M metalog]
     68  1.10    perry 	-x11		check only x11 lists
     69  1.10    perry 	-both		check netbsd + x11 lists
     70  1.15    lukem 	-M metalog	metalog file
     71  1.10    perry USAGE
     72  1.10    perry 		exit 1
     73  1.10    perry 		;;
     74  1.10    perry 	*)
     75  1.10    perry 		break
     76  1.10    perry 		;;
     77  1.10    perry 	esac
     78  1.10    perry 	shift
     79  1.10    perry done
     80  1.10    perry 
     81  1.15    lukem if [ -n "$metalog" ]; then
     82  1.15    lukem 	case "$metalog" in
     83  1.15    lukem 	${DESTDIR}/*)
     84  1.17  thorpej 		# Metalog would be noticed, so make sure it gets
     85  1.17  thorpej 		# ignored.
     86  1.17  thorpej 		metalog="./${metalog#${DESTDIR}/}"
     87  1.15    lukem 		;;
     88  1.17  thorpej 	*)
     89  1.17  thorpej 		metalog=""
     90  1.15    lukem 	esac
     91  1.15    lukem fi
     92  1.15    lukem 
     93  1.15    lukem 
     94  1.20    lukem sh makeflist $xargs $dargs > $SDIR/flist
     95  1.10    perry 
     96  1.15    lukem (
     97  1.15    lukem 	cd $DESTDIR
     98  1.17  thorpej 	find $origin \( -type d -o -type f -o -type l \)
     99  1.17  thorpej ) | (
    100  1.17  thorpej 	while read line; do
    101  1.19    lukem 		case "$line" in
    102  1.19    lukem 		$metalog)
    103  1.19    lukem 			;;
    104  1.19    lukem 		*)
    105  1.19    lukem 			echo $line
    106  1.19    lukem 			;;
    107  1.19    lukem 		esac
    108  1.17  thorpej 	done
    109  1.20    lukem ) | sort > $SDIR/files
    110  1.15    lukem 
    111  1.20    lukem comm -23 $SDIR/flist $SDIR/files > $SDIR/missing
    112  1.20    lukem comm -13 $SDIR/flist $SDIR/files > $SDIR/extra
    113  1.15    lukem 
    114  1.20    lukem if [ -s $SDIR/extra ]; then
    115  1.20    lukem 	echo ""
    116  1.20    lukem 	echo "============  extra files  ==============="
    117  1.20    lukem 	echo "Files in DESTDIR but missing from flist."
    118  1.20    lukem 	echo "File is obsolete or flist is out of date ?"
    119  1.20    lukem 	echo "This is non-fatal."
    120  1.20    lukem 	echo "------------------------------------------"
    121  1.20    lukem 	cat $SDIR/extra
    122  1.20    lukem 	echo "=========  end of extra files  ==========="
    123  1.20    lukem 	echo ""
    124  1.20    lukem fi
    125  1.20    lukem 
    126  1.20    lukem if [ -s $SDIR/missing ]; then
    127  1.20    lukem 	echo ""
    128  1.20    lukem 	echo "===========  missing files  =============="
    129  1.20    lukem 	echo "Files in flist but missing from DESTDIR."
    130  1.20    lukem 	echo "File wasn't installed ?"
    131  1.20    lukem 	echo "------------------------------------------"
    132  1.20    lukem 	cat $SDIR/missing
    133  1.20    lukem 	echo "========  end of missing files  =========="
    134  1.20    lukem 	echo ""
    135  1.20    lukem 	es=1
    136  1.15    lukem fi
    137  1.20    lukem 
    138  1.20    lukem exit 0		# cleanup will exit with $es
    139