diff options
Diffstat (limited to 'pym/portage/sets/__init__.py')
-rw-r--r-- | pym/portage/sets/__init__.py | 23 |
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 |