From patchwork Wed Jan 30 14:01:06 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [13/17] package.bbclass: Improve package_fixsymlinks Date: Wed, 30 Jan 2013 14:01:06 -0000 From: Richard Purdie X-Patchwork-Id: 43729 Message-Id: <9d8e396e13c8b203a48d79c9282046535bb0b8fe.1359554291.git.richard.purdie@linuxfoundation.org> To: openembedded-core@lists.openembedded.org Improve package_fixsymlinks so we don't handle RDEPENDS for every single package in PACKAGES. Signed-off-by: Richard Purdie --- meta/classes/package.bbclass | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/meta/classes/package.bbclass b/meta/classes/package.bbclass index 2f1695b..1ccac9c 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)) }