Don't repeatedly invoke the depend phase for ebuilds that are already known to be...
authorZac Medico <zmedico@gentoo.org>
Mon, 30 Jul 2007 02:53:45 +0000 (02:53 -0000)
committerZac Medico <zmedico@gentoo.org>
Mon, 30 Jul 2007 02:53:45 +0000 (02:53 -0000)
svn path=/main/branches/2.1.2.9/; revision=7439

pym/portage.py

index a81e423f0c5d19f3ae4e58a1cfb1b4cb926937ad..2f409ee751315782d666f6fb5a8ae33ef9f3378d 100644 (file)
@@ -5752,6 +5752,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
@@ -5910,6 +5911,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)
 
@@ -5919,6 +5922,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():