summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2006-09-27 07:01:45 +0000
committerZac Medico <zmedico@gentoo.org>2006-09-27 07:01:45 +0000
commit2d83c06a74d0d3db0b4f255467ada4c6a52738c6 (patch)
tree4abee140454a2714223f5717bb4f0f82c0f111cd
parentcd3d635d03ebebcd5c30abf45c8c921cb86bcd34 (diff)
downloadportage-2d83c06a74d0d3db0b4f255467ada4c6a52738c6.tar.gz
portage-2d83c06a74d0d3db0b4f255467ada4c6a52738c6.tar.bz2
portage-2d83c06a74d0d3db0b4f255467ada4c6a52738c6.zip
Make sure that all packages are in the dbapi when doing the blocker validation.
svn path=/main/trunk/; revision=4540
-rwxr-xr-xbin/emerge11
1 files changed, 11 insertions, 0 deletions
diff --git a/bin/emerge b/bin/emerge
index 2f35603a9..8bdaca5f9 100755
--- a/bin/emerge
+++ b/bin/emerge
@@ -1229,6 +1229,17 @@ class depgraph:
final state of the graph. Thus, it's possible that mutually blocking
packages will be installed simultaneously a some point(s) during the
transition from the initial to the final state."""
+
+ """ It's possible that some of the nodes haven't been added to the
+ fakedb yet, so make sure they're all accounted for."""
+ for node in self.digraph.all_nodes():
+ node_split = node.split()
+ mytype, myroot, mykey = node_split[0:3]
+ if mytype in self.pkg_tree_map:
+ mydb = self.trees[myroot][self.pkg_tree_map[mytype]].dbapi
+ myslot = mydb.aux_get(mykey, ["SLOT"])[0]
+ self.mydbapi[myroot].cpv_inject(mykey, myslot=myslot)
+
all_blockers = [node for node in self.digraph.all_nodes()
if node.split()[0] == "blocks"]
for blocker in all_blockers: