diff --git a/release/packages/Makefile.package b/release/packages/Makefile.package --- a/release/packages/Makefile.package +++ b/release/packages/Makefile.package @@ -185,7 +185,5 @@ vt_DESC= VT fonts and keyboard files wpa_COMMENT= 802.11 Supplicant wpa_DESC= 802.11 Supplicant -yp_COMMENT= Yellow Pages programs -yp_DESC= Yellow Pages programs zfs_COMMENT= ZFS Libraries and Utilities zfs_DESC= ZFS Libraries and Utilities diff --git a/release/packages/generate-ucl.lua b/release/packages/generate-ucl.lua --- a/release/packages/generate-ucl.lua +++ b/release/packages/generate-ucl.lua @@ -3,33 +3,66 @@ --[[ usage: generare-ucl.lua [ ]... -In the files the variable (in the form ${variablename} -in the ) will be expanded to . +Build a package's UCL configuration by loading the template UCL file +, replacing any $VARIABLES in the UCL based on the provided +variables, then writing the result to . -The undefined variables will reamin unmofifier "${variablename}" +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") +local comment_suffix = nil +local desc_suffix = nil + +-- This parser is the output UCL we want to build. +local parser = ucl.parser() + +-- Set any $VARIABLES from the command line in the parser. This causes ucl to +-- automatically replace them when we load the source ucl. if #arg < 2 or #arg % 2 ~= 0 then io.stderr:write(arg[0] .. ": expected an even number of arguments, got " .. #arg) os.exit(1) end -local parser = ucl.parser() for i = 2, #arg - 2, 2 do - parser:register_variable(arg[i - 1], arg[i]) + local varname = arg[i - 1] + local varvalue = arg[i] + + if varname == "COMMENT_SUFFIX" and #varvalue > 0 then + comment_suffix = varvalue + elseif varname == "DESC_SUFFIX" and #varvalue > 0 then + desc_suffix = varvalue + end + + parser:register_variable(varname, varvalue) end + +-- Load the source ucl file. local res,err = parser:parse_file(arg[#arg - 1]) if not res then io.stderr:write(arg[0] .. ": fail to parse("..arg[#arg - 1].."): "..err) os.exit(1) end + +local obj = parser:get_object() + +-- 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 + +-- Write the output file. local f,err = io.open(arg[#arg], "w") if not f then io.stderr:write(arg[0] .. ": fail to open("..arg[#arg].."): ".. err) os.exit(1) end -local obj = parser:get_object() + f:write(ucl.to_format(obj, 'ucl')) f:close() diff --git a/release/packages/generate-ucl.sh b/release/packages/generate-ucl.sh --- a/release/packages/generate-ucl.sh +++ b/release/packages/generate-ucl.sh @@ -2,9 +2,35 @@ # # +mancx=" (manual pages)" +mandx="This package contains the online manual pages." + +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= + desc_suffix="" comment= + comment_suffix="" debug= uclsource= while getopts "do:s:u:" arg; do @@ -52,51 +78,53 @@ # as a dependency. libcompat-dev|libcompiler_rt-dev|liby-dev) outname=${outname%%-dev} - _descr="Development Files" + comment_suffix="$devcx" + desc_suffix="$devdx" ;; - libcompat-lib32_dev|libcompiler_rt-lib32_dev|liby-lib32_dev) - outname=${outname%%-lib32_dev} - _descr="32-bit Libraries, Development Files" + libcompat-dev-lib32|libcompiler_rt-dev-lib32|liby-dev-lib32) + outname=${outname%%-dev-lib32} + comment_suffix="$dev32cx" + desc_suffix="$dev32dx" ;; libcompat-man|libelftc-man) outname=${outname%%-man} - _descr="Manual Pages" - ;; - utilities) - uclfile="${uclfile}" - ;; - runtime) - outname="runtime" - _descr="$(make -C ${srctree}/release/packages -f Makefile.package -V ${outname}_DESCR)" + comment_suffix="$mancx" + desc_suffix="$mandx" ;; - *-lib32_dev) - outname="${outname%%-lib32_dev}" - _descr="32-bit Libraries, Development Files" + *-dev) + outname="${outname%%-dev}" + comment_suffix="$devcx" + desc_suffix="$devdx" pkgdeps="${outname}" ;; - *-lib32_dbg) - outname="${outname%%-lib32_dbg}" - _descr="32-bit Libraries, Debugging Symbols" + *-dbg) + outname="${outname%%-dbg}" + comment_suffix="$dbgcx" + desc_suffix="$dbgdx" pkgdeps="${outname}" ;; - *-lib32) - outname="${outname%%-lib32}" - _descr="32-bit Libraries" + *-dev-lib32) + outname="${outname%%-dev-lib32}" + comment_suffix="$dev32cx" + desc_suffix="$dev32dx" pkgdeps="${outname}" ;; - *-dev) - outname="${outname%%-dev}" - _descr="Development Files" + *-dbg-lib32) + outname="${outname%%-dbg-lib32}" + comment_suffix="$dbg32cx" + desc_suffix="$dbg32dx" pkgdeps="${outname}" ;; - *-dbg) - outname="${outname%%-dbg}" - _descr="Debugging Symbols" + *-lib32) + outname="${outname%%-lib32}" + comment_suffix="$lib32cx" + desc_suffix="$lib32dx" pkgdeps="${outname}" ;; *-man) outname="${outname%%-man}" - _descr="Manual Pages" + comment_suffix="$mancx" + desc_suffix="$mandx" pkgdeps="${outname}" ;; ${origname}) @@ -116,13 +144,14 @@ echo "" echo "===============================================================" echo "DEBUG:" - echo "_descr=${_descr}" echo "outname=${outname}" echo "origname=${origname}" echo "srctree=${srctree}" echo "uclfile=${uclfile}" echo "desc=${desc}" + echo "desc_suffix=${desc_suffix}" echo "comment=${comment}" + echo "comment_suffix=${comment_suffix}" echo "vital=${vital}" echo "cp ${uclsource} -> ${uclfile}" echo "===============================================================" @@ -132,7 +161,6 @@ fi [ -z "${comment}" ] && comment="${outname} package" - [ -n "${_descr}" ] && comment="${comment} (${_descr})" [ -z "${desc}" ] && desc="${outname} package" cp "${uclsource}" "${uclfile}" @@ -155,11 +183,13 @@ PKGGENNAME "${outname}" \ PKG_NAME_PREFIX "${PKG_NAME_PREFIX}" \ COMMENT "${comment}" \ + COMMENT_SUFFIX "${comment_suffix}" \ DESC "${desc}" \ + DESC_SUFFIX "$desc_suffix" \ CAP_MKDB_ENDIAN "${cap_arg}" \ PKG_WWW "${PKG_WWW}" \ PKG_MAINTAINER "${PKG_MAINTAINER}" \ - UCLFILES "${srctree}/release/packages/" \ + UCLFILES "${srctree}/release/packages/ucl" \ ${uclfile} ${uclfile} return 0 diff --git a/release/packages/certctl.ucl b/release/packages/ucl/certctl.ucl rename from release/packages/certctl.ucl rename to release/packages/ucl/certctl.ucl diff --git a/release/packages/clang-all.ucl b/release/packages/ucl/clang-all.ucl rename from release/packages/clang-all.ucl rename to release/packages/ucl/clang-all.ucl diff --git a/release/packages/clibs.ucl b/release/packages/ucl/clibs.ucl rename from release/packages/clibs.ucl rename to release/packages/ucl/clibs.ucl diff --git a/release/packages/lld-all.ucl b/release/packages/ucl/lld-all.ucl rename from release/packages/lld-all.ucl rename to release/packages/ucl/lld-all.ucl diff --git a/release/packages/lldb-all.ucl b/release/packages/ucl/lldb-all.ucl rename from release/packages/lldb-all.ucl rename to release/packages/ucl/lldb-all.ucl diff --git a/release/packages/runtime.ucl b/release/packages/ucl/runtime.ucl rename from release/packages/runtime.ucl rename to release/packages/ucl/runtime.ucl diff --git a/release/packages/ssh-all.ucl b/release/packages/ucl/ssh-all.ucl rename from release/packages/ssh-all.ucl rename to release/packages/ucl/ssh-all.ucl diff --git a/release/packages/unbound-all.ucl b/release/packages/ucl/unbound-all.ucl rename from release/packages/unbound-all.ucl rename to release/packages/ucl/unbound-all.ucl diff --git a/release/packages/utilities.ucl b/release/packages/ucl/utilities.ucl rename from release/packages/utilities.ucl rename to release/packages/ucl/utilities.ucl diff --git a/release/packages/ucl/yp-all.ucl b/release/packages/ucl/yp-all.ucl new file mode 100644 --- /dev/null +++ b/release/packages/ucl/yp-all.ucl @@ -0,0 +1,7 @@ +comment = "Yellow Pages (YP) / Network Information Service (NIS)" +desc = <