Don't repeatedly invoke the depend phase for ebuilds that are already known to be...
authorZac Medico <zmedico@gentoo.org>
Fri, 1 Jun 2007 19:23:59 +0000 (19:23 -0000)
committerZac Medico <zmedico@gentoo.org>
Fri, 1 Jun 2007 19:23:59 +0000 (19:23 -0000)
svn path=/main/branches/2.1.2/; revision=6714

pym/portage.py

index d4c6615b916bbcd5500e11bdc804ef28798d1ab3..8d42596f25602836d7d5b4cb4a5057fa6faa24fa 100644 (file)
@@ -5755,6 +5755,7 @@ class portdbapi(dbapi):
                # Selectively cache metadata in order to optimize dep matching.
                self._aux_cache_keys = set(["EAPI", "KEYWORDS", "SLOT"])
                self._aux_cache = {}
+               self._broken_ebuilds = set()
 
        def _init_cache_dirs(self):
                """Create /var/cache/edb/dep and adjust permissions for the portage
@@ -5913,6 +5914,8 @@ class portdbapi(dbapi):
                writemsg("auxdb is valid: "+str(not doregen)+" "+str(pkg)+"\n", 2)
 
                if doregen:
+                       if myebuild in self._broken_ebuilds:
+                               raise KeyError(mycpv)
                        writemsg("doregen: %s %s\n" % (doregen,mycpv), 2)
                        writemsg("Generating cache entry(0) for: "+str(myebuild)+"\n",1)
 
@@ -5922,6 +5925,7 @@ class portdbapi(dbapi):
                                self.doebuild_settings["ROOT"], self.doebuild_settings,
                                dbkey=mydata, tree="porttree", mydbapi=self)
                        if myret != os.EX_OK:
+                               self._broken_ebuilds.add(myebuild)
                                raise KeyError(mycpv)
 
                        if "EAPI" not in mydata or not mydata["EAPI"].strip():