git: 237db83d02c8 - main - packages: handle suffixes in generate-ucl.lua

From: Lexi Winter <ivy_at_FreeBSD.org>
Date: Tue, 15 Jul 2025 05:12:56 UTC
The branch main has been updated by ivy:

URL: https://cgit.FreeBSD.org/src/commit/?id=237db83d02c8fb3a6292427990a92ca280f73177

commit 237db83d02c8fb3a6292427990a92ca280f73177
Author:     Lexi Winter <ivy@FreeBSD.org>
AuthorDate: 2025-07-07 13:39:39 +0000
Commit:     Lexi Winter <ivy@FreeBSD.org>
CommitDate: 2025-07-15 05:12:44 +0000

    packages: handle suffixes in generate-ucl.lua
    
    Move handling of comment/desc suffixes from generate-ucl.sh to
    generate-ucl.lua.
    
    Reviewed by:    des, bapt
    Approved by:    des (mentor)
    Differential Revision:  https://reviews.freebsd.org/D50284
---
 release/packages/generate-ucl.lua | 72 ++++++++++++++++++++++++++++++---------
 release/packages/generate-ucl.sh  | 46 -------------------------
 2 files changed, 56 insertions(+), 62 deletions(-)

diff --git a/release/packages/generate-ucl.lua b/release/packages/generate-ucl.lua
index 0557e8e8cc23..3d91d11bc42f 100755
--- a/release/packages/generate-ucl.lua
+++ b/release/packages/generate-ucl.lua
@@ -6,14 +6,65 @@ generare-ucl.lua [<variablename> <variablevalue>]... <sourceucl> <destucl>
 Build a package's UCL configuration by loading the template UCL file
 <sourceucl>, replacing any $VARIABLES in the UCL based on the provided
 variables, then writing the result to <destucl>.
-
-If COMMENT_SUFFIX or DESC_SUFFIX are set, append these to the generated comment
-and desc fields.  We do this here because there's no way to do it in
-template.ucl.
 ]]--
 
 local ucl = require("ucl")
 
+-- Give subpackages a special comment and description suffix to indicate what
+-- they contain, so e.g. "foo-man" has " (manual pages)" appended to its
+-- comment.  This avoids having to create a separate ucl files for every
+-- subpackage just to set this.
+--
+-- Note that this is not a key table because the order of the pattern matches
+-- is important.
+pkg_suffixes = {
+	{
+		"%-dev%-lib32$", "(32-bit development files)",
+		"This package contains development files for compiling "..
+		"32-bit applications on a 64-bit host."
+	},
+	{
+		"%-dbg%-lib32$", "(32-bit debugging symbols)",
+		"This package contains 32-bit external debugging symbols "..
+		"for use with a source-level debugger.",
+	},
+	{
+		"%-man%-lib32$", "(32-bit manual pages)",
+		"This package contains the online manual pages for 32-bit "..
+		"components on a 64-bit host.",
+	},
+	{
+		"%-lib32$", "(32-bit libraries)",
+		"This package contains 32-bit libraries for running 32-bit "..
+		"applications on a 64-bit host.",
+	},
+	{
+		"%-dev$", "(development files)",
+		"This package contains development files for "..
+		"compiling applications."
+	},
+	{
+		"%-man$", "(manual pages)",
+		"This package contains the online manual pages."
+	},
+	{
+		"%-dbg$", "(debugging symbols)",
+		"This package contains external debugging symbols for use "..
+		"with a source-level debugger.",
+	},
+}
+
+function add_suffixes(obj)
+	local pkgname = obj["name"]
+	for _,pattern in pairs(pkg_suffixes) do
+		if pkgname:match(pattern[1]) ~= nil then
+			obj["comment"] = obj["comment"] .. " " .. pattern[2]
+			obj["desc"] = obj["desc"] .. "\n\n" .. pattern[3]
+			return
+		end
+	end
+end
+
 -- Hardcode a list of packages which don't get the automatic pkggenname
 -- dependency because the base package doesn't exist.  We should have a better
 -- way to handle this.
@@ -50,8 +101,6 @@ local pkgname = nil
 local pkggenname = nil
 local pkgprefix = nil
 local pkgversion = nil
-local comment_suffix = nil
-local desc_suffix = nil
 
 -- This parser is the output UCL we want to build.
 local parser = ucl.parser()
@@ -73,10 +122,6 @@ for i = 2, #arg - 2, 2 do
 		pkggenname = varvalue
 	elseif varname == "VERSION" and #varvalue > 0 then
 		pkgversion = varvalue
-	elseif varname == "COMMENT_SUFFIX" and #varvalue > 0 then
-		comment_suffix = varvalue
-	elseif varname == "DESC_SUFFIX" and #varvalue > 0 then
-		desc_suffix = varvalue
 	elseif varname == "PKG_NAME_PREFIX" and #varvalue > 0 then
 		pkgprefix = varvalue
 	end
@@ -118,12 +163,7 @@ if pkgprefix ~= nil and obj["deps"] ~= nil then
 end
 
 -- Add comment and desc suffix.
-if comment_suffix ~= nil then
-	obj["comment"] = obj["comment"] .. comment_suffix
-end
-if desc_suffix ~= nil then
-	obj["desc"] = obj["desc"] .. "\n\n" .. desc_suffix
-end
+add_suffixes(obj)
 
 -- Write the output file.
 local f,err = io.open(arg[#arg], "w")
diff --git a/release/packages/generate-ucl.sh b/release/packages/generate-ucl.sh
index 57fe181ec5bb..7b08c3a8c59d 100755
--- a/release/packages/generate-ucl.sh
+++ b/release/packages/generate-ucl.sh
@@ -2,37 +2,9 @@
 #
 #
 
-mancx=" (manual pages)"
-mandx="This package contains the online manual pages."
-
-lib32mancx=" (32-bit manual pages)"
-lib32mandx="This package contains the online manual pages for 32-bit components
-on a 64-bit host."
-
-lib32cx=" (32-bit libraries)"
-lib32dx="This package contains 32-bit libraries for running 32-bit applications on
-a 64-bit host."
-
-devcx=" (development files)"
-devdx="This package contains development files for compiling applications."
-
-dev32cx=" (32-bit development files)"
-dev32dx="This package contains development files for compiling 32-bit applications
-on a 64-bit host."
-
-dbgcx=" (debugging symbols)"
-dbgdx="This package contains external debugging symbols for use with a source-level
-debugger."
-
-dbg32cx=" (32-bit debugging symbols)"
-dbg32dx="This package contains 32-bit external debugging symbols for use with a
-source-level debugger."
-
 main() {
 	outname=""
 	origname=""
-	desc_suffix=""
-	comment_suffix=""
 	debug=
 	uclsource=
 	while getopts "do:s:u:" arg; do
@@ -61,38 +33,24 @@ main() {
 	case "${outname}" in
 		*-dev)
 			outname="${outname%%-dev}"
-			comment_suffix="$devcx"
-			desc_suffix="$devdx"
 			;;
 		*-dbg)
 			outname="${outname%%-dbg}"
-			comment_suffix="$dbgcx"
-			desc_suffix="$dbgdx"
 			;;
 		*-dev-lib32)
 			outname="${outname%%-dev-lib32}"
-			comment_suffix="$dev32cx"
-			desc_suffix="$dev32dx"
 			;;
 		*-dbg-lib32)
 			outname="${outname%%-dbg-lib32}"
-			comment_suffix="$dbg32cx"
-			desc_suffix="$dbg32dx"
 			;;
 		*-man-lib32)
 			outname="${outname%%-man-lib32}"
-			comment_suffix="$lib32mancx"
-			desc_suffix="$lib32mandx"
 			;;
 		*-lib32)
 			outname="${outname%%-lib32}"
-			comment_suffix="$lib32cx"
-			desc_suffix="$lib32dx"
 			;;
 		*-man)
 			outname="${outname%%-man}"
-			comment_suffix="$mancx"
-			desc_suffix="$mandx"
 			;;
 		${origname})
 			;;
@@ -112,8 +70,6 @@ main() {
 		echo "origname=${origname}"
 		echo "srctree=${srctree}"
 		echo "uclfile=${uclfile}"
-		echo "desc_suffix=${desc_suffix}"
-		echo "comment_suffix=${comment_suffix}"
 		echo "vital=${vital}"
 		echo "cp ${uclsource} -> ${uclfile}"
 		echo "==============================================================="
@@ -128,8 +84,6 @@ main() {
 		PKGNAME "${origname}" \
 		PKGGENNAME "${outname}" \
 		PKG_NAME_PREFIX "${PKG_NAME_PREFIX}" \
-		COMMENT_SUFFIX "${comment_suffix}" \
-		DESC_SUFFIX "$desc_suffix" \
 		CAP_MKDB_ENDIAN "${cap_arg}" \
 		PKG_WWW "${PKG_WWW}" \
 		PKG_MAINTAINER "${PKG_MAINTAINER}" \