Page MenuHomeFreeBSD

D50283.diff
No OneTemporary

D50283.diff

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
@@ -14,6 +14,42 @@
local ucl = require("ucl")
+-- 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.
+local no_gen_deps = {
+ ["libcompat-dev"] = true,
+ ["libcompat-dev-lib32"] = true,
+ ["libcompat-man"] = true,
+ ["libcompiler_rt-dev"] = true,
+ ["libcompiler_rt-dev-lib32"] = true,
+ ["liby-dev"] = true,
+ ["liby-dev-lib32"] = true,
+}
+
+-- Return true if the package 'pkgname' should have a dependency on the package
+-- pkggenname.
+function add_gen_dep(pkgname, pkggenname)
+ if pkgname == pkggenname then
+ return false
+ end
+ if pkgname == nil or pkggenname == nil then
+ return false
+ end
+ if no_gen_deps[pkgname] ~= nil then
+ return false
+ end
+ if pkggenname == "kernel" then
+ return false
+ end
+
+ return true
+end
+
+local pkgname = nil
+local pkggenname = nil
+local pkgprefix = nil
+local pkgversion = nil
local comment_suffix = nil
local desc_suffix = nil
@@ -31,10 +67,18 @@
local varname = arg[i - 1]
local varvalue = arg[i]
- if varname == "COMMENT_SUFFIX" and #varvalue > 0 then
+ if varname == "PKGNAME" and #varvalue > 0 then
+ pkgname = varvalue
+ elseif varname == "PKGGENNAME" and #varvalue > 0 then
+ 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
parser:register_variable(varname, varvalue)
@@ -49,6 +93,30 @@
local obj = parser:get_object()
+-- If pkgname is different from pkggenname, add a dependency on pkggenname.
+-- This means that e.g. -dev packages depend on their respective base package.
+if add_gen_dep(pkgname, pkggenname) then
+ if obj["deps"] == nil then
+ obj["deps"] = {}
+ end
+ obj["deps"][pkggenname] = {
+ ["version"] = pkgversion,
+ ["origin"] = "base"
+ }
+end
+
+-- If PKG_NAME_PREFIX is provided, rewrite the names of dependency packages.
+-- We can't do this in UCL since variable substitution doesn't work in array
+-- keys.
+if pkgprefix ~= nil and obj["deps"] ~= nil then
+ newdeps = {}
+ for dep, opts in pairs(obj["deps"]) do
+ local newdep = pkgprefix .. "-" .. dep
+ newdeps[newdep] = opts
+ end
+ obj["deps"] = newdeps
+end
+
-- Add comment and desc suffix.
if comment_suffix ~= nil then
obj["comment"] = obj["comment"] .. comment_suffix
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
@@ -59,81 +59,40 @@
shift $(( ${OPTIND} - 1 ))
case "${outname}" in
- bootloader)
- pkgdeps=""
- ;;
- certctl)
- pkgdeps="caroot openssl"
- ;;
- clang)
- pkgdeps="lld libcompiler_rt-dev"
- ;;
- periodic)
- pkgdeps="cron"
- ;;
- rcmds)
- # the RPC daemons require rpcbind
- pkgdeps="utilities"
- ;;
-
- # -dev packages that have no corresponding non-dev package
- # as a dependency.
- libcompat-dev|libcompiler_rt-dev|liby-dev)
- outname=${outname%%-dev}
- comment_suffix="$devcx"
- desc_suffix="$devdx"
- ;;
- 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}
- comment_suffix="$mancx"
- desc_suffix="$mandx"
- ;;
*-dev)
outname="${outname%%-dev}"
comment_suffix="$devcx"
desc_suffix="$devdx"
- pkgdeps="${outname}"
;;
*-dbg)
outname="${outname%%-dbg}"
comment_suffix="$dbgcx"
desc_suffix="$dbgdx"
- pkgdeps="${outname}"
;;
*-dev-lib32)
outname="${outname%%-dev-lib32}"
comment_suffix="$dev32cx"
desc_suffix="$dev32dx"
- pkgdeps="${outname}"
;;
*-dbg-lib32)
outname="${outname%%-dbg-lib32}"
comment_suffix="$dbg32cx"
desc_suffix="$dbg32dx"
- pkgdeps="${outname}"
;;
*-man-lib32)
outname="${outname%%-man-lib32}"
comment_suffix="$lib32mancx"
desc_suffix="$lib32mandx"
- pkgdeps="${outname}"
;;
*-lib32)
outname="${outname%%-lib32}"
comment_suffix="$lib32cx"
desc_suffix="$lib32dx"
- pkgdeps="${outname}"
;;
*-man)
outname="${outname%%-man}"
comment_suffix="$mancx"
desc_suffix="$mandx"
- pkgdeps="${outname}"
;;
${origname})
;;
@@ -163,19 +122,6 @@
echo ""
fi
- cp "${uclsource}" "${uclfile}"
- if [ -n "${pkgdeps}" ]; then
- echo 'deps: {' >> ${uclfile}
- for dep in ${pkgdeps}; do
- cat <<EOF >> ${uclfile}
- ${PKG_NAME_PREFIX}-${dep}: {
- origin: "base",
- version: "${PKG_VERSION}"
- }
-EOF
- done
- echo '}' >> ${uclfile}
- fi
cap_arg="$( make -f ${srctree}/share/mk/bsd.endian.mk -VCAP_MKDB_ENDIAN )"
${srctree}/release/packages/generate-ucl.lua \
VERSION "${PKG_VERSION}" \
@@ -188,7 +134,7 @@
PKG_WWW "${PKG_WWW}" \
PKG_MAINTAINER "${PKG_MAINTAINER}" \
UCLFILES "${srctree}/release/packages/ucl" \
- ${uclfile} ${uclfile}
+ ${uclsource} ${uclfile}
return 0
}
diff --git a/release/packages/ucl/certctl.ucl b/release/packages/ucl/certctl.ucl
--- a/release/packages/ucl/certctl.ucl
+++ b/release/packages/ucl/certctl.ucl
@@ -1,3 +1,15 @@
+deps {
+ "caroot": {
+ version = "${VERSION}"
+ origin = "base"
+ }
+
+ "openssl": {
+ version = "${VERSION}"
+ origin = "base"
+ }
+}
+
scripts: {
# XXX If pkg picks up a mechanism to detect in the post-install script
# files being added or removed, we should use it instead to gate the
diff --git a/release/packages/ucl/clang.ucl b/release/packages/ucl/clang.ucl
new file mode 100644
--- /dev/null
+++ b/release/packages/ucl/clang.ucl
@@ -0,0 +1,11 @@
+deps {
+ "lld" {
+ version = "${VERSION}"
+ origin = "base"
+ }
+
+ "libcompiler_rt-dev" {
+ version = "${VERSION}"
+ origin = "base"
+ }
+}
diff --git a/release/packages/ucl/periodic.ucl b/release/packages/ucl/periodic.ucl
new file mode 100644
--- /dev/null
+++ b/release/packages/ucl/periodic.ucl
@@ -0,0 +1,6 @@
+deps {
+ "cron" {
+ version = "${VERSION}"
+ origin = "base"
+ }
+}
diff --git a/release/packages/ucl/rcmds.ucl b/release/packages/ucl/rcmds.ucl
new file mode 100644
--- /dev/null
+++ b/release/packages/ucl/rcmds.ucl
@@ -0,0 +1,8 @@
+deps {
+ # The RPC daemons require rpcbind.
+ "utilities" {
+ version = "${VERSION}"
+ origin = "base"
+ }
+}
+

File Metadata

Mime Type
text/plain
Expires
Sun, Jan 18, 5:14 PM (6 h, 18 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
27713110
Default Alt Text
D50283.diff (6 KB)

Event Timeline