mirror of
https://git.freebsd.org/src.git
synced 2026-01-16 23:02:24 +00:00
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
This commit is contained in:
parent
aba986215f
commit
3f5385beea
2 changed files with 27 additions and 15 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue