diff options
-rw-r--r-- | pym/emerge/__init__.py | 38 |
1 files changed, 25 insertions, 13 deletions
diff --git a/pym/emerge/__init__.py b/pym/emerge/__init__.py index 652a3d355..6e0dc1d30 100644 --- a/pym/emerge/__init__.py +++ b/pym/emerge/__init__.py @@ -715,9 +715,9 @@ class DepPriority(object): return -1 if self.runtime_post: return -2 - if self.rebuild: - return -3 if self.buildtime: + if self.rebuild: + return -3 return -4 if self.runtime: return -5 @@ -1735,17 +1735,6 @@ class depgraph(object): ("blocks", p_root, x[1:]), set()).add(myparent) continue else: - #We are not processing a blocker but a normal dependency - if myparent: - """In some cases, dep_check will return deps that shouldn't - be proccessed any further, so they are identified and - discarded here.""" - if "empty" not in self.myparams and \ - "deep" not in self.myparams and \ - not ("--update" in self.myopts and parent_arg) and \ - vardb.match(x): - continue - # List of acceptable packages, ordered by type preference. matched_packages = [] myeb_matches = portdb.xmatch("match-visible", x) @@ -1965,6 +1954,29 @@ class depgraph(object): # ordered by type preference ("ebuild" type is the last resort) selected_pkg = matched_packages[0] + # In some cases, dep_check will return deps that shouldn't + # be proccessed any further, so they are identified and + # discarded here. Try to discard as few as possible since + # discarded dependencies reduce the amount of information + # available for optimization of merge order. + if myparent and not arg and vardb.match(x) and \ + not existing_node and \ + "empty" not in self.myparams and \ + "deep" not in self.myparams and \ + not ("--update" in self.myopts and parent_arg): + (mytype, myroot, mykey), metadata = selected_pkg + myarg = None + if myroot == self.target_root: + try: + myarg = self._set_atoms.findAtomForPackage( + mykey, metadata) + except portage.exception.InvalidDependString: + # This is already handled inside + # self.create() when necessary. + pass + if not myarg: + continue + if myparent: #we are a dependency, so we want to be unconditionally added mypriority = priority.copy() |