git: 3f5385beeacf - main - release: Improve kernel package handling
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Wed, 24 Sep 2025 09:16:55 UTC
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