diff options
author | Marius Mauch <genone@gentoo.org> | 2008-05-13 20:05:27 +0000 |
---|---|---|
committer | Marius Mauch <genone@gentoo.org> | 2008-05-13 20:05:27 +0000 |
commit | 2541f19612d59e5804186d531ac659dea918ccee (patch) | |
tree | eb5d87cd33d7021cde5d12a799580fbf2c4abf3a | |
parent | 284000fb7a11b6b58d4908ba180dc32152598b05 (diff) | |
download | portage-2541f19612d59e5804186d531ac659dea918ccee.tar.gz portage-2541f19612d59e5804186d531ac659dea918ccee.tar.bz2 portage-2541f19612d59e5804186d531ac659dea918ccee.zip |
ignore consumers from the current package instance when checking if a preserved library can be removed
svn path=/main/trunk/; revision=10324
-rw-r--r-- | pym/portage/dbapi/vartree.py | 13 |
1 files 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): |