summaryrefslogtreecommitdiffstats
path: root/pym/portage/sets/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'pym/portage/sets/__init__.py')
-rw-r--r--pym/portage/sets/__init__.py23
1 files changed, 23 insertions, 0 deletions
diff --git a/pym/portage/sets/__init__.py b/pym/portage/sets/__init__.py
index f88e1b6ee..8e6a0ea86 100644
--- a/pym/portage/sets/__init__.py
+++ b/pym/portage/sets/__init__.py
@@ -33,6 +33,29 @@ class SetConfig(SafeConfigParser):
self._parsed = False
self.active = []
+ def update(self, setname, options):
+ self.errors = []
+ if not setname in self.psets:
+ options["name"] = setname
+
+ # for the unlikely case that there is already a section with the requested setname
+ import random
+ while setname in self.sections():
+ setname = "%08d" % random.randint(0, 10**10)
+
+ self.add_section(setname)
+ for k, v in options.items():
+ self.set(setname, k, v)
+ else:
+ section = self.psets[setname].creator
+ if self.has_option(section, "multiset") and self.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)
+ self._parsed = False
+ self._parse()
+
def _parse(self):
if self._parsed:
return