Lines 20-25
Link Here
|
20 |
except KeyboardInterrupt: |
20 |
except KeyboardInterrupt: |
21 |
sys.exit(1) |
21 |
sys.exit(1) |
22 |
|
22 |
|
|
|
23 |
import gc |
23 |
import os, stat |
24 |
import os, stat |
24 |
import platform |
25 |
import platform |
25 |
|
26 |
|
Lines 1773-1778
Link Here
|
1773 |
self._cp_map = {} |
1774 |
self._cp_map = {} |
1774 |
self._cpv_map = {} |
1775 |
self._cpv_map = {} |
1775 |
|
1776 |
|
|
|
1777 |
def clear(self): |
1778 |
""" |
1779 |
Remove all packages. |
1780 |
""" |
1781 |
if self._cpv_map: |
1782 |
self._clear_cache() |
1783 |
self._cp_map.clear() |
1784 |
self._cpv_map.clear() |
1785 |
|
1776 |
def copy(self): |
1786 |
def copy(self): |
1777 |
obj = PackageVirtualDbapi(self.settings) |
1787 |
obj = PackageVirtualDbapi(self.settings) |
1778 |
obj._match_cache = self._match_cache.copy() |
1788 |
obj._match_cache = self._match_cache.copy() |
Lines 3828-3833
Link Here
|
3828 |
retlist.reverse() |
3849 |
retlist.reverse() |
3829 |
return retlist |
3850 |
return retlist |
3830 |
|
3851 |
|
|
|
3852 |
def break_refs(self, mergelist): |
3853 |
""" |
3854 |
Take a mergelist like that returned from self.altlist() and |
3855 |
break any references that lead back to the depgraph. This is |
3856 |
useful if you want to hold references to packages without |
3857 |
also holding the depgraph on the heap. |
3858 |
""" |
3859 |
for node in mergelist: |
3860 |
if not isinstance(node, Package): |
3861 |
continue |
3862 |
|
3863 |
# The visible packages cache has fullfilled it's purpose |
3864 |
# and it's no longer needed, so free the memory. |
3865 |
node.root_config.visible_pkgs.clear() |
3866 |
|
3867 |
if isinstance(node.root_config.trees["vartree"], FakeVartree): |
3868 |
# The FakeVartree references the _package_cache which |
3869 |
# references the depgraph. So that Package instances don't |
3870 |
# hold the depgraph and FakeVartree on the heap, replace |
3871 |
# the FakeVartree reference with the real vartree. |
3872 |
node.root_config.trees["vartree"] = \ |
3873 |
self._trees_orig[node.root]["vartree"] |
3874 |
|
3831 |
def _resolve_conflicts(self): |
3875 |
def _resolve_conflicts(self): |
3832 |
if not self._complete_graph(): |
3876 |
if not self._complete_graph(): |
3833 |
raise self._unknown_internal_error() |
3877 |
raise self._unknown_internal_error() |
Lines 8738-8744
Link Here
|
8738 |
mtimedb.filename = None |
8782 |
mtimedb.filename = None |
8739 |
time.sleep(3) # allow the parent to have first fetch |
8783 |
time.sleep(3) # allow the parent to have first fetch |
8740 |
mymergelist = mydepgraph.altlist() |
8784 |
mymergelist = mydepgraph.altlist() |
|
|
8785 |
mydepgraph.break_refs(mymergelist) |
8741 |
del mydepgraph |
8786 |
del mydepgraph |
|
|
8787 |
clear_caches(trees) |
8788 |
|
8742 |
retval = mergetask.merge(mymergelist, favorites, mtimedb) |
8789 |
retval = mergetask.merge(mymergelist, favorites, mtimedb) |
8743 |
merge_count = mergetask.curval |
8790 |
merge_count = mergetask.curval |
8744 |
else: |
8791 |
else: |
Lines 8779-8785
Link Here
|
8779 |
|
8826 |
|
8780 |
pkglist = mydepgraph.altlist() |
8827 |
pkglist = mydepgraph.altlist() |
8781 |
mydepgraph.saveNomergeFavorites() |
8828 |
mydepgraph.saveNomergeFavorites() |
|
|
8829 |
mydepgraph.break_refs(pkglist) |
8782 |
del mydepgraph |
8830 |
del mydepgraph |
|
|
8831 |
clear_caches(trees) |
8832 |
|
8783 |
mergetask = MergeTask(settings, trees, myopts) |
8833 |
mergetask = MergeTask(settings, trees, myopts) |
8784 |
retval = mergetask.merge(pkglist, favorites, mtimedb) |
8834 |
retval = mergetask.merge(pkglist, favorites, mtimedb) |
8785 |
merge_count = mergetask.curval |
8835 |
merge_count = mergetask.curval |
Lines 8903-8908
Link Here
|
8903 |
settings = trees[myroot]["vartree"].settings |
8953 |
settings = trees[myroot]["vartree"].settings |
8904 |
settings.validate() |
8954 |
settings.validate() |
8905 |
|
8955 |
|
|
|
8956 |
def clear_caches(trees): |
8957 |
for d in trees.itervalues(): |
8958 |
d["porttree"].dbapi.melt() |
8959 |
d["porttree"].dbapi._aux_cache.clear() |
8960 |
d["bintree"].dbapi._aux_cache.clear() |
8961 |
d["bintree"].dbapi._clear_cache() |
8962 |
gc.collect() |
8963 |
|
8906 |
def load_emerge_config(trees=None): |
8964 |
def load_emerge_config(trees=None): |
8907 |
kwargs = {} |
8965 |
kwargs = {} |
8908 |
for k, envvar in (("config_root", "PORTAGE_CONFIGROOT"), ("target_root", "ROOT")): |
8966 |
for k, envvar in (("config_root", "PORTAGE_CONFIGROOT"), ("target_root", "ROOT")): |