diff options
| author | Lexi Winter <ivy@FreeBSD.org> | 2025-09-23 23:06:30 +0000 |
|---|---|---|
| committer | Lexi Winter <ivy@FreeBSD.org> | 2025-09-24 09:16:13 +0000 |
| commit | 3f5385beeacf49d0edb563ccc712841bcfd6b158 (patch) | |
| tree | 2e4dba10aa2185acf5bbc3036a4a99de5cbee6c3 | |
| parent | aba986215fc99d09655d4dcfc5e37f8b1ac83edf (diff) | |
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
| -rwxr-xr-x | release/scripts/pkgbase-stage.lua | 19 | ||||
| -rwxr-xr-x | 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 |
