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