From ca2ee871f82dd0ba4122a8373e4efd21cec5722b Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Tue, 29 Jan 2013 14:02:56 +0000 Subject: package.bbclass: Improve package_fixsymlinks Improve package_fixsymlinks so we don't handle RDEPENDS for every single package in PACKAGES. (From OE-Core rev: 20ff8feb95d54e4db646f8c0cb006ce187e288af) Signed-off-by: Richard Purdie --- meta/classes/package.bbclass | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) (limited to 'meta/classes/package.bbclass') diff --git a/meta/classes/package.bbclass b/meta/classes/package.bbclass index 2f1695b646..1ccac9cdb8 100644 --- a/meta/classes/package.bbclass +++ b/meta/classes/package.bbclass @@ -1064,24 +1064,29 @@ python package_fixsymlinks () { target = os.path.join(root[len(inst_root):], target) dangling_links[pkg].append(os.path.normpath(target)) - for pkg in packages: - rdepends = bb.utils.explode_dep_versions2(d.getVar('RDEPENDS_' + pkg, True) or d.getVar('RDEPENDS', True) or "") - + newrdepends = {} + for pkg in dangling_links: for l in dangling_links[pkg]: found = False bb.debug(1, "%s contains dangling link %s" % (pkg, l)) for p in packages: - for f in pkg_files[p]: - if f == l: + if l in pkg_files[p]: found = True bb.debug(1, "target found in %s" % p) if p == pkg: break - if p not in rdepends: - rdepends[p] = [] + if pkg not in newrdepends: + newrdepends[pkg] = [] + newrdepends[pkg].append(p) break if found == False: bb.note("%s contains dangling symlink to %s" % (pkg, l)) + + for pkg in newrdepends: + rdepends = bb.utils.explode_dep_versions2(d.getVar('RDEPENDS_' + pkg, True) or d.getVar('RDEPENDS', True) or "") + for p in newrdepends[pkg]: + if p not in rdepends: + rdepends[p] = [] d.setVar('RDEPENDS_' + pkg, bb.utils.join_deps(rdepends, commasep=False)) } -- cgit v1.2.3