When a resume list is rejected, display the invalid resume list data
authorZac Medico <zmedico@gentoo.org>
Sat, 3 May 2008 23:09:17 +0000 (23:09 -0000)
committerZac Medico <zmedico@gentoo.org>
Sat, 3 May 2008 23:09:17 +0000 (23:09 -0000)
in case the user is interested. This is enabled with --verbose or
--debug.

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

pym/_emerge/__init__.py

index 2a4db05851a3e3518c960f8c6ac78e8968842913..e7e8e0779010f73a886d11926fc9580017767c5e 100644 (file)
@@ -4763,7 +4763,9 @@ class depgraph(object):
                favorites = resume_data.get("favorites")
                if isinstance(favorites, list):
                        self._load_favorites(resume_data)
-               mergelist = resume_data.get("mergelist", [])
+               mergelist = resume_data.get("mergelist")
+               if not isinstance(mergelist, list):
+                       mergelist = []
 
                if mergelist and "--skipfirst" in self.myopts:
                        for i, task in enumerate(mergelist):
@@ -7717,6 +7719,7 @@ def action_build(settings, trees, mtimedb,
                del myopts["--tree"]
                portage.writemsg(colorize("WARN", " * ") + \
                        "--tree is broken with --nodeps. Disabling...\n")
+       debug = "--debug" in myopts
        verbose = "--verbose" in myopts
        quiet = "--quiet" in myopts
        if pretend or fetchonly:
@@ -7778,6 +7781,19 @@ def action_build(settings, trees, mtimedb,
                        from portage.output import EOutput
                        out = EOutput()
 
+                       resume_data = mtimedb["resume"]
+                       mergelist = resume_data.get("mergelist")
+                       if not isinstance(mergelist, list):
+                               mergelist = []
+                       if mergelist and debug or (verbose and not quiet):
+                               out.eerror("Invalid resume list:")
+                               out.eerror("")
+                               indent = "  "
+                               for task in mergelist:
+                                       if isinstance(task, list):
+                                               out.eerror(indent + str(tuple(task)))
+                               out.eerror("")
+
                        if isinstance(e, mydepgraph.UnsatisfiedResumeDep):
                                out.eerror("One or more expected dependencies " + \
                                        "are not installed:")