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