aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEd Maste <emaste@FreeBSD.org>2023-09-29 15:28:35 +0000
committerEd Maste <emaste@FreeBSD.org>2024-01-07 19:40:06 +0000
commit2b79df0ad999df4bc22ed0e1eff446efa4055359 (patch)
tree3cb3adcd291fd0b7452003f55e3e6e44a6a9dd79
parentf8f15d7436a5b771d7e5426a41750beb947e5c46 (diff)
downloadsrc-2b79df0ad999df4bc22ed0e1eff446efa4055359.tar.gz
src-2b79df0ad999df4bc22ed0e1eff446efa4055359.zip
freebsd-update: for rollback, first create directories
rollback_files() tried to install files before creating the directories for those files. In some cases this is due to special handling to install certain classes of files earlier than others. Just create all directories up front when performing rollback. PR: 273950 Reviewed by: dim Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D42020 (cherry picked from commit 6b27e1f2eaab9360a796c943da9d206515e1742b)
-rw-r--r--usr.sbin/freebsd-update/freebsd-update.sh5
1 files changed, 5 insertions, 0 deletions
diff --git a/usr.sbin/freebsd-update/freebsd-update.sh b/usr.sbin/freebsd-update/freebsd-update.sh
index 7408ef1c6721..551d40418240 100644
--- a/usr.sbin/freebsd-update/freebsd-update.sh
+++ b/usr.sbin/freebsd-update/freebsd-update.sh
@@ -3196,6 +3196,11 @@ rollback_setup_rollback () {
# Install old files, delete new files, and update linker.hints
rollback_files () {
+ # Create directories first. They may be needed by files we will
+ # install in subsequent steps (PR273950).
+ awk -F \| '{if ($2 == "d") print }' $1/INDEX-OLD > INDEX-OLD
+ install_from_index INDEX-OLD || return 1
+
# Install old shared library files which don't have the same path as
# a new shared library file.
grep -vE '^/boot/' $1/INDEX-NEW |