diff options
author | Zac Medico <zmedico@gentoo.org> | 2007-10-26 05:18:38 +0000 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2007-10-26 05:18:38 +0000 |
commit | 0c140401072f7dba238b0cbe6c347d5109b01b2d (patch) | |
tree | 2b37f17cd71a1083f504bf0f7448d10c21e464d5 | |
parent | ba0491404ac6055b38870901f5ec88d484f3820f (diff) | |
download | portage-0c140401072f7dba238b0cbe6c347d5109b01b2d.tar.gz portage-0c140401072f7dba238b0cbe6c347d5109b01b2d.tar.bz2 portage-0c140401072f7dba238b0cbe6c347d5109b01b2d.zip |
Allow sets to get through world file validation and
expand properly. It's now possible to put @system
in the world file and get the old behavior where
world includes system.
svn path=/main/trunk/; revision=8307
-rw-r--r-- | pym/portage/sets/__init__.py | 2 | ||||
-rw-r--r-- | pym/portage/sets/files.py | 18 |
2 files changed, 15 insertions, 5 deletions
diff --git a/pym/portage/sets/__init__.py b/pym/portage/sets/__init__.py index 315747f10..9f562820b 100644 --- a/pym/portage/sets/__init__.py +++ b/pym/portage/sets/__init__.py @@ -101,7 +101,7 @@ class SetConfig(SafeConfigParser): for n in myset.getNonAtoms(): if n[0] == SETPREFIX and n[1:] in self.aliases: if n[1:] not in ignorelist: - myatoms.update(self.getSetAtoms(n), ignorelist=ignorelist) + myatoms.update(self.getSetAtoms(n[1:])) return myatoms def make_default_config(settings, trees): diff --git a/pym/portage/sets/files.py b/pym/portage/sets/files.py index f0dfd78e2..010966c2a 100644 --- a/pym/portage/sets/files.py +++ b/pym/portage/sets/files.py @@ -4,13 +4,14 @@ import errno import os +from itertools import chain from portage.util import grabfile, write_atomic, ensure_dirs from portage.const import PRIVATE_PATH, USER_CONFIG_PATH from portage.locks import lockfile, unlockfile from portage import portage_gid from portage.sets.base import PackageSet, EditablePackageSet -from portage.sets import SetConfigError +from portage.sets import SetConfigError, SETPREFIX from portage.env.loaders import ItemFileLoader, KeyListFileLoader from portage.env.validators import ValidAtomValidator from portage import dep_getkey, cpv_getkey @@ -25,7 +26,7 @@ class StaticFileSet(EditablePackageSet): self._filename = filename self._mtime = None self.description = "Package set loaded from file %s" % self._filename - self.loader = ItemFileLoader(self._filename, ValidAtomValidator) + self.loader = ItemFileLoader(self._filename, self._validate) metadata = grabfile(self._filename + ".metadata") key = None @@ -45,9 +46,13 @@ class StaticFileSet(EditablePackageSet): else: if key != None: setattr(self, key, " ".join(value)) - + + def _validate(self, atom): + return ValidAtomValidator(atom) + def write(self): - write_atomic(self._filename, "\n".join(sorted(self._atoms))+"\n") + write_atomic(self._filename, "\n".join(sorted( + chain(self._atoms, self._nonatoms)))+"\n") def load(self): try: @@ -127,6 +132,11 @@ class WorldSet(StaticFileSet): super(WorldSet, self).__init__(os.path.join(os.sep, root, PRIVATE_PATH.lstrip(os.sep), "world")) self._lock = None + def _validate(self, atom): + if atom.startswith(SETPREFIX): + return True + return ValidAtomValidator(atom) + def _ensure_dirs(self): ensure_dirs(os.path.dirname(self._filename), gid=portage_gid, mode=02750, mask=02) |