git: cf1aba2857c1 - main - freebsd-update: refuse to operate on a pkgbase system

From: Ed Maste <emaste_at_FreeBSD.org>
Date: Thu, 31 Oct 2024 18:35:59 UTC
The branch main has been updated by emaste:

URL: https://cgit.FreeBSD.org/src/commit/?id=cf1aba2857c1ec59c9a34d363cb18a61ffa34a10

commit cf1aba2857c1ec59c9a34d363cb18a61ffa34a10
Author:     Ed Maste <emaste@FreeBSD.org>
AuthorDate: 2024-10-30 19:15:13 +0000
Commit:     Ed Maste <emaste@FreeBSD.org>
CommitDate: 2024-10-31 18:35:44 +0000

    freebsd-update: refuse to operate on a pkgbase system
    
    FreeBSD-update is not compatible with packaged base.
    
    PR:             282252
    Reviewed by:    bapt, markj (earlier)
    Sponsored by:   The FreeBSD Foundation
    Differential Revision: https://reviews.freebsd.org/D47341
---
 usr.sbin/freebsd-update/freebsd-update.sh | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/usr.sbin/freebsd-update/freebsd-update.sh b/usr.sbin/freebsd-update/freebsd-update.sh
index 459d54db0c57..80a8bf288251 100644
--- a/usr.sbin/freebsd-update/freebsd-update.sh
+++ b/usr.sbin/freebsd-update/freebsd-update.sh
@@ -1099,6 +1099,25 @@ IDS_check_params () {
 	fetch_setup_verboselevel
 }
 
+# Packaged base and freebsd-update are incompatible.  Exit with an error if
+# packaged base is in use.
+check_pkgbase()
+{
+	# Packaged base requires that pkg is bootstrapped.
+	if ! pkg -c ${BASEDIR} -N >/dev/null 2>/dev/null; then
+		return
+	fi
+	# Presence of FreeBSD-* package(s) indicates packaged base.
+	if ! pkg -c ${BASEDIR} info -q -x '^FreeBSD' 2>/dev/null; then
+		return
+	fi
+	cat <<EOF
+FreeBSD-update is incompatible with the use of packaged base.  Please see
+https://wiki.freebsd.org/PkgBase for more information.
+EOF
+	exit 1
+}
+
 #### Core functionality -- the actual work gets done here
 
 # Use an SRV query to pick a server.  If the SRV query doesn't provide
@@ -3517,6 +3536,7 @@ cmd_cron () {
 
 # Fetch files for upgrading to a new release.
 cmd_upgrade () {
+	check_pkgbase
 	finalize_components_config ${COMPONENTS}
 	upgrade_check_params
 	upgrade_check_kmod_ports
@@ -3551,6 +3571,7 @@ cmd_updatesready () {
 
 # Install downloaded updates.
 cmd_install () {
+	check_pkgbase
 	finalize_components_config ${COMPONENTS}
 	install_check_params
 	install_create_be
@@ -3559,6 +3580,7 @@ cmd_install () {
 
 # Rollback most recently installed updates.
 cmd_rollback () {
+	check_pkgbase
 	finalize_components_config ${COMPONENTS}
 	rollback_check_params
 	rollback_run || exit 1