summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2007-07-30 02:53:45 +0000
committerZac Medico <zmedico@gentoo.org>2007-07-30 02:53:45 +0000
commit87acc0ea4786c928d68a3522afcd59e07415cc50 (patch)
treed3746aeb2a7f2086e970bf107c63e97bbbb98024
parent9a38813c3e73477e0ef09c565e237a87ec8dfbf8 (diff)
downloadportage-87acc0ea4786c928d68a3522afcd59e07415cc50.tar.gz
portage-87acc0ea4786c928d68a3522afcd59e07415cc50.tar.bz2
portage-87acc0ea4786c928d68a3522afcd59e07415cc50.zip
Don't repeatedly invoke the depend phase for ebuilds that are already known to be broken. (branches/2.1.2 r6714)
svn path=/main/branches/2.1.2.9/; revision=7439
-rw-r--r--pym/portage.py4
1 files changed, 4 insertions, 0 deletions
diff --git a/pym/portage.py b/pym/portage.py
index a81e423f0..2f409ee75 100644
--- a/pym/portage.py
+++ b/pym/portage.py
@@ -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():