summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2008-08-17 19:23:54 +0000
committerZac Medico <zmedico@gentoo.org>2008-08-17 19:23:54 +0000
commit249f75c929dcb1c62c982ca82e9853d45bae92db (patch)
treebce94552d9458b0b9c9ebea86b095bcfb5b3249b
parent9b59e3925a43a56280b54e12957fdf18fe0b187a (diff)
downloadportage-249f75c929dcb1c62c982ca82e9853d45bae92db.tar.gz
portage-249f75c929dcb1c62c982ca82e9853d45bae92db.tar.bz2
portage-249f75c929dcb1c62c982ca82e9853d45bae92db.zip
Clear dbapi caches just after deleting the depgraph in action_build().
This trims down the heap size by a few megs, for bug #229069. (trunk r10769) svn path=/main/branches/2.1.2/; revision=11428
-rwxr-xr-xbin/emerge13
1 files changed, 13 insertions, 0 deletions
diff --git a/bin/emerge b/bin/emerge
index 88e1b9478..51bcdcad6 100755
--- a/bin/emerge
+++ b/bin/emerge
@@ -20,6 +20,7 @@ try:
except KeyboardInterrupt:
sys.exit(1)
+import gc
import os, stat
os.environ["PORTAGE_LEGACY_GLOBALS"] = "false"
@@ -8654,6 +8655,8 @@ def action_build(settings, trees, mtimedb,
time.sleep(3) # allow the parent to have first fetch
mymergelist = mydepgraph.altlist()
del mydepgraph
+ clear_caches(trees)
+
retval = mergetask.merge(mymergelist, favorites, mtimedb)
merge_count = mergetask.curval
else:
@@ -8695,6 +8698,8 @@ def action_build(settings, trees, mtimedb,
pkglist = mydepgraph.altlist()
mydepgraph.saveNomergeFavorites()
del mydepgraph
+ clear_caches(trees)
+
mergetask = MergeTask(settings, trees, myopts)
retval = mergetask.merge(pkglist, favorites, mtimedb)
merge_count = mergetask.curval
@@ -8817,6 +8822,14 @@ def validate_ebuild_environment(trees):
settings = trees[myroot]["vartree"].settings
settings.validate()
+def clear_caches(trees):
+ for d in trees.itervalues():
+ d["porttree"].dbapi.melt()
+ d["porttree"].dbapi._aux_cache.clear()
+ d["bintree"].dbapi._aux_cache.clear()
+ d["bintree"].dbapi._clear_cache()
+ gc.collect()
+
def load_emerge_config(trees=None):
kwargs = {}
for k, envvar in (("config_root", "PORTAGE_CONFIGROOT"), ("target_root", "ROOT")):