* [gentoo-commits] portage r11747 - main/trunk/pym/portage/dbapi
@ 2008-10-30 3:38 Zac Medico (zmedico)
0 siblings, 0 replies; only message in thread
From: Zac Medico (zmedico) @ 2008-10-30 3:38 UTC (permalink / raw
To: gentoo-commits
Author: zmedico
Date: 2008-10-30 03:37:55 +0000 (Thu, 30 Oct 2008)
New Revision: 11747
Modified:
main/trunk/pym/portage/dbapi/vartree.py
Log:
In dblink.unmerge(), update the CONTENTS entries when preserved libs are
removed.
Modified: main/trunk/pym/portage/dbapi/vartree.py
===================================================================
--- main/trunk/pym/portage/dbapi/vartree.py 2008-10-30 03:04:08 UTC (rev 11746)
+++ main/trunk/pym/portage/dbapi/vartree.py 2008-10-30 03:37:55 UTC (rev 11747)
@@ -1959,6 +1959,7 @@
lib_graph = digraph()
preserved_nodes = set()
preserved_paths = set()
+ path_cpv_map = {}
path_node_map = {}
root = self.myroot
@@ -1974,8 +1975,9 @@
return node
linkmap = self.vartree.dbapi.linkmap
- for plibs in plib_dict.itervalues():
+ for cpv, plibs in plib_dict.iteritems():
for f in plibs:
+ path_cpv_map[f] = cpv
preserved_node = path_to_node(f)
if not preserved_node.file_exists():
continue
@@ -2019,6 +2021,7 @@
lib_graph.remove_edge(preserved_node, consumer_node)
break
+ removed_for_cpv = {}
while not lib_graph.empty():
root_nodes = preserved_nodes.intersection(lib_graph.root_nodes())
if not root_nodes:
@@ -2029,6 +2032,12 @@
unlink_list.update(node.alt_paths)
unlink_list = sorted(unlink_list)
for obj in unlink_list:
+ cpv = path_cpv_map[obj]
+ removed = removed_for_cpv.get(cpv)
+ if removed is None:
+ removed = set()
+ removed_for_cpv[cpv] = removed
+ removed.add(obj)
obj = os.path.join(root, obj.lstrip(os.sep))
if os.path.islink(obj):
obj_type = "sym"
@@ -2043,6 +2052,17 @@
else:
showMessage("<<< !needed %s %s\n" % (obj_type, obj))
+ for cpv, removed in removed_for_cpv.iteritems():
+ if not self.vartree.dbapi.cpv_exists(cpv):
+ for dblnk in others_in_slot:
+ if dblnk.mycpv == cpv:
+ # This one just got merged so it doesn't
+ # register with cpv_exists() yet.
+ self.vartree.dbapi.removeFromContents(dblnk, removed)
+ break
+ continue
+ self.vartree.dbapi.removeFromContents(cpv, removed)
+
plib_registry.pruneNonExisting()
finally:
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2008-10-30 3:38 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-10-30 3:38 [gentoo-commits] portage r11747 - main/trunk/pym/portage/dbapi Zac Medico (zmedico)
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox