summaryrefslogtreecommitdiffstats
path: root/pym
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2006-03-25 13:57:45 +0000
committerZac Medico <zmedico@gentoo.org>2006-03-25 13:57:45 +0000
commitb5f4edad3cd0ffc85bcef6ae9ed0f74cf878881d (patch)
treeb8cc126df53313a4174711a437e278788a8ac720 /pym
parent81c83f4d81716cd7485a9ea393a344e5df50a521 (diff)
downloadportage-b5f4edad3cd0ffc85bcef6ae9ed0f74cf878881d.tar.gz
portage-b5f4edad3cd0ffc85bcef6ae9ed0f74cf878881d.tar.bz2
portage-b5f4edad3cd0ffc85bcef6ae9ed0f74cf878881d.zip
Add lazy loading of virtuals in portage.do_vartree() for backward compatibility.
svn path=/main/trunk/; revision=3004
Diffstat (limited to 'pym')
-rw-r--r--pym/portage.py24
1 files changed, 22 insertions, 2 deletions
diff --git a/pym/portage.py b/pym/portage.py
index 5aca71a91..3becb1b9b 100644
--- a/pym/portage.py
+++ b/pym/portage.py
@@ -6574,9 +6574,29 @@ def getvirtuals(myroot):
return settings.getvirtuals(myroot)
def do_vartree(mysettings):
- db["/"] = {"vartree":vartree("/")}
+ class LazyVirtualsDict(dict):
+ def __init__(self, myroot):
+ super(LazyVirtualsDict, self).__init__()
+ self.myroot = myroot
+ self["virtuals"] = None
+ def __getitem__(self, key):
+ if "virtuals" == key:
+ if "virtuals" in self:
+ virtuals = super(LazyVirtualsDict, self).__getitem__("virtuals")
+ if virtuals is not None:
+ return virtuals
+ else:
+ global settings
+ virtuals = settings.getvirtuals(self.myroot)
+ self["virtuals"] = virtuals
+ return virtuals
+ return super(LazyVirtualsDict, self).__getitem__(key)
+ global db, root
+ db["/"] = LazyVirtualsDict("/")
+ db["/"]["vartree"] = vartree("/")
if root!="/":
- db[root] = {"vartree":vartree(root)}
+ db[root] = LazyVirtualsDict(root)
+ db[root]["vartree"] = vartree(root)
#We need to create the vartree first, then load our settings, and then set up our other trees
usedefaults=settings.use_defs