aboutsummaryrefslogtreecommitdiff
path: root/release/scripts/pkgbase-stage.lua
diff options
context:
space:
mode:
Diffstat (limited to 'release/scripts/pkgbase-stage.lua')
-rwxr-xr-xrelease/scripts/pkgbase-stage.lua127
1 files changed, 47 insertions, 80 deletions
diff --git a/release/scripts/pkgbase-stage.lua b/release/scripts/pkgbase-stage.lua
index 1b48b4faede3..efc4f8af0cbf 100755
--- a/release/scripts/pkgbase-stage.lua
+++ b/release/scripts/pkgbase-stage.lua
@@ -18,87 +18,59 @@ local function capture(command)
return output:match("(.-)\n$") or output
end
-local function append_list(list, other)
- for _, item in ipairs(other) do
- table.insert(list, item)
- end
-end
-
-- Returns a list of packages to be included in the given media
local function select_packages(pkg, media, all_libcompats)
- local components = {
- kernel = {},
- kernel_dbg = {},
- base = {},
- base_dbg = {},
- src = {},
- tests = {},
+ -- 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,
}
- for compat in all_libcompats:gmatch("%S+") do
- components["lib" .. compat] = {}
- components["lib" .. compat .. "_dbg"] = {}
- end
-
+ local components = {}
local rquery = capture(pkg .. "rquery -U -r FreeBSD-base %n")
for package in rquery:gmatch("[^\n]+") do
- if package == "FreeBSD-src" or package:match("^FreeBSD%-src%-.*") then
- table.insert(components["src"], package)
- elseif package == "FreeBSD-tests" or package:match("^FreeBSD%-tests%-.*") then
- table.insert(components["tests"], 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 package:match(".*%-dbg$") then
- table.insert(components["base_dbg"], package)
- else
- local found = false
- for compat in all_libcompats:gmatch("%S+") do
- if package:match(".*%-dbg%-lib" .. compat .. "$") then
- table.insert(components["lib" .. compat .. "_dbg"], package)
- found = true
- break
- elseif package:match(".*%-lib" .. compat .. "$") then
- table.insert(components["lib" .. compat], package)
- found = true
- break
- end
- end
- if not found then
- table.insert(components["base"], package)
- end
+ local set = package:match("^FreeBSD%-set%-(.*)$")
+ if set then
+ components[set] = package
+ 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
end
- assert(#components["kernel"] == 1)
- assert(#components["base"] > 0)
+ assert(components["kernel"])
+ assert(components["base"])
+ assert(components["pkg"])
local selected = {}
if media == "disc" then
- append_list(selected, components["base"])
- append_list(selected, components["kernel"])
- append_list(selected, components["kernel_dbg"])
- append_list(selected, components["src"])
- append_list(selected, components["tests"])
+ table.insert(selected, components["pkg"])
+ table.insert(selected, components["base"])
+ table.insert(selected, components["kernel"])
+ table.insert(selected, components["kernel-dbg"])
+ table.insert(selected, components["src"])
+ table.insert(selected, components["tests"])
for compat in all_libcompats:gmatch("%S+") do
- append_list(selected, components["lib" .. compat])
+ table.insert(selected, components["lib" .. compat])
end
else
assert(media == "dvd")
- append_list(selected, components["base"])
- append_list(selected, components["base_dbg"])
- append_list(selected, components["kernel"])
- append_list(selected, components["kernel_dbg"])
- append_list(selected, components["src"])
- append_list(selected, components["tests"])
+ table.insert(selected, components["pkg"])
+ table.insert(selected, components["base"])
+ table.insert(selected, components["base-dbg"])
+ table.insert(selected, components["kernel"])
+ table.insert(selected, components["kernel-dbg"])
+ table.insert(selected, components["src"])
+ table.insert(selected, components["tests"])
for compat in all_libcompats:gmatch("%S+") do
- append_list(selected, components["lib" .. compat])
- append_list(selected, components["lib" .. compat .. "_dbg"])
+ table.insert(selected, components["lib" .. compat])
+ table.insert(selected, components["lib" .. compat .. "-dbg"])
end
end
@@ -109,31 +81,26 @@ local function main()
-- Determines package subset selected
local media = assert(arg[1])
assert(media == "disc" or media == "dvd")
- -- Local repository to fetch from
- local source = assert(arg[2])
+ -- Directory containing FreeBSD-base repository config
+ local repo_dir = assert(arg[2])
-- Directory to create new repository
local target = assert(arg[3])
- -- =hitespace separated list of all libcompat names (e.g. "32")
+ -- Whitespace separated list of all libcompat names (e.g. "32")
local all_libcompats = assert(arg[4])
-
- assert(os.execute("mkdir -p pkgbase-repo-conf"))
- local f <close> = assert(io.open("pkgbase-repo-conf/FreeBSD-base.conf", "w"))
- assert(f:write(string.format([[
- FreeBSD-base: {
- url: "file://%s",
- enabled: yes
- }
- ]], source)))
- assert(f:close())
+ -- ABI of repository
+ local ABI = assert(arg[5])
+ -- pkgdb to use
+ local PKGDB = assert(arg[6])
local pkg = "pkg -o ASSUME_ALWAYS_YES=yes -o IGNORE_OSVERSION=yes " ..
- "-o INSTALL_AS_USER=1 -o PKG_DBDIR=./pkgdb -R ./pkgbase-repo-conf "
+ "-o ABI=" .. ABI .. " " ..
+ "-o INSTALL_AS_USER=1 -o PKG_DBDIR=" .. PKGDB .. " -R " .. repo_dir .. " "
assert(os.execute(pkg .. "update"))
local packages = select_packages(pkg, media, all_libcompats)
- assert(os.execute(pkg .. "fetch -o " .. target .. " " .. table.concat(packages, " ")))
+ assert(os.execute(pkg .. "fetch -d -o " .. target .. " " .. table.concat(packages, " ")))
assert(os.execute(pkg .. "repo " .. target))
end