Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F142240669
D50283.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
6 KB
Referenced Files
None
Subscribers
None
D50283.diff
View Options
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
Details
Attached
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)
Attached To
Mode
D50283: packages: handle dependencies in ucl
Attached
Detach File
Event Timeline
Log In to Comment