Fix depgraph.loadResumeCommand() to identify an unsatisfied dependency
authorZac Medico <zmedico@gentoo.org>
Sat, 3 May 2008 02:55:16 +0000 (02:55 -0000)
committerZac Medico <zmedico@gentoo.org>
Sat, 3 May 2008 02:55:16 +0000 (02:55 -0000)
and invalidate the resume list in that case.

svn path=/main/trunk/; revision=10119

pym/_emerge/__init__.py

index f09d821053d60dcfa3c8674bb0cb2181a035bec7..f2f95f84188efdbe0e604638a8db7816d80bf7e0 100644 (file)
@@ -4796,8 +4796,19 @@ class depgraph(object):
                                if isinstance(task, Package) and \
                                        task.operation == "merge":
                                        self._add_pkg(task, None)
-                       if not self._create_graph():
+
+                       # Allow unsatisfied deps here to avoid showing a masking
+                       # message for an unsatisfied dep that isn't necessarily
+                       # masked.
+                       if not self._create_graph(allow_unsatisfied=True):
                                return False
+                       if self._unsatisfied_deps:
+                               # This probably means that a required package
+                               # was dropped via --skipfirst. It makes the
+                               # resume list invalid, so convert it to a
+                               # PackageNotFound exception.
+                               raise portage.exception.PackageNotFound(
+                                       self._unsatisfied_deps[0].atom)
                        self._serialized_tasks_cache = None
                        try:
                                self.altlist()
@@ -7665,9 +7676,9 @@ def action_build(settings, trees, mtimedb,
                        out.eerror("Error: The resume list contains packages that are no longer")
                        out.eerror("       available to be emerged. Please restart/continue")
                        out.eerror("       the merge operation manually.")
-
-               if show_spinner:
-                       print "\b\b... done!"
+               else:
+                       if show_spinner:
+                               print "\b\b... done!"
 
                unsatisfied_block = False
                if success: