1 1.3 mikel #! /bin/sh -- 2 1.3 mikel # 3 1.24 lukem # $NetBSD: checkflist,v 1.24 2003/12/29 03:13:25 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.24 lukem : ${HOST_SH=sh} 15 1.22 lukem : ${MKTEMP=mktemp} 16 1.22 lukem SDIR=$(${MKTEMP} -d /tmp/${prog}.XXXXXX) 17 1.20 lukem 18 1.20 lukem es=0 19 1.20 lukem cleanup() 20 1.20 lukem { 21 1.20 lukem /bin/rm -rf $SDIR 22 1.20 lukem if [ $es -gt 255 ] ; then 23 1.20 lukem es=255 24 1.20 lukem fi 25 1.20 lukem exit $es 26 1.20 lukem } 27 1.20 lukem trap cleanup 0 2 3 13 # EXIT INT QUIT PIPE 28 1.20 lukem 29 1.20 lukem 30 1.9 ross origin=. 31 1.10 perry xargs="" 32 1.10 perry dargs="" 33 1.15 lukem metalog= 34 1.22 lukem allowextra=false 35 1.22 lukem allowmissing=false 36 1.10 perry 37 1.10 perry # handle args 38 1.24 lukem while getopts xbM:em ch; do 39 1.24 lukem case ${ch} in 40 1.24 lukem x) 41 1.10 perry xargs="-x" 42 1.18 tron origin="./etc/X11 ./etc/fonts ./usr/X11R6" 43 1.10 perry ;; 44 1.24 lukem b) 45 1.10 perry xargs="-b" 46 1.10 perry ;; 47 1.24 lukem M) 48 1.24 lukem metalog=${OPTARG} 49 1.15 lukem ;; 50 1.24 lukem e) 51 1.22 lukem allowextra=true 52 1.22 lukem ;; 53 1.24 lukem m) 54 1.22 lukem allowmissing=true 55 1.22 lukem ;; 56 1.24 lukem *) 57 1.10 perry cat 1>&2 <<USAGE 58 1.24 lukem Usage: ${prog} [-x|-b] [-M metalog] [-e] [-m] 59 1.24 lukem -x check only x11 lists 60 1.24 lukem -b check netbsd + x11 lists 61 1.15 lukem -M metalog metalog file 62 1.22 lukem -e extra files are not considered an error 63 1.22 lukem -m missing files are not considered an error 64 1.10 perry USAGE 65 1.10 perry exit 1 66 1.10 perry ;; 67 1.10 perry esac 68 1.10 perry done 69 1.24 lukem shift $((${OPTIND} - 1)) 70 1.10 perry 71 1.15 lukem if [ -n "$metalog" ]; then 72 1.15 lukem case "$metalog" in 73 1.15 lukem ${DESTDIR}/*) 74 1.17 thorpej # Metalog would be noticed, so make sure it gets 75 1.17 thorpej # ignored. 76 1.17 thorpej metalog="./${metalog#${DESTDIR}/}" 77 1.15 lukem ;; 78 1.17 thorpej *) 79 1.17 thorpej metalog="" 80 1.15 lukem esac 81 1.15 lukem fi 82 1.15 lukem 83 1.15 lukem 84 1.24 lukem ${HOST_SH} ./makeflist $xargs $dargs > $SDIR/flist 85 1.10 perry 86 1.15 lukem ( 87 1.15 lukem cd $DESTDIR 88 1.23 dmcmahil find $origin \( -type d -o -type f -o -type l \) -print 89 1.17 thorpej ) | ( 90 1.17 thorpej while read line; do 91 1.19 lukem case "$line" in 92 1.19 lukem $metalog) 93 1.19 lukem ;; 94 1.19 lukem *) 95 1.19 lukem echo $line 96 1.19 lukem ;; 97 1.19 lukem esac 98 1.17 thorpej done 99 1.20 lukem ) | sort > $SDIR/files 100 1.15 lukem 101 1.20 lukem comm -23 $SDIR/flist $SDIR/files > $SDIR/missing 102 1.20 lukem comm -13 $SDIR/flist $SDIR/files > $SDIR/extra 103 1.15 lukem 104 1.20 lukem if [ -s $SDIR/extra ]; then 105 1.20 lukem echo "" 106 1.20 lukem echo "============ extra files ===============" 107 1.20 lukem echo "Files in DESTDIR but missing from flist." 108 1.20 lukem echo "File is obsolete or flist is out of date ?" 109 1.22 lukem if ${allowextra}; then 110 1.22 lukem echo "This is non-fatal." 111 1.22 lukem else 112 1.22 lukem es=1 113 1.22 lukem fi 114 1.20 lukem echo "------------------------------------------" 115 1.20 lukem cat $SDIR/extra 116 1.20 lukem echo "========= end of extra files ===========" 117 1.20 lukem echo "" 118 1.20 lukem fi 119 1.20 lukem 120 1.20 lukem if [ -s $SDIR/missing ]; then 121 1.20 lukem echo "" 122 1.20 lukem echo "=========== missing files ==============" 123 1.20 lukem echo "Files in flist but missing from DESTDIR." 124 1.20 lukem echo "File wasn't installed ?" 125 1.22 lukem if ${allowmissing}; then 126 1.22 lukem echo "This is non-fatal." 127 1.22 lukem else 128 1.22 lukem es=1 129 1.22 lukem fi 130 1.20 lukem echo "------------------------------------------" 131 1.20 lukem cat $SDIR/missing 132 1.20 lukem echo "======== end of missing files ==========" 133 1.20 lukem echo "" 134 1.15 lukem fi 135 1.20 lukem 136 1.20 lukem exit 0 # cleanup will exit with $es 137