packages: Set dependency origin in generate-ucl.lua

Commit 822fd56067 changed the origin of packages from "base"
to "base/<package name>", but the old origin was still used for
dependencies.

Aside from being wrong, this confuses pkg <= 2.3.1 and causes
"pkg info -d" to show the dependencies as "<pkgname>-(null)"
instead of the correct version string.

Remove the explicit origin from dependencies in the UCL files,
and instead populate this during the build in generate-ucl.lua.
In the (very unlikely) case that an explicit origin is still
needed, don't overwrite one if it's already present.

MFC after:	1 day
Fixes: 822fd56067 ("pkgbase: set origin for each packages as base/FreeBSD-*")
Reported by:	bapt
Reviewed by:	cperciva, bapt
Sponsored by:	https://www.patreon.com/bsdivy
Differential Revision:	https://reviews.freebsd.org/D52892
This commit is contained in:
Lexi Winter 2025-10-08 04:24:25 +01:00
parent 349f4fd382
commit a507a7026c
26 changed files with 9 additions and 40 deletions

View file

@ -75,15 +75,15 @@ end
-- Add dependencies from SET_DEPENDS.
for dep in string.gmatch(pkgdeps, "[^%s]+") do
obj["deps"][dep] = {
["origin"] = "base"
["origin"] = "base/"..dep
}
end
-- Add a version key to all dependencies, otherwise pkg doesn't like it.
-- Add a version and origin key to all dependencies, otherwise pkg
-- doesn't like it.
for dep, opts in pairs(obj["deps"]) do
if obj["deps"][dep]["version"] == nil then
obj["deps"][dep]["version"] = pkgversion
end
obj["deps"][dep]["origin"] = obj["deps"][dep]["origin"] or "base/"..dep
obj["deps"][dep]["version"] = obj["deps"][dep]["version"] or pkgversion
end
-- If there are no dependencies, remove the deps key, otherwise pkg raises an

View file

@ -161,7 +161,7 @@ if add_gen_dep(pkgname, pkggenname) then
end
obj["deps"][pkggenname] = {
["version"] = pkgversion,
["origin"] = "base"
["origin"] = "base/"..pkgprefix.."-"..pkggenname,
}
end
@ -217,6 +217,8 @@ if pkgprefix ~= nil and obj["deps"] ~= nil then
newdeps = {}
for dep, opts in pairs(obj["deps"]) do
local newdep = pkgprefix .. "-" .. dep
-- Make sure origin is set.
opts["origin"] = opts["origin"] or "base/"..newdep
newdeps[newdep] = opts
end
obj["deps"] = newdeps

View file

@ -4,7 +4,7 @@
name = "${PKG_NAME_PREFIX}-set-${PKGNAME}"
prefix = "/"
origin = "base"
origin = "base/${PKG_NAME_PREFIX}-set-${PKGNAME}"
categories = [ base ]
version = "${VERSION}"
maintainer = "${PKG_MAINTAINER}"

View file

@ -25,10 +25,8 @@ EOD
deps {
"set-minimal-dbg" {
version = "${VERSION}"
origin = "base"
},
"set-devel-dbg" {
version = "${VERSION}"
origin = "base"
}
}

View file

@ -25,10 +25,8 @@ EOD
deps {
"set-minimal-jail-dbg" {
version = "${VERSION}"
origin = "base"
},
"set-devel-dbg" {
version = "${VERSION}"
origin = "base"
}
}

View file

@ -28,14 +28,11 @@ EOD
deps {
"set-minimal-jail" {
version = "${VERSION}"
origin = "base"
},
"set-optional-jail" {
version = "${VERSION}"
origin = "base"
},
"set-devel" {
version = "${VERSION}"
origin = "base"
}
}

View file

@ -31,14 +31,11 @@ EOD
deps {
"set-minimal" {
version = "${VERSION}"
origin = "base"
},
"set-optional" {
version = "${VERSION}"
origin = "base"
},
"set-devel" {
version = "${VERSION}"
origin = "base"
}
}

View file

@ -26,6 +26,5 @@ EOD
deps {
"set-minimal-dbg" {
version = "${VERSION}"
origin = "base"
},
}

View file

@ -26,6 +26,5 @@ EOD
deps {
"set-minimal-jail-dbg" {
version = "${VERSION}"
origin = "base"
},
}

View file

@ -29,6 +29,5 @@ EOD
deps {
"set-minimal-jail" {
version = "${VERSION}"
origin = "base"
},
}

View file

@ -28,6 +28,5 @@ EOD
deps {
"set-minimal" {
version = "${VERSION}"
origin = "base"
},
}

View file

@ -20,13 +20,11 @@ deps {
# atrun relies on cron to work.
"cron" {
version = "${VERSION}"
origin = "base"
},
# at(1) passes the command to /bin/sh
"runtime" {
version = "${VERSION}"
origin = "base"
},
}

View file

@ -20,7 +20,6 @@ deps {
# rfcomm_pppd(8) uses ppp(8)
"ppp" {
version = "${VERSION}"
origin = "base"
},
}

View file

@ -20,6 +20,5 @@ deps {
# bsdconfig is written in shell script, so it needs /bin/sh
"runtime" {
version = "${VERSION}"
origin = "base"
},
}

View file

@ -20,6 +20,5 @@ deps {
# bsdinstall is written in shell script, so it needs /bin/sh
"runtime" {
version = "${VERSION}"
origin = "base"
},
}

View file

@ -1,7 +1,6 @@
deps {
"certctl": {
version = "${VERSION}"
origin = "base"
}
}
scripts: {

View file

@ -19,6 +19,5 @@
deps {
"openssl": {
version = "${VERSION}"
origin = "base"
}
}

View file

@ -1,11 +1,9 @@
deps {
"lld" {
version = "${VERSION}"
origin = "base"
}
"libcompiler_rt-dev" {
version = "${VERSION}"
origin = "base"
}
}

View file

@ -20,6 +20,5 @@ deps {
# devd uses /bin/sh to invoke hooks.
"runtime" {
version = "${VERSION}"
origin = "base"
},
}

View file

@ -2,6 +2,5 @@ deps {
# newsyslog uses bzip2 to compress log files.
"bzip2" {
version = "${VERSION}"
origin = "base"
}
}

View file

@ -19,6 +19,5 @@
deps {
"cron" {
version = "${VERSION}"
origin = "base"
}
}

View file

@ -19,7 +19,6 @@
deps {
"runtime": {
version = "${VERSION}"
origin = "base"
}
}

View file

@ -20,7 +20,6 @@ deps {
# The RPC daemons require rpcbind.
"utilities" {
version = "${VERSION}"
origin = "base"
}
}

View file

@ -20,6 +20,5 @@ deps {
# sendmail requires make to build its configuration file.
"bmake": {
version = "${VERSION}"
origin = "base"
}
}

View file

@ -27,20 +27,17 @@ deps {
# Nearly all the tests require atf to run.
"atf": {
version = "${VERSION}"
origin = "base"
},
# The test framework requires Kyua.
"kyua": {
version = "${VERSION}"
origin = "base"
},
# Since the purpose of the tests is to test the base system, the base
# system must be installed.
"set-base": {
version = "${VERSION}"
origin = "base"
}
}

View file

@ -20,6 +20,5 @@ deps {
# YP requires bmake to rebuild the database.
"bmake": {
version = "${VERSION}"
origin = "base"
}
}