checkflist revision 1.29
11.3Smikel#! /bin/sh -- 21.3Smikel# 31.29Sapb# $NetBSD: checkflist,v 1.29 2006/01/03 18:31:09 apb Exp $ 41.3Smikel# 51.29Sapb# Verify output of makeflist against contents of ${DESTDIR}. 61.1Scgd 71.29Sapbif [ -z "${DESTDIR}" ]; then 81.15Slukem echo "DESTDIR must be set" 91.1Scgd exit 1 101.15Slukemfi 111.15Slukem 121.29Sapbprog="${0##*/}" 131.27Sapbrundir="$(dirname "$0")" # ${0%/*} isn't good enough when there's no "/" 141.27Sapb. "${rundir}/sets.subr" 151.1Scgd 161.29SapbSDIR="$(${MKTEMP} -d "/tmp/${prog}.XXXXXX")" 171.20Slukem 181.20Slukemes=0 191.20Slukemcleanup() 201.20Slukem{ 211.29Sapb /bin/rm -rf "${SDIR}" 221.29Sapb if [ ${es} -gt 255 ] ; then 231.20Slukem es=255 241.20Slukem fi 251.29Sapb 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.29Sapb 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.29Sapbif [ -n "${metalog}" ]; then 721.29Sapb case "${metalog}" in 731.29Sapb "${DESTDIR}"/*) 741.17Sthorpej # Metalog would be noticed, so make sure it gets 751.17Sthorpej # ignored. 761.29Sapb metalog="./${metalog#"${DESTDIR}"/}" 771.15Slukem ;; 781.17Sthorpej *) 791.17Sthorpej metalog="" 801.15Slukem esac 811.15Slukemfi 821.15Slukem 831.15Slukem 841.29Sapb${HOST_SH} ./makeflist ${xargs} ${dargs} > "${SDIR}/flist" 851.10Sperry 861.15Slukem( 871.29Sapb cd "${DESTDIR}" 881.29Sapb ${FIND} ${origin} \( -type d -o -type f -o -type l \) -print 891.17Sthorpej) | ( 901.17Sthorpej while read line; do 911.29Sapb case "${line}" in 921.29Sapb "${metalog}") 931.19Slukem ;; 941.19Slukem *) 951.29Sapb echo "${line}" 961.19Slukem ;; 971.19Slukem esac 981.17Sthorpej done 991.29Sapb) | ${SORT} > "${SDIR}/files" 1001.15Slukem 1011.29Sapb${COMM} -23 "${SDIR}/flist}" "${SDIR}/files}" > "${SDIR}/missing}" 1021.29Sapb${COMM} -13 "${SDIR}/flist}" "${SDIR}/files}" > "${SDIR}/extra}" 1031.15Slukem 1041.29Sapbif [ -s "${SDIR}/extra" ]; then 1051.29Sapb count="$(${AWK} 'END {print NR}' "${SDIR}/extra")" 1061.20Slukem echo "" 1071.25Slukem echo "============ ${count} extra files ===============" 1081.20Slukem echo "Files in DESTDIR but missing from flist." 1091.20Slukem echo "File is obsolete or flist is out of date ?" 1101.22Slukem if ${allowextra}; then 1111.22Slukem echo "This is non-fatal." 1121.22Slukem else 1131.22Slukem es=1 1141.22Slukem fi 1151.20Slukem echo "------------------------------------------" 1161.29Sapb cat "${SDIR}/extra" 1171.25Slukem echo "========= end of ${count} extra files ===========" 1181.20Slukem echo "" 1191.20Slukemfi 1201.20Slukem 1211.29Sapbif [ -s "${SDIR}/missing" ]; then 1221.29Sapb count="$(${AWK} 'END {print NR}' "${SDIR}/missing")" 1231.20Slukem echo "" 1241.25Slukem echo "=========== ${count} missing files ==============" 1251.20Slukem echo "Files in flist but missing from DESTDIR." 1261.20Slukem echo "File wasn't installed ?" 1271.22Slukem if ${allowmissing}; then 1281.22Slukem echo "This is non-fatal." 1291.22Slukem else 1301.22Slukem es=1 1311.22Slukem fi 1321.20Slukem echo "------------------------------------------" 1331.29Sapb cat "${SDIR}/missing" 1341.25Slukem echo "======== end of ${count} missing files ==========" 1351.20Slukem echo "" 1361.15Slukemfi 1371.20Slukem 1381.29Sapbexit 0 # cleanup will exit with ${es} 139