From e5f95ec1b077ba491e807ddc1d025c5d7b15c3c7 Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Wed, 9 Jul 2014 21:18:04 +0100 Subject: [PATCH] package.bbclass: Generate runtime-rprovides data Currently, given a list of rdepends its near impossible to figure out which ones are potentially invalid and which might be an RPROVIDES of a package. This problem is simple to solve, we can write lookup data into the pkgdata. This patch does that, accounting for the fact that multiple packages can RPROVIDE the same thing (particularly with locales). Its done with symlinks so the performance overhead is minimal. (From OE-Core rev: 30b4bff944c4625696e9be97ce4912a2710d13e9) Signed-off-by: Richard Purdie --- meta/classes/package.bbclass | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/meta/classes/package.bbclass b/meta/classes/package.bbclass index 988e148..7358376 100644 --- a/meta/classes/package.bbclass +++ b/meta/classes/package.bbclass @@ -1134,11 +1134,11 @@ python emit_pkgdata() { val = d.getVar('%s_%s' % (var, pkg), True) if val: f.write('%s_%s: %s\n' % (var, pkg, encode(val))) - return + return val val = d.getVar('%s' % (var), True) if val: f.write('%s: %s\n' % (var, encode(val))) - return + return val def write_extra_pkgs(variants, pn, packages, pkgdatadir): for variant in variants: @@ -1207,7 +1207,7 @@ python emit_pkgdata() { write_if_exists(sf, pkg, 'DESCRIPTION') write_if_exists(sf, pkg, 'SUMMARY') write_if_exists(sf, pkg, 'RDEPENDS') - write_if_exists(sf, pkg, 'RPROVIDES') + rprov = write_if_exists(sf, pkg, 'RPROVIDES') write_if_exists(sf, pkg, 'RRECOMMENDS') write_if_exists(sf, pkg, 'RSUGGESTS') write_if_exists(sf, pkg, 'RREPLACES') @@ -1235,6 +1235,13 @@ python emit_pkgdata() { # Symlinks needed for reverse lookups (from the final package name) subdata_sym = pkgdatadir + "/runtime-reverse/%s" % pkgval oe.path.symlink("../runtime/%s" % pkg, subdata_sym, True) + + # Symlinks needed for rprovides lookup + if rprov: + for p in rprov.strip().split(): + subdata_sym = pkgdatadir + "/runtime-rprovides/%s/%s" % (p, pkg) + bb.utils.mkdirhier(os.path.dirname(subdata_sym)) + oe.path.symlink("../../runtime/%s" % pkg, subdata_sym, True) allow_empty = d.getVar('ALLOW_EMPTY_%s' % pkg, True) if not allow_empty: @@ -1254,7 +1261,7 @@ python emit_pkgdata() { bb.utils.unlockfile(lf) } -emit_pkgdata[dirs] = "${PKGDESTWORK}/runtime ${PKGDESTWORK}/runtime-reverse" +emit_pkgdata[dirs] = "${PKGDESTWORK}/runtime ${PKGDESTWORK}/runtime-reverse ${PKGDESTWORK}/runtime-rprovides" ldconfig_postinst_fragment() { if [ x"$D" = "x" ]; then -- 2.7.4