summaryrefslogtreecommitdiffstats
path: root/pym
diff options
context:
space:
mode:
Diffstat (limited to 'pym')
-rw-r--r--pym/portage/sets/__init__.py54
1 files changed, 30 insertions, 24 deletions
diff --git a/pym/portage/sets/__init__.py b/pym/portage/sets/__init__.py
index 7ac6502b7..b892bb308 100644
--- a/pym/portage/sets/__init__.py
+++ b/pym/portage/sets/__init__.py
@@ -22,10 +22,10 @@ def get_boolean(options, name, default):
class SetConfigError(Exception):
pass
-class SetConfig(SafeConfigParser):
+class SetConfig(object):
def __init__(self, paths, settings, trees):
- SafeConfigParser.__init__(self)
- self.read(paths)
+ self._parser = SafeConfigParser()
+ self._parser.read(paths)
self.errors = []
self.psets = {}
self.trees = trees
@@ -34,6 +34,7 @@ class SetConfig(SafeConfigParser):
self.active = []
def update(self, setname, options):
+ parser = self._parser
self.errors = []
if not setname in self.psets:
options["name"] = setname
@@ -41,30 +42,32 @@ class SetConfig(SafeConfigParser):
# for the unlikely case that there is already a section with the requested setname
import random
- while setname in self.sections():
+ while setname in parser.sections():
setname = "%08d" % random.randint(0, 10**10)
- self.add_section(setname)
+ parser.add_section(setname)
for k, v in options.items():
- self.set(setname, k, v)
+ parser.set(setname, k, v)
else:
section = self.psets[setname].creator
- if self.has_option(section, "multiset") and self.getboolean(section, "multiset"):
+ if parser.has_option(section, "multiset") and \
+ parser.getboolean(section, "multiset"):
self.errors.append("Invalid request to reconfigure set '%s' generated by multiset section '%s'" % (setname, section))
return
for k, v in options.items():
- self.set(section, k, v)
+ parser.set(section, k, v)
self._parse(update=True)
def _parse(self, update=False):
if self._parsed and not update:
return
- for sname in self.sections():
+ parser = self._parser
+ for sname in parser.sections():
# find classname for current section, default to file based sets
- if not self.has_option(sname, "class"):
+ if not parser.has_option(sname, "class"):
classname = "portage.sets.files.StaticFileSet"
else:
- classname = self.get(sname, "class")
+ classname = parser.get(sname, "class")
# try to import the specified class
try:
@@ -77,11 +80,12 @@ class SetConfig(SafeConfigParser):
continue
# prepare option dict for the current section
optdict = {}
- for oname in self.options(sname):
- optdict[oname] = self.get(sname, oname)
+ for oname in parser.options(sname):
+ optdict[oname] = parser.get(sname, oname)
# create single or multiple instances of the given class depending on configuration
- if self.has_option(sname, "multiset") and self.getboolean(sname, "multiset"):
+ if parser.has_option(sname, "multiset") and \
+ parser.getboolean(sname, "multiset"):
if hasattr(setclass, "multiBuilder"):
newsets = {}
try:
@@ -93,7 +97,8 @@ class SetConfig(SafeConfigParser):
if x in self.psets and not update:
self.errors.append("Redefinition of set '%s' (sections: '%s', '%s')" % (x, self.psets[x].creator, sname))
newsets[x].creator = sname
- if self.has_option(sname, "world-candidate") and not self.getboolean(sname, "world-candidate"):
+ if parser.has_option(sname, "world-candidate") and \
+ not parser.getboolean(sname, "world-candidate"):
newsets[x].world_candidate = False
self.psets.update(newsets)
else:
@@ -101,7 +106,7 @@ class SetConfig(SafeConfigParser):
continue
else:
try:
- setname = self.get(sname, "name")
+ setname = parser.get(sname, "name")
except NoOptionError:
setname = sname
if setname in self.psets and not update:
@@ -110,7 +115,8 @@ class SetConfig(SafeConfigParser):
try:
self.psets[setname] = setclass.singleBuilder(optdict, self.settings, self.trees)
self.psets[setname].creator = sname
- if self.has_option(sname, "world-candidate") and not self.getboolean(sname, "world-candidate"):
+ if parser.has_option(sname, "world-candidate") and \
+ not parser.getboolean(sname, "world-candidate"):
self.psets[setname].world_candidate = False
except SetConfigError, e:
self.errors.append("Configuration error in section '%s': %s" % (sname, str(e)))
@@ -127,7 +133,7 @@ class SetConfig(SafeConfigParser):
def getSetAtoms(self, setname, ignorelist=None):
myset = self.getSets()[setname]
myatoms = myset.getAtoms()
-
+ parser = self._parser
extend = set()
remove = set()
intersect = set()
@@ -135,12 +141,12 @@ class SetConfig(SafeConfigParser):
if ignorelist is None:
ignorelist = set()
if not setname in ignorelist:
- if self.has_option(myset.creator, "extend"):
- extend.update(self.get(myset.creator, "extend").split())
- if self.has_option(myset.creator, "remove"):
- remove.update(self.get(myset.creator, "remove").split())
- if self.has_option(myset.creator, "intersect"):
- intersect.update(self.get(myset.creator, "intersect").split())
+ if parser.has_option(myset.creator, "extend"):
+ extend.update(parser.get(myset.creator, "extend").split())
+ if parser.has_option(myset.creator, "remove"):
+ remove.update(parser.get(myset.creator, "remove").split())
+ if parser.has_option(myset.creator, "intersect"):
+ intersect.update(parser.get(myset.creator, "intersect").split())
ignorelist.add(setname)
for n in myset.getNonAtoms():