git: b1187b5a1274 - stable/15 - release: Improve kernel package handling
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 25 Sep 2025 01:01:44 UTC
The branch stable/15 has been updated by ivy: URL: https://cgit.FreeBSD.org/src/commit/?id=b1187b5a12747ec9c7d0052fa725b1e2a4668f90 commit b1187b5a12747ec9c7d0052fa725b1e2a4668f90 Author: Lexi Winter <ivy@FreeBSD.org> AuthorDate: 2025-09-23 23:06:30 +0000 Commit: Lexi Winter <ivy@FreeBSD.org> CommitDate: 2025-09-25 01:00:41 +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 (cherry picked from commit 3f5385beeacf49d0edb563ccc712841bcfd6b158) --- 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