Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 24 Sep 2025 09:16:55 GMT
From:      Lexi Winter <ivy@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   git: 3f5385beeacf - main - release: Improve kernel package handling
Message-ID:  <202509240916.58O9GtWD001733@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by ivy:

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

commit 3f5385beeacf49d0edb563ccc712841bcfd6b158
Author:     Lexi Winter <ivy@FreeBSD.org>
AuthorDate: 2025-09-23 23:06:30 +0000
Commit:     Lexi Winter <ivy@FreeBSD.org>
CommitDate: 2025-09-24 09:16:13 +0000

    release: Improve kernel package handling
    
    Although support for PowerPC kernels (GENERIC64 and GENERIC64LE) was
    added to pkgbase-stage.lua, the equivalent support was missing from
    bsdinstall, so the installer would fail at runtime since it wouldn't
    find a kernel package.
    
    Improve the pkgbase-stage logic to have a specific list of kernels
    we want to support (which avoids breaking if multiple kernels are
    available), and use the same logic in both bsdinstall and pkgbase-stage.
    
    MFC after:      1 day
    Reviewed by:    cperciva
    Differential Revision:  https://reviews.freebsd.org/D52638
---
 release/scripts/pkgbase-stage.lua      | 19 +++++++++++++------
 usr.sbin/bsdinstall/scripts/pkgbase.in | 23 ++++++++++++++---------
 2 files changed, 27 insertions(+), 15 deletions(-)

diff --git a/release/scripts/pkgbase-stage.lua b/release/scripts/pkgbase-stage.lua
index 94dec96673de..6845e0079b05 100755
--- a/release/scripts/pkgbase-stage.lua
+++ b/release/scripts/pkgbase-stage.lua
@@ -20,19 +20,26 @@ end
 
 -- Returns a list of packages to be included in the given media
 local function select_packages(pkg, media, all_libcompats)
+	-- Note: if you update this list, you must also update the list in
+	-- usr.sbin/bsdinstall/scripts/pkgbase.in.
+	local kernel_packages = {
+		-- Most architectures use this
+		["FreeBSD-kernel-generic"] = true,
+		-- PowerPC uses either of these, depending on platform
+		["FreeBSD-kernel-generic64"] = true,
+		["FreeBSD-kernel-generic64le"] = true,
+	}
+
 	local components = {}
 	local rquery = capture(pkg .. "rquery -U -r FreeBSD-base %n")
 	for package in rquery:gmatch("[^\n]+") do
 		local set = package:match("^FreeBSD%-set%-(.*)$")
 		if set then
 			components[set] = package
-		-- Kernels other than FreeBSD-kernel-generic are ignored
-		-- Note that on powerpc64 and powerpc64le the names are
-		-- slightly different.
-		elseif package:match("^FreeBSD%-kernel%-generic.*-dbg") then
-			components["kernel-dbg"] = package
-		elseif package:match("^FreeBSD%-kernel%-generic.*") then
+		elseif kernel_packages[package] then
 			components["kernel"] = package
+		elseif kernel_packages[package:match("(.*)%-dbg$")] then
+			components["kernel-dbg"] = package
 		elseif package == "pkg" then
 			components["pkg"] = package
 		end
diff --git a/usr.sbin/bsdinstall/scripts/pkgbase.in b/usr.sbin/bsdinstall/scripts/pkgbase.in
index c06a3f789791..3ba6a3474e0f 100755
--- a/usr.sbin/bsdinstall/scripts/pkgbase.in
+++ b/usr.sbin/bsdinstall/scripts/pkgbase.in
@@ -182,6 +182,16 @@ local function select_packages(pkg, options)
 		["debug"] = {},
 	}
 
+	-- Note: if you update this list, you must also update the list in
+	-- release/scripts/pkgbase-stage.lua.
+	local kernel_packages = {
+		-- Most architectures use this
+		["FreeBSD-kernel-generic"] = true,
+		-- PowerPC uses either of these, depending on platform
+		["FreeBSD-kernel-generic64"] = true,
+		["FreeBSD-kernel-generic64le"] = true,
+	}
+
 	local rquery = capture(pkg .. "rquery -U -r FreeBSD-base %n")
 	for package in rquery:gmatch("[^\n]+") do
 		local setname = package:match("^FreeBSD%-set%-(.+)$")
@@ -189,15 +199,10 @@ local function select_packages(pkg, options)
 		if setname then
 			components[setname] = components[setname] or {}
 			table.insert(components[setname], package)
-		elseif package:match("^FreeBSD%-kernel%-.*") and
-			package ~= "FreeBSD-kernel-man"
-		then
-			-- Kernels other than FreeBSD-kernel-generic are ignored
-			if package == "FreeBSD-kernel-generic" then
-				table.insert(components["kernel"], package)
-			elseif package == "FreeBSD-kernel-generic-dbg" then
-				table.insert(components["kernel-dbg"], package)
-			end
+		elseif kernel_packages[package] then
+			table.insert(components["kernel"], package)
+		elseif kernel_packages[package:match("(.*)%-dbg$")] then
+			table.insert(components["kernel-dbg"], package)
 		end
 	end
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202509240916.58O9GtWD001733>