diff options
author | Zac Medico <zmedico@gentoo.org> | 2009-01-21 06:36:36 +0000 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2009-01-21 06:36:36 +0000 |
commit | 0a0cff7f2f4782593b9bc66be5da5bbdba70439b (patch) | |
tree | 9eac19e6bdbc7d9f5fe571fbeb9f6db926700bb2 | |
parent | 7d4ef7bd6309a79c60c44d73398d90fe23196687 (diff) | |
download | portage-0a0cff7f2f4782593b9bc66be5da5bbdba70439b.tar.gz portage-0a0cff7f2f4782593b9bc66be5da5bbdba70439b.tar.bz2 portage-0a0cff7f2f4782593b9bc66be5da5bbdba70439b.zip |
Inside depgraph.loadResumeCommand(), ignore unsatisified dependencies that
are pulled in by installed packages. This is needed in order to avoid having
--keep-going bail out needlessly when one of a group of circularly dependent
packages fails to install after one or more of the group have already been
installed. TODO: Add sanity checks to make sure that it's really safe to
ignore all the deps that can be ignored by this code.
svn path=/main/trunk/; revision=12541
-rw-r--r-- | pym/_emerge/__init__.py | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/pym/_emerge/__init__.py b/pym/_emerge/__init__.py index 478faf235..5802b1396 100644 --- a/pym/_emerge/__init__.py +++ b/pym/_emerge/__init__.py @@ -8514,13 +8514,19 @@ class depgraph(object): # masked. if not self._create_graph(allow_unsatisfied=True): return False - if masked_tasks or self._unsatisfied_deps: + + # TODO: Add sanity checks to make sure that it's really + # safe to ignore all the deps that can be ignored here. + unsatisfied_deps = [x for x in self._unsatisfied_deps \ + if isinstance(x.parent, Package) and \ + x.parent.operation == "merge"] + if masked_tasks or unsatisfied_deps: # This probably means that a required package # was dropped via --skipfirst. It makes the # resume list invalid, so convert it to a # UnsatisfiedResumeDep exception. raise self.UnsatisfiedResumeDep(self, - masked_tasks + self._unsatisfied_deps) + masked_tasks + unsatisfied_deps) self._serialized_tasks_cache = None try: self.altlist() |