Gentoo Logo
Gentoo Spaceship




Note: Due to technical difficulties, the Archives are currently not up to date. GMANE provides an alternative service for most mailing lists.
c.f. bug 424647
List Archive: gentoo-commits
Navigation:
Lists: gentoo-commits: < Prev By Thread Next > < Prev By Date Next >
Headers:
To: gentoo-commits@g.o
From: "Zac Medico (zmedico)" <zmedico@g.o>
Subject: portage r11817 - main/trunk/pym/portage/dbapi
Date: Fri, 07 Nov 2008 15:39:36 +0000
Author: zmedico
Date: 2008-11-07 15:39:35 +0000 (Fri, 07 Nov 2008)
New Revision: 11817

Modified:
   main/trunk/pym/portage/dbapi/vartree.py
Log:
Inside LinkageMap._libs, use a SlotDict to store consumers and providers,
to use less memory than a normal dict.


Modified: main/trunk/pym/portage/dbapi/vartree.py
===================================================================
--- main/trunk/pym/portage/dbapi/vartree.py	2008-11-07 08:56:55 UTC (rev 11816)
+++ main/trunk/pym/portage/dbapi/vartree.py	2008-11-07 15:39:35 UTC (rev 11817)
@@ -29,6 +29,7 @@
 
 from portage.elog import elog_process
 from portage.elog.filtering import filter_mergephases, filter_unmergephases
+from portage.cache.mappings import slot_dict_class
 
 import os, re, shutil, stat, errno, copy, subprocess
 import logging
@@ -144,6 +145,9 @@
 
 	"""Models dynamic linker dependencies."""
 
+	_soname_map_class = slot_dict_class(
+		("consumers", "providers"), prefix="")
+
 	def __init__(self, vardbapi):
 		self._dbapi = vardbapi
 		self._root = self._dbapi.root
@@ -282,16 +286,27 @@
 				"$ORIGIN", os.path.dirname(obj)).split(":"))])
 			needed = filter(None, fields[4].split(","))
 			if soname:
-				libs.setdefault(soname, \
-						{arch: {"providers": set(), "consumers": set()}})
-				libs[soname].setdefault(arch, \
-						{"providers": set(), "consumers": set()})
-				libs[soname][arch]["providers"].add(obj_key)
+				soname_map = libs.get(soname)
+				if soname_map is None:
+					soname_map = {}
+					libs[soname] = soname_map
+				arch_map = soname_map.get(arch)
+				if arch_map is None:
+					arch_map = self._soname_map_class(
+						providers=set(), consumers=set())
+					soname_map[arch] = arch_map
+				arch_map.providers.add(obj_key)
 			for x in needed:
-				libs.setdefault(x, \
-						{arch: {"providers": set(), "consumers": set()}})
-				libs[x].setdefault(arch, {"providers": set(), "consumers": set()})
-				libs[x][arch]["consumers"].add(obj_key)
+				soname_map = libs.get(x)
+				if soname_map is None:
+					soname_map = {}
+					libs[x] = soname_map
+				arch_map = soname_map.get(arch)
+				if arch_map is None:
+					arch_map = self._soname_map_class(
+						providers=set(), consumers=set())
+					soname_map[arch] = arch_map
+				arch_map.consumers.add(obj_key)
 			obj_key_cache.setdefault(obj, obj_key)
 			# All object paths are added into the obj_properties tuple
 			obj_properties.setdefault(obj_key, \



Navigation:
Lists: gentoo-commits: < Prev By Thread Next > < Prev By Date Next >
Previous by thread:
gentoo-x86 commit in x11-wm/awesome: ChangeLog awesome-3.1_rc1.ebuild awesome-2.3.2.ebuild awesome-3.0.ebuild
Next by thread:
gentoo-x86 commit in lxde-base/lxsession-lite: metadata.xml lxsession-lite-0.3.6.ebuild ChangeLog
Previous by date:
gentoo-x86 commit in x11-wm/awesome: ChangeLog awesome-3.1_rc1.ebuild awesome-2.3.2.ebuild awesome-3.0.ebuild
Next by date:
gentoo-x86 commit in lxde-base/lxsession-lite: metadata.xml lxsession-lite-0.3.6.ebuild ChangeLog


Updated Aug 14, 2010

Summary: Archive of the gentoo-commits mailing list.

Donate to support our development efforts.

Copyright 2001-2013 Gentoo Foundation, Inc. Questions, Comments? Contact us.