checkflist revision 1.20
11.3Smikel#! /bin/sh -- 21.3Smikel# 31.20Slukem# $NetBSD: checkflist,v 1.20 2003/08/12 04:20:08 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.20Slukem 151.20Slukem# Make sure we don't loop forever if mkdir will always fail. 161.20Slukemif [ ! -d /tmp ]; then 171.20Slukem echo /tmp is not a directory 181.20Slukem exit 1 191.20Slukemfi 201.20Slukem 211.20Slukemif [ ! -w /tmp ]; then 221.20Slukem echo /tmp is not writable 231.20Slukem exit 1 241.20Slukemfi 251.20Slukem 261.20SlukemSDIR_BASE=/tmp/checkflist.$$ 271.20SlukemSDIR_SERIAL=0 281.20Slukem 291.20Slukemwhile true; do 301.20Slukem SDIR=${SDIR_BASE}.${SDIR_SERIAL} 311.20Slukem mkdir -m 0700 ${SDIR} && break 321.20Slukem SDIR_SERIAL=$((${SDIR_SERIAL} + 1)) 331.20Slukemdone 341.20Slukem 351.20Slukemes=0 361.20Slukemcleanup() 371.20Slukem{ 381.20Slukem /bin/rm -rf $SDIR 391.20Slukem if [ $es -gt 255 ] ; then 401.20Slukem es=255 411.20Slukem fi 421.20Slukem exit $es 431.20Slukem} 441.20Slukemtrap cleanup 0 2 3 13 # EXIT INT QUIT PIPE 451.20Slukem 461.20Slukem 471.9Srossorigin=. 481.10Sperryxargs="" 491.10Sperrydargs="" 501.15Slukemmetalog= 511.10Sperry 521.10Sperry# handle args 531.10Sperrywhile : ; do 541.10Sperry case $1 in 551.10Sperry -x11) 561.10Sperry xargs="-x" 571.18Stron origin="./etc/X11 ./etc/fonts ./usr/X11R6" 581.10Sperry ;; 591.10Sperry -both) 601.10Sperry xargs="-b" 611.10Sperry ;; 621.15Slukem -M*) 631.15Slukem metalog=$2; shift 641.15Slukem ;; 651.10Sperry -*) 661.10Sperry cat 1>&2 <<USAGE 671.20SlukemUsage: ${prog} [-x11|-both] [-M metalog] 681.10Sperry -x11 check only x11 lists 691.10Sperry -both check netbsd + x11 lists 701.15Slukem -M metalog metalog file 711.10SperryUSAGE 721.10Sperry exit 1 731.10Sperry ;; 741.10Sperry *) 751.10Sperry break 761.10Sperry ;; 771.10Sperry esac 781.10Sperry shift 791.10Sperrydone 801.10Sperry 811.15Slukemif [ -n "$metalog" ]; then 821.15Slukem case "$metalog" in 831.15Slukem ${DESTDIR}/*) 841.17Sthorpej # Metalog would be noticed, so make sure it gets 851.17Sthorpej # ignored. 861.17Sthorpej metalog="./${metalog#${DESTDIR}/}" 871.15Slukem ;; 881.17Sthorpej *) 891.17Sthorpej metalog="" 901.15Slukem esac 911.15Slukemfi 921.15Slukem 931.15Slukem 941.20Slukemsh makeflist $xargs $dargs > $SDIR/flist 951.10Sperry 961.15Slukem( 971.15Slukem cd $DESTDIR 981.17Sthorpej find $origin \( -type d -o -type f -o -type l \) 991.17Sthorpej) | ( 1001.17Sthorpej while read line; do 1011.19Slukem case "$line" in 1021.19Slukem $metalog) 1031.19Slukem ;; 1041.19Slukem *) 1051.19Slukem echo $line 1061.19Slukem ;; 1071.19Slukem esac 1081.17Sthorpej done 1091.20Slukem) | sort > $SDIR/files 1101.15Slukem 1111.20Slukemcomm -23 $SDIR/flist $SDIR/files > $SDIR/missing 1121.20Slukemcomm -13 $SDIR/flist $SDIR/files > $SDIR/extra 1131.15Slukem 1141.20Slukemif [ -s $SDIR/extra ]; then 1151.20Slukem echo "" 1161.20Slukem echo "============ extra files ===============" 1171.20Slukem echo "Files in DESTDIR but missing from flist." 1181.20Slukem echo "File is obsolete or flist is out of date ?" 1191.20Slukem echo "This is non-fatal." 1201.20Slukem echo "------------------------------------------" 1211.20Slukem cat $SDIR/extra 1221.20Slukem echo "========= end of extra files ===========" 1231.20Slukem echo "" 1241.20Slukemfi 1251.20Slukem 1261.20Slukemif [ -s $SDIR/missing ]; then 1271.20Slukem echo "" 1281.20Slukem echo "=========== missing files ==============" 1291.20Slukem echo "Files in flist but missing from DESTDIR." 1301.20Slukem echo "File wasn't installed ?" 1311.20Slukem echo "------------------------------------------" 1321.20Slukem cat $SDIR/missing 1331.20Slukem echo "======== end of missing files ==========" 1341.20Slukem echo "" 1351.20Slukem es=1 1361.15Slukemfi 1371.20Slukem 1381.20Slukemexit 0 # cleanup will exit with $es 139