The branch main has been updated by ivy:

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

commit 3f5385beeacf49d0edb563ccc712841bcfd6b158
Author:     Lexi Winter <[email protected]>
AuthorDate: 2025-09-23 23:06:30 +0000
Commit:     Lexi Winter <[email protected]>
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
 

Reply via email to