diff options
author | Zac Medico <zmedico@gentoo.org> | 2013-01-01 22:03:54 -0800 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2013-01-02 02:45:14 -0800 |
commit | 373ef95f11e805c52be79c7563a73cc65062b615 (patch) | |
tree | a6507f7e7eeaa5628f6b0b15d4f3f440ede5ec59 /pym/_emerge/Scheduler.py | |
parent | 5681942aabf65daa31c5e591f0d1d99e0d2bc70f (diff) | |
download | portage-373ef95f11e805c52be79c7563a73cc65062b615.tar.gz portage-373ef95f11e805c52be79c7563a73cc65062b615.tar.bz2 portage-373ef95f11e805c52be79c7563a73cc65062b615.zip |
resume_depgraph: check for alternative installed
When pruning packages from the merge list, only prune them if the
relevant dependency is not satisfied by an alternative package which
is already installed. This should fix bug #448176, and now there's also
reasons logged for why a particular package is dropped.
Diffstat (limited to 'pym/_emerge/Scheduler.py')
-rw-r--r-- | pym/_emerge/Scheduler.py | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/pym/_emerge/Scheduler.py b/pym/_emerge/Scheduler.py index 6a494970e..a42327473 100644 --- a/pym/_emerge/Scheduler.py +++ b/pym/_emerge/Scheduler.py @@ -1791,7 +1791,7 @@ class Scheduler(PollScheduler): # scope e = exc mydepgraph = e.depgraph - dropped_tasks = set() + dropped_tasks = {} if e is not None: def unsatisfied_resume_dep_msg(): @@ -1841,7 +1841,7 @@ class Scheduler(PollScheduler): self._init_graph(mydepgraph.schedulerGraph()) msg_width = 75 - for task in dropped_tasks: + for task, atoms in dropped_tasks.items(): if not (isinstance(task, Package) and task.operation == "merge"): continue pkg = task @@ -1849,7 +1849,10 @@ class Scheduler(PollScheduler): " %s" % (pkg.cpv,) if pkg.root_config.settings["ROOT"] != "/": msg += " for %s" % (pkg.root,) - msg += " dropped due to unsatisfied dependency." + if not atoms: + msg += " dropped because it is masked or unavailable" + else: + msg += " dropped because it requires %s" % ", ".join(atoms) for line in textwrap.wrap(msg, msg_width): eerror(line, phase="other", key=pkg.cpv) settings = self.pkgsettings[pkg.root] |