mergemaster.sh (192219) | mergemaster.sh (192230) |
---|---|
1#!/bin/sh 2 3# mergemaster 4 5# Compare files created by /usr/src/etc/Makefile (or the directory 6# the user specifies) with the currently installed copies. 7 8# Copyright 1998-2009 Douglas Barton 9# DougB@FreeBSD.org 10 | 1#!/bin/sh 2 3# mergemaster 4 5# Compare files created by /usr/src/etc/Makefile (or the directory 6# the user specifies) with the currently installed copies. 7 8# Copyright 1998-2009 Douglas Barton 9# DougB@FreeBSD.org 10 |
11# $FreeBSD: head/usr.sbin/mergemaster/mergemaster.sh 192219 2009-05-16 21:32:09Z dougb $ | 11# $FreeBSD: head/usr.sbin/mergemaster/mergemaster.sh 192230 2009-05-16 22:22:31Z dougb $ |
12 13PATH=/bin:/usr/bin:/usr/sbin 14 15display_usage () { 16 VERSION_NUMBER=`grep "[$]FreeBSD:" $0 | cut -d ' ' -f 4` 17 echo "mergemaster version ${VERSION_NUMBER}" 18 echo 'Usage: mergemaster [-scrvahipFCPU]' 19 echo ' [-m /path] [-t /path] [-d] [-u N] [-w N] [-A arch] [-D /path]' --- 90 unchanged lines hidden (view full) --- 110# options 111diff_loop () { 112 113 HANDLE_COMPFILE=v 114 115 while [ "${HANDLE_COMPFILE}" = "v" -o "${HANDLE_COMPFILE}" = "V" -o \ 116 "${HANDLE_COMPFILE}" = "NOT V" ]; do 117 if [ -f "${DESTDIR}${COMPFILE#.}" -a -f "${COMPFILE}" ]; then | 12 13PATH=/bin:/usr/bin:/usr/sbin 14 15display_usage () { 16 VERSION_NUMBER=`grep "[$]FreeBSD:" $0 | cut -d ' ' -f 4` 17 echo "mergemaster version ${VERSION_NUMBER}" 18 echo 'Usage: mergemaster [-scrvahipFCPU]' 19 echo ' [-m /path] [-t /path] [-d] [-u N] [-w N] [-A arch] [-D /path]' --- 90 unchanged lines hidden (view full) --- 110# options 111diff_loop () { 112 113 HANDLE_COMPFILE=v 114 115 while [ "${HANDLE_COMPFILE}" = "v" -o "${HANDLE_COMPFILE}" = "V" -o \ 116 "${HANDLE_COMPFILE}" = "NOT V" ]; do 117 if [ -f "${DESTDIR}${COMPFILE#.}" -a -f "${COMPFILE}" ]; then |
118 if [ -n "${AUTO_UPGRADE}" ]; then 119 if echo "${CHANGED}" | grep -qsv ${DESTDIR}${COMPFILE#.}; then | 118 if [ -n "${AUTO_UPGRADE}" -a -n "${CHANGED}" ]; then 119 case "${CHANGED}" in 120 *:${DESTDIR}${COMPFILE#.}:*) ;; # File has been modified 121 *) |
120 echo '' 121 echo " *** ${COMPFILE} has not been user modified." 122 echo '' 123 124 if mm_install "${COMPFILE}"; then 125 echo " *** ${COMPFILE} upgraded successfully" 126 echo '' 127 # Make the list print one file per line 128 AUTO_UPGRADED_FILES="${AUTO_UPGRADED_FILES} ${DESTDIR}${COMPFILE#.} 129" 130 else | 122 echo '' 123 echo " *** ${COMPFILE} has not been user modified." 124 echo '' 125 126 if mm_install "${COMPFILE}"; then 127 echo " *** ${COMPFILE} upgraded successfully" 128 echo '' 129 # Make the list print one file per line 130 AUTO_UPGRADED_FILES="${AUTO_UPGRADED_FILES} ${DESTDIR}${COMPFILE#.} 131" 132 else |
131 echo " *** Problem upgrading ${COMPFILE}, it will remain to merge by hand" | 133 echo " *** Problem upgrading ${COMPFILE}, it will remain to merge by hand" |
132 fi 133 return | 134 fi 135 return |
134 fi | 136 ;; 137 esac |
135 fi 136 if [ "${HANDLE_COMPFILE}" = "v" -o "${HANDLE_COMPFILE}" = "V" ]; then 137 echo '' 138 echo ' ====================================================================== ' 139 echo '' 140 ( 141 echo " *** Displaying differences between ${COMPFILE} and installed version:" 142 echo '' --- 200 unchanged lines hidden (view full) --- 343if [ -n "${PRESERVE_FILES}" -a -z "${PRESERVE_FILES_DIR}" ]; then 344 PRESERVE_FILES_DIR=/var/tmp/mergemaster/preserved-files-`date +%y%m%d-%H%M%S` 345fi 346 347# Check for the mtree database in DESTDIR 348case "${AUTO_UPGRADE}" in 349'') ;; # If the option is not set no need to run the test or warn the user 350*) | 138 fi 139 if [ "${HANDLE_COMPFILE}" = "v" -o "${HANDLE_COMPFILE}" = "V" ]; then 140 echo '' 141 echo ' ====================================================================== ' 142 echo '' 143 ( 144 echo " *** Displaying differences between ${COMPFILE} and installed version:" 145 echo '' --- 200 unchanged lines hidden (view full) --- 346if [ -n "${PRESERVE_FILES}" -a -z "${PRESERVE_FILES_DIR}" ]; then 347 PRESERVE_FILES_DIR=/var/tmp/mergemaster/preserved-files-`date +%y%m%d-%H%M%S` 348fi 349 350# Check for the mtree database in DESTDIR 351case "${AUTO_UPGRADE}" in 352'') ;; # If the option is not set no need to run the test or warn the user 353*) |
351 if [ ! -f "${DESTDIR}${MTREEFILE}" ]; then | 354 if [ ! -s "${DESTDIR}${MTREEFILE}" ]; then |
352 echo '' 353 echo "*** Unable to find mtree database. Skipping auto-upgrade." 354 echo '' 355 press_to_continue 356 unset AUTO_UPGRADE 357 fi 358 ;; 359esac --- 94 unchanged lines hidden (view full) --- 454fi 455 456# Setup make to use system files from SOURCEDIR 457MM_MAKE="make ${ARCHSTRING} -m ${SOURCEDIR}/share/mk" 458 459# Check DESTDIR against the mergemaster mtree database to see what 460# files the user changed from the reference files. 461# | 355 echo '' 356 echo "*** Unable to find mtree database. Skipping auto-upgrade." 357 echo '' 358 press_to_continue 359 unset AUTO_UPGRADE 360 fi 361 ;; 362esac --- 94 unchanged lines hidden (view full) --- 457fi 458 459# Setup make to use system files from SOURCEDIR 460MM_MAKE="make ${ARCHSTRING} -m ${SOURCEDIR}/share/mk" 461 462# Check DESTDIR against the mergemaster mtree database to see what 463# files the user changed from the reference files. 464# |
462CHANGED= 463if [ -n "${AUTO_UPGRADE}" -a -f "${DESTDIR}${MTREEFILE}" ]; then | 465if [ -n "${AUTO_UPGRADE}" -a -s "${DESTDIR}${MTREEFILE}" ]; then 466 CHANGED=: |
464 for file in `mtree -eqL -f ${DESTDIR}${MTREEFILE} -p ${DESTDIR}/ \ 465 2>/dev/null | awk '($2 == "changed") {print $1}'`; do 466 if [ -f "${DESTDIR}/$file" ]; then | 467 for file in `mtree -eqL -f ${DESTDIR}${MTREEFILE} -p ${DESTDIR}/ \ 468 2>/dev/null | awk '($2 == "changed") {print $1}'`; do 469 if [ -f "${DESTDIR}/$file" ]; then |
467 CHANGED="${CHANGED} ${DESTDIR}/$file" | 470 CHANGED="${CHANGED}${DESTDIR}/${file}:" |
468 fi 469 done | 471 fi 472 done |
473 [ "$CHANGED" = ':' ] && unset CHANGED |
|
470fi 471 472# Check the width of the user's terminal 473# 474if [ -t 0 ]; then 475 w=`tput columns` 476 case "${w}" in 477 0|'') ;; # No-op, since the input is not valid --- 572 unchanged lines hidden (view full) --- 1050 esac # Auto run test 1051 fi # Yes, the files are different 1052 fi # Yes, the file still remains to be checked 1053done # This is for the for way up there at the beginning of the comparison 1054 1055echo '' 1056echo "*** Comparison complete" 1057 | 474fi 475 476# Check the width of the user's terminal 477# 478if [ -t 0 ]; then 479 w=`tput columns` 480 case "${w}" in 481 0|'') ;; # No-op, since the input is not valid --- 572 unchanged lines hidden (view full) --- 1054 esac # Auto run test 1055 fi # Yes, the files are different 1056 fi # Yes, the file still remains to be checked 1057done # This is for the for way up there at the beginning of the comparison 1058 1059echo '' 1060echo "*** Comparison complete" 1061 |
1058if [ -f "${MTREENEW}" ]; then | 1062if [ -s "${MTREENEW}" ]; then |
1059 echo "*** Saving mtree database for future upgrades" 1060 test -e "${DESTDIR}${MTREEFILE}" && unlink ${DESTDIR}${MTREEFILE} 1061 mv ${MTREENEW} ${DESTDIR}${MTREEFILE} 1062fi 1063 1064echo '' 1065 1066TEST_FOR_FILES=`find ${TEMPROOT} -type f -size +0 2>/dev/null` --- 202 unchanged lines hidden --- | 1063 echo "*** Saving mtree database for future upgrades" 1064 test -e "${DESTDIR}${MTREEFILE}" && unlink ${DESTDIR}${MTREEFILE} 1065 mv ${MTREENEW} ${DESTDIR}${MTREEFILE} 1066fi 1067 1068echo '' 1069 1070TEST_FOR_FILES=`find ${TEMPROOT} -type f -size +0 2>/dev/null` --- 202 unchanged lines hidden --- |