checkflist revision 1.24
11.3Smikel#! /bin/sh --
21.3Smikel#
31.24Slukem#	$NetBSD: checkflist,v 1.24 2003/12/29 03:13:25 lukem Exp $
41.3Smikel#
51.3Smikel# Verify output of makeflist against contents of $DESTDIR.
61.1Scgd
71.15Slukemif [ -z "$DESTDIR" ]; then
81.15Slukem	echo "DESTDIR must be set"
91.1Scgd	exit 1
101.15Slukemfi
111.15Slukem
121.15Slukemprog=${0##*/}
131.1Scgd
141.24Slukem: ${HOST_SH=sh}
151.22Slukem: ${MKTEMP=mktemp}
161.22SlukemSDIR=$(${MKTEMP} -d /tmp/${prog}.XXXXXX)
171.20Slukem
181.20Slukemes=0
191.20Slukemcleanup()
201.20Slukem{
211.20Slukem	/bin/rm -rf $SDIR
221.20Slukem	if [ $es -gt 255 ] ; then
231.20Slukem		es=255
241.20Slukem	fi
251.20Slukem	exit $es
261.20Slukem}
271.20Slukemtrap cleanup 0 2 3 13		# EXIT INT QUIT PIPE
281.20Slukem
291.20Slukem
301.9Srossorigin=.
311.10Sperryxargs=""
321.10Sperrydargs=""
331.15Slukemmetalog=
341.22Slukemallowextra=false
351.22Slukemallowmissing=false
361.10Sperry
371.10Sperry# handle args
381.24Slukemwhile getopts xbM:em ch; do
391.24Slukem	case ${ch} in
401.24Slukem	x)
411.10Sperry		xargs="-x"
421.18Stron		origin="./etc/X11 ./etc/fonts ./usr/X11R6"
431.10Sperry		;;
441.24Slukem	b)
451.10Sperry		xargs="-b"
461.10Sperry		;;
471.24Slukem	M)
481.24Slukem		metalog=${OPTARG}
491.15Slukem		;;
501.24Slukem	e)
511.22Slukem		allowextra=true
521.22Slukem		;;
531.24Slukem	m)
541.22Slukem		allowmissing=true
551.22Slukem		;;
561.24Slukem	*)
571.10Sperry		cat 1>&2 <<USAGE
581.24SlukemUsage: ${prog} [-x|-b] [-M metalog] [-e] [-m]
591.24Slukem	-x		check only x11 lists
601.24Slukem	-b		check netbsd + x11 lists
611.15Slukem	-M metalog	metalog file
621.22Slukem	-e		extra files are not considered an error
631.22Slukem	-m		missing files are not considered an error
641.10SperryUSAGE
651.10Sperry		exit 1
661.10Sperry		;;
671.10Sperry	esac
681.10Sperrydone
691.24Slukemshift $((${OPTIND} - 1))
701.10Sperry
711.15Slukemif [ -n "$metalog" ]; then
721.15Slukem	case "$metalog" in
731.15Slukem	${DESTDIR}/*)
741.17Sthorpej		# Metalog would be noticed, so make sure it gets
751.17Sthorpej		# ignored.
761.17Sthorpej		metalog="./${metalog#${DESTDIR}/}"
771.15Slukem		;;
781.17Sthorpej	*)
791.17Sthorpej		metalog=""
801.15Slukem	esac
811.15Slukemfi
821.15Slukem
831.15Slukem
841.24Slukem${HOST_SH} ./makeflist $xargs $dargs > $SDIR/flist
851.10Sperry
861.15Slukem(
871.15Slukem	cd $DESTDIR
881.23Sdmcmahil	find $origin \( -type d -o -type f -o -type l \) -print
891.17Sthorpej) | (
901.17Sthorpej	while read line; do
911.19Slukem		case "$line" in
921.19Slukem		$metalog)
931.19Slukem			;;
941.19Slukem		*)
951.19Slukem			echo $line
961.19Slukem			;;
971.19Slukem		esac
981.17Sthorpej	done
991.20Slukem) | sort > $SDIR/files
1001.15Slukem
1011.20Slukemcomm -23 $SDIR/flist $SDIR/files > $SDIR/missing
1021.20Slukemcomm -13 $SDIR/flist $SDIR/files > $SDIR/extra
1031.15Slukem
1041.20Slukemif [ -s $SDIR/extra ]; then
1051.20Slukem	echo ""
1061.20Slukem	echo "============  extra files  ==============="
1071.20Slukem	echo "Files in DESTDIR but missing from flist."
1081.20Slukem	echo "File is obsolete or flist is out of date ?"
1091.22Slukem	if ${allowextra}; then
1101.22Slukem		echo "This is non-fatal."
1111.22Slukem	else
1121.22Slukem		es=1
1131.22Slukem	fi
1141.20Slukem	echo "------------------------------------------"
1151.20Slukem	cat $SDIR/extra
1161.20Slukem	echo "=========  end of extra files  ==========="
1171.20Slukem	echo ""
1181.20Slukemfi
1191.20Slukem
1201.20Slukemif [ -s $SDIR/missing ]; then
1211.20Slukem	echo ""
1221.20Slukem	echo "===========  missing files  =============="
1231.20Slukem	echo "Files in flist but missing from DESTDIR."
1241.20Slukem	echo "File wasn't installed ?"
1251.22Slukem	if ${allowmissing}; then
1261.22Slukem		echo "This is non-fatal."
1271.22Slukem	else
1281.22Slukem		es=1
1291.22Slukem	fi
1301.20Slukem	echo "------------------------------------------"
1311.20Slukem	cat $SDIR/missing
1321.20Slukem	echo "========  end of missing files  =========="
1331.20Slukem	echo ""
1341.15Slukemfi
1351.20Slukem
1361.20Slukemexit 0		# cleanup will exit with $es
137