Home | History | Annotate | Line # | Download | only in sets
checkflist revision 1.21
      1   1.3    mikel #! /bin/sh --
      2   1.3    mikel #
      3  1.21    lukem #	$NetBSD: checkflist,v 1.21 2003/08/13 00:03:00 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 "------------------------------------------"
    120  1.20    lukem 	cat $SDIR/extra
    121  1.20    lukem 	echo "=========  end of extra files  ==========="
    122  1.20    lukem 	echo ""
    123  1.21    lukem 	es=1
    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