# 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(
+ # UnsatisfiedResumeDep exception.
+ raise self.UnsatisfiedResumeDep(
self._unsatisfied_deps[0].atom)
self._serialized_tasks_cache = None
try:
if arg not in refs:
refs.append(arg)
+ class UnsatisfiedResumeDep(portage_exception.PortageException):
+ """
+ A dependency of a resume list is not installed. This
+ can occur when a required package is dropped from the
+ merge list via --skipfirst.
+ """
+
class _internal_exception(portage_exception.PortageException):
def __init__(self, value=""):
portage_exception.PortageException.__init__(self, value)
success = False
try:
success = mydepgraph.loadResumeCommand(mtimedb["resume"])
- except portage_exception.PackageNotFound:
+ except (portage_exception.PackageNotFound,
+ mydepgraph.UnsatisfiedResumeDep), e:
if show_spinner:
print
+ from textwrap import wrap
from output import EOutput
out = EOutput()
- 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 isinstance(e, mydepgraph.UnsatisfiedResumeDep):
+ out.eerror("An expected dependency " + \
+ "is not installed: %s" % str(e))
+ out.eerror("")
+ msg = "The resume list contains packages " + \
+ "with dependencies that have not been " + \
+ "installed yet. Please restart/continue " + \
+ "the operation manually."
+ for line in wrap(msg, 72):
+ out.eerror(line)
+ elif isinstance(e, portage_exception.PackageNotFound):
+ out.eerror("An expected package is " + \
+ "not available: %s" % str(e))
+ out.eerror("")
+ msg = "The resume list contains one or more " + \
+ "packages that are no longer " + \
+ "available. Please restart/continue " + \
+ "the operation manually."
+ for line in wrap(msg, 72):
+ out.eerror(line)
else:
if show_spinner:
print "\b\b... done!"