From 2541f19612d59e5804186d531ac659dea918ccee Mon Sep 17 00:00:00 2001 From: Marius Mauch Date: Tue, 13 May 2008 20:05:27 +0000 Subject: ignore consumers from the current package instance when checking if a preserved library can be removed svn path=/main/trunk/; revision=10324 --- pym/portage/dbapi/vartree.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/pym/portage/dbapi/vartree.py b/pym/portage/dbapi/vartree.py index a150f4a00..edd588e6a 100644 --- a/pym/portage/dbapi/vartree.py +++ b/pym/portage/dbapi/vartree.py @@ -1261,7 +1261,7 @@ class dblink(object): # regenerate reverse NEEDED map self.vartree.dbapi.linkmap.rebuild() - + # remove preserved libraries that don't have any consumers left # FIXME: this code is quite ugly and can likely be optimized in several ways plib_dict = plib_registry.getPreservedLibs() @@ -1288,8 +1288,17 @@ class dblink(object): if not os.path.exists(f): continue unlink_list = [] - if not self.vartree.dbapi.linkmap.findConsumers(f): + consumers = self.vartree.dbapi.linkmap.findConsumers(f) + if not consumers: unlink_list.append(f) + else: + keep=False + for c in consumers: + if c not in self.getcontents(): + keep=True + break + if not keep: + unlink_list.append(f) for obj in unlink_list: try: if os.path.islink(obj): -- cgit v1.2.3-1-g7c22