summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--pym/emerge/__init__.py13
1 files changed, 11 insertions, 2 deletions
diff --git a/pym/emerge/__init__.py b/pym/emerge/__init__.py
index 6706dc0ce..e055ecee0 100644
--- a/pym/emerge/__init__.py
+++ b/pym/emerge/__init__.py
@@ -1743,16 +1743,19 @@ class depgraph(object):
myeb_matches = portdb.xmatch("match-visible", x)
myeb = None
ebuild_merge_node = None
+ installed_node = None
if myeb_matches and \
"--usepkgonly" not in self.myopts:
myeb = portage.best(myeb_matches)
ebuild_merge_node = ("ebuild", myroot, myeb, "merge")
+ installed_node = ("installed", myroot, myeb, "nomerge")
myeb_pkg=None
binary_merge_node = None
if "--usepkg" in self.myopts and \
not (ebuild_merge_node and \
- self.digraph.contains(ebuild_merge_node)):
+ (self.digraph.contains(ebuild_merge_node) or \
+ self.digraph.contains(installed_node))):
# The next line assumes the binarytree has been populated.
# XXX: Need to work out how we use the binary tree with roots.
myeb_pkg_matches = bindb.match(x)
@@ -1802,17 +1805,23 @@ class depgraph(object):
if "--usepkgonly" not in self.myopts and myeb_matches:
mydb = portdb
+ mytype = "ebuild"
if self.digraph.contains(ebuild_merge_node) and \
ebuild_merge_node not in self._slot_collision_nodes:
# reuse cached metadata
mydb = self.mydbapi[myroot]
+ elif self.digraph.contains(installed_node) and \
+ installed_node not in self._slot_collision_nodes:
+ # reuse cached metadata
+ mydb = self.mydbapi[myroot]
+ mytype = "installed"
metadata = dict(izip(self._mydbapi_keys,
mydb.aux_get(myeb, self._mydbapi_keys)))
if mydb is portdb:
pkgsettings.setcpv(myeb, mydb=portdb)
metadata["USE"] = pkgsettings["USE"]
matched_packages.append(
- (["ebuild", myroot, myeb], metadata))
+ ([mytype, myroot, myeb], metadata))
if not matched_packages and \
not (arg and "selective" not in self.myparams):