Deleted Added
full compact
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 ---