aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--UPDATING4
-rw-r--r--sys/conf/newvers.sh2
-rw-r--r--usr.sbin/freebsd-update/freebsd-update.sh33
3 files changed, 30 insertions, 9 deletions
diff --git a/UPDATING b/UPDATING
index 6964b47b6a10..6230b9bfa493 100644
--- a/UPDATING
+++ b/UPDATING
@@ -15,6 +15,10 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 8.x IS SLOW ON IA64 OR SUN4V:
debugging tools present in HEAD were left in place because
sun4v support still needs work to become production ready.
+20131026: p12 FreeBSD-EN-13:04.freebsd-update
+ Fix multiple freebsd-update bugs that break upgrading to
+ FreeBSD 10.0.
+
20130910: p11 FreeBSD-SA-13:12.ifioctl
FreeBSD-SA-13:13.nullfs
diff --git a/sys/conf/newvers.sh b/sys/conf/newvers.sh
index dff5a1f503cf..4093430d25af 100644
--- a/sys/conf/newvers.sh
+++ b/sys/conf/newvers.sh
@@ -32,7 +32,7 @@
TYPE="FreeBSD"
REVISION="8.3"
-BRANCH="RELEASE-p11"
+BRANCH="RELEASE-p12"
if [ "X${BRANCH_OVERRIDE}" != "X" ]; then
BRANCH=${BRANCH_OVERRIDE}
fi
diff --git a/usr.sbin/freebsd-update/freebsd-update.sh b/usr.sbin/freebsd-update/freebsd-update.sh
index 9feab2182238..1590413096d6 100644
--- a/usr.sbin/freebsd-update/freebsd-update.sh
+++ b/usr.sbin/freebsd-update/freebsd-update.sh
@@ -1185,7 +1185,7 @@ fetch_metadata_sanity () {
# Some aliases to save space later: ${P} is a character which can
# appear in a path; ${M} is the four numeric metadata fields; and
# ${H} is a sha256 hash.
- P="[-+./:=%@_[[:alnum:]]"
+ P="[-+./:=%@_[~[:alnum:]]"
M="[0-9]+\|[0-9]+\|[0-9]+\|[0-9]+"
H="[0-9a-f]{64}"
@@ -2765,16 +2765,24 @@ Kernel updates have been installed. Please reboot and run
# If we haven't already dealt with the world, deal with it.
if ! [ -f $1/worlddone ]; then
+ # Create any necessary directories first
+ grep -vE '^/boot/' $1/INDEX-NEW |
+ grep -E '^[^|]+\|d\|' > INDEX-NEW
+ install_from_index INDEX-NEW || return 1
+
# Install new shared libraries next
grep -vE '^/boot/' $1/INDEX-NEW |
- grep -E '/lib/.*\.so\.[0-9]+\|' > INDEX-NEW
+ grep -vE '^[^|]+\|d\|' |
+ grep -E '^[^|]*/lib/[^|]*\.so\.[0-9]+\|' > INDEX-NEW
install_from_index INDEX-NEW || return 1
# Deal with everything else
grep -vE '^/boot/' $1/INDEX-OLD |
- grep -vE '/lib/.*\.so\.[0-9]+\|' > INDEX-OLD
+ grep -vE '^[^|]+\|d\|' |
+ grep -vE '^[^|]*/lib/[^|]*\.so\.[0-9]+\|' > INDEX-OLD
grep -vE '^/boot/' $1/INDEX-NEW |
- grep -vE '/lib/.*\.so\.[0-9]+\|' > INDEX-NEW
+ grep -vE '^[^|]+\|d\|' |
+ grep -vE '^[^|]*/lib/[^|]*\.so\.[0-9]+\|' > INDEX-NEW
install_from_index INDEX-NEW || return 1
install_delete INDEX-OLD INDEX-NEW || return 1
@@ -2795,11 +2803,11 @@ Kernel updates have been installed. Please reboot and run
# Do we need to ask the user to portupgrade now?
grep -vE '^/boot/' $1/INDEX-NEW |
- grep -E '/lib/.*\.so\.[0-9]+\|' |
+ grep -E '^[^|]*/lib/[^|]*\.so\.[0-9]+\|' |
cut -f 1 -d '|' |
sort > newfiles
if grep -vE '^/boot/' $1/INDEX-OLD |
- grep -E '/lib/.*\.so\.[0-9]+\|' |
+ grep -E '^[^|]*/lib/[^|]*\.so\.[0-9]+\|' |
cut -f 1 -d '|' |
sort |
join -v 1 - newfiles |
@@ -2819,9 +2827,18 @@ again to finish installing updates.
# Remove old shared libraries
grep -vE '^/boot/' $1/INDEX-NEW |
- grep -E '/lib/.*\.so\.[0-9]+\|' > INDEX-NEW
+ grep -vE '^[^|]+\|d\|' |
+ grep -E '^[^|]*/lib/[^|]*\.so\.[0-9]+\|' > INDEX-NEW
grep -vE '^/boot/' $1/INDEX-OLD |
- grep -E '/lib/.*\.so\.[0-9]+\|' > INDEX-OLD
+ grep -vE '^[^|]+\|d\|' |
+ grep -E '^[^|]*/lib/[^|]*\.so\.[0-9]+\|' > INDEX-OLD
+ install_delete INDEX-OLD INDEX-NEW || return 1
+
+ # Remove old directories
+ grep -vE '^/boot/' $1/INDEX-OLD |
+ grep -E '^[^|]+\|d\|' > INDEX-OLD
+ grep -vE '^/boot/' $1/INDEX-OLD |
+ grep -E '^[^|]+\|d\|' > INDEX-OLD
install_delete INDEX-OLD INDEX-NEW || return 1
# Remove temporary files