From nobody Fri Sep 19 01:20:05 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4cSZS62JnDz68LVS; Fri, 19 Sep 2025 01:20:06 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4cSZS55RBXz4B1M; Fri, 19 Sep 2025 01:20:05 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1758244805; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=hq296OQYVqJddzzEi/MUDFWewU7n3d91aVvMpeBb3p0=; b=T10i/EOzoGPoRJvh0tspUj4zwx+CV3axObDShqaEESXc4vujZB+2NlgsFsn0tEJFSD08Hi Obke+wKkpucF4//Pn9bNpDLiquFUkVsMeEDfFKgo59ArCGsOWuRbGDYgN81OSt9X6IiRab nEq7kO2Up1hP+uMzHcFWe8n92NraEGcMqlFUaqReB4tYit/IMYUtipyiPChKP3NF+tkIW4 SE2J33dK7UkhXQOAVEVucbjY+GoqyblGKscgYf6HRzNNvdi6uRqR5qcLAie20lq7mKeKys /KXKqbLNnpyC+ItK7DYblMHuzZ4e3SxwL7BgqBgNvV7GQwtWSZupZlRRTZmY3w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1758244805; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=hq296OQYVqJddzzEi/MUDFWewU7n3d91aVvMpeBb3p0=; b=FC+cAkrtHR4iXsSI5n9r+AC+zA3xx3n74R5xTf8H3IBhJjKwdI5hS0/VI2D8/qjaU2MHs2 2qYVaRiaYSdwW5Er5WpOwKAMk3DEysd+YMtNYLwjomz4yaaVeDcOljs674gjzcoOfkSB7o +HBx2Vpci42NTjQyyy9bD91BtFMki0CfAIuOW6dyC7VvkPOOaXqd4DKMA1bPtr+N+bN9gR mYT0R//ZDx4kYa0i23iN21UtrBHefOfGS2ADpQDKgGBg/VpwWEUsfsYg9unn8Q8DoTAmiE ALB5iB+ylFDxzVhQ0pmFs1WyNFTP0esPFWF3TerLHr1BIbNxN3ZJvUms7wsIgQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1758244805; a=rsa-sha256; cv=none; b=uszTNX5w3P7/V1dY+TbnFqRxbh4cd7N0c2oExWfy2QoNTgqfOTstqiIvlLbi2o4NG3VdjB 04mLhiDmvDOSr7APeoNXf0FlL8xI1QtYR41Uo6bSklFCIuJoq7KsLJulzvk2EGbK1OtKWu 0O2IjLuFdm5q5hHHFAY4K2RBfcD/z19cSJXmSzGoRsYEPk2AWcTQMzoUxnvtqV3RYXxTWq 8AUoEm9W6yuXB/v19C5K4wj5whNF5QOcqfR3tu+aXWC2JP4laNZK8o0y0j7Qgriya4GKj/ WoJ9U2WBBw5qXt9OfaYWkGRW6tDp1AkdgBNGJ3957Yu3AYDpe+tuaEINa8hAkA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4cSZS54vP7zc86; Fri, 19 Sep 2025 01:20:05 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 58J1K5Va070272; Fri, 19 Sep 2025 01:20:05 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 58J1K52F070268; Fri, 19 Sep 2025 01:20:05 GMT (envelope-from git) Date: Fri, 19 Sep 2025 01:20:05 GMT Message-Id: <202509190120.58J1K52F070268@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Lexi Winter Subject: git: 2bf7d850c53e - stable/15 - release: use sets to select base packages List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: ivy X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 2bf7d850c53e55ffced055235de432055f0cb9e2 Auto-Submitted: auto-generated The branch stable/15 has been updated by ivy: URL: https://cgit.FreeBSD.org/src/commit/?id=2bf7d850c53e55ffced055235de432055f0cb9e2 commit 2bf7d850c53e55ffced055235de432055f0cb9e2 Author: Isaac Freund AuthorDate: 2025-09-16 19:38:54 +0000 Commit: Lexi Winter CommitDate: 2025-09-19 01:18:42 +0000 release: use sets to select base packages The introduction of package sets allows us to replace the current fragile string matching with this simpler and more robust alternative. Sponsored by: The FreeBSD Foundation MFC after: 3 seconds Reviewed by: emaste, ivy Differential Revision: https://reviews.freebsd.org/D52592 (cherry picked from commit 6cdca18d79b9e247d8a34e266fe2215e4bfa1b05) --- release/scripts/pkgbase-stage.lua | 96 ++++++++++++--------------------------- 1 file changed, 28 insertions(+), 68 deletions(-) diff --git a/release/scripts/pkgbase-stage.lua b/release/scripts/pkgbase-stage.lua index a12ec372d1a9..9e968fd150f8 100755 --- a/release/scripts/pkgbase-stage.lua +++ b/release/scripts/pkgbase-stage.lua @@ -18,87 +18,47 @@ 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 = {}, - } - - 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 + -- 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 + components["kernel"] = package end end - assert(#components["kernel"] == 1) - assert(#components["base"] > 0) + assert(components["kernel"]) + assert(components["base"]) 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["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["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 @@ -136,7 +96,7 @@ local function main() 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