@@ -184,8 +184,6 @@ def deb_write_pkg(pkg, d):
# '<' = less or equal
# '>' = greater or equal
# adjust these to the '<<' and '>>' equivalents
- # Also, "=" specifiers only work if they have the PR in, so 1.2.3 != 1.2.3-r0
- # so to avoid issues, map this to ">= 1.2.3 << 1.2.3.0"
for dep in list(var.keys()):
if '(' in dep or '/' in dep:
newdep = re.sub(r'[(:)/]', '__', dep)
@@ -200,10 +198,6 @@ def deb_write_pkg(pkg, d):
var[dep][i] = var[dep][i].replace("< ", "<< ")
elif (v or "").startswith("> "):
var[dep][i] = var[dep][i].replace("> ", ">> ")
- elif (v or "").startswith("= ") and "-r" not in v:
- ver = var[dep][i].replace("= ", "")
- var[dep][i] = var[dep][i].replace("= ", ">= ")
- var[dep].append("<< " + ver + ".0")
rdepends = bb.utils.explode_dep_versions2(localdata.getVar("RDEPENDS") or "")
debian_cmp_remap(rdepends)
@@ -220,8 +214,7 @@ def deb_write_pkg(pkg, d):
del rrecommends[dep]
rsuggests = bb.utils.explode_dep_versions2(localdata.getVar("RSUGGESTS") or "")
debian_cmp_remap(rsuggests)
- # Deliberately drop version information here, not wanted/supported by deb
- rprovides = dict.fromkeys(bb.utils.explode_dep_versions2(localdata.getVar("RPROVIDES") or ""), [])
+ rprovides = bb.utils.explode_dep_versions2(localdata.getVar("RPROVIDES") or "")
# Remove file paths if any from rprovides, debian does not support custom providers
for key in list(rprovides.keys()):
if key.startswith('/'):
@@ -18,15 +18,18 @@ ALLOW_EMPTY:${PN} = "1"
PR[vardeps] += "DUMMYPROVIDES"
PR[vardeps] += "DUMMYPROVIDES_PACKAGES"
+DUMMYMAXVER ?= "999.9-r9"
DUMMYPROVIDES_PACKAGES ??= ""
DUMMYPROVIDES_PACKAGES_FILTERED = "${@' '.join([pkg for pkg in d.getVar('DUMMYPROVIDES_PACKAGES').split() if d.getVar('IMAGE_INSTALL') is not None and pkg not in d.getVar('IMAGE_INSTALL').split()])}"
DUMMYPROVIDES_PACKAGES_MULTILIB = "${@' '.join([multilib_pkg_extend(d, pkg) for pkg in d.getVar('DUMMYPROVIDES_PACKAGES_FILTERED').split()])}"
+DUMMYPROVIDES_MAXVER := "${@' '.join(['{} (= {})'.format(pkg, d.getVar('DUMMYMAXVER')) for pkg in d.getVar('DUMMYPROVIDES_PACKAGES_MULTILIB').split()]) + d.getVar('DUMMYPROVIDES')}"
+DUMMYCONFLICTS := "${@' '.join(['{} (< {})'.format(pkg, d.getVar('DUMMYMAXVER')) for pkg in d.getVar('DUMMYPROVIDES_PACKAGES_MULTILIB').split()])}"
DUMMYPROVIDES += "${DUMMYPROVIDES_PACKAGES_MULTILIB}"
python populate_packages:prepend() {
p = d.getVar("PN")
- d.appendVar("RPROVIDES:%s" % p, "${DUMMYPROVIDES}")
- d.appendVar("RCONFLICTS:%s" % p, "${DUMMYPROVIDES_PACKAGES_MULTILIB}")
- d.appendVar("RREPLACES:%s" % p, "${DUMMYPROVIDES_PACKAGES_MULTILIB}")
+ d.appendVar("RPROVIDES:%s" % p, "${DUMMYPROVIDES_MAXVER}")
+ d.appendVar("RCONFLICTS:%s" % p, "${DUMMYCONFLICTS}")
+ d.appendVar("RREPLACES:%s" % p, "${DUMMYCONFLICTS}")
}
dpkg and apt seem to handle versioned provides correctly now [1] so this workaround is not needed anymore. This fixes [Yocto #14995] for package_deb. [1] Signed-off-by: Pavel Zhukov <pavel@zhukoff.net> --- meta/classes-global/package_deb.bbclass | 9 +-------- meta/recipes-core/meta/dummy-sdk-package.inc | 9 ++++++--- 2 files changed, 7 insertions(+), 11 deletions(-)