MFC revisions 1.11,1.12: Unbreak "freebsd-update rollback" applied to

minor version upgrades, by being more careful about the order in which
files are rolled back to their old versions.

Approved by:	re (kensmith)
This commit is contained in:
cperciva 2007-11-21 14:37:03 +00:00
parent 7d34124f1e
commit 5cf7c6e4cf

View File

@ -2628,9 +2628,16 @@ rollback_setup_rollback () {
# Install old files, delete new files, and update linker.hints
rollback_files () {
# Install old shared library files
# Install old shared library files which don't have the same path as
# a new shared library file.
grep -vE '^/boot/' $1/INDEX-NEW |
grep -E '/lib/.*\.so\.[0-9]+' |
cut -f 1 -d '|' |
sort > INDEX-NEW.libs.flist
grep -vE '^/boot/' $1/INDEX-OLD |
grep -E '/lib/.*\.so\.[0-9]+' > INDEX-OLD
grep -E '/lib/.*\.so\.[0-9]+' |
sort -k 1,1 -t '|' - |
join -t '|' -v 1 - INDEX-NEW.libs.flist > INDEX-OLD
install_from_index INDEX-OLD || return 1
# Deal with files which are neither kernel nor shared library
@ -2641,6 +2648,13 @@ rollback_files () {
install_from_index INDEX-OLD || return 1
install_delete INDEX-NEW INDEX-OLD || return 1
# Install any old shared library files which we didn't install above.
grep -vE '^/boot/' $1/INDEX-OLD |
grep -E '/lib/.*\.so\.[0-9]+' |
sort -k 1,1 -t '|' - |
join -t '|' - INDEX-NEW.libs.flist > INDEX-OLD
install_from_index INDEX-OLD || return 1
# Delete unneeded shared library files
grep -vE '^/boot/' $1/INDEX-OLD |
grep -E '/lib/.*\.so\.[0-9]+' > INDEX-OLD
@ -2658,7 +2672,7 @@ rollback_files () {
fi
# Remove temporary files
rm INDEX-OLD INDEX-NEW
rm INDEX-OLD INDEX-NEW INDEX-NEW.libs.flist
}
# Actually rollback updates