Make use_reduce() call Atom.evaluate_conditionals() when matchall is False,
authorZac Medico <zmedico@gentoo.org>
Thu, 26 Aug 2010 17:12:25 +0000 (10:12 -0700)
committerZac Medico <zmedico@gentoo.org>
Thu, 26 Aug 2010 17:12:25 +0000 (10:12 -0700)
and pass token_class=Atom in use_reduce() calls so that external
Atom.evaluate_conditionals() calls can be eliminated.

pym/portage/dbapi/bintree.py
pym/portage/dep/__init__.py
pym/portage/dep/dep_check.py
pym/portage/package/ebuild/doebuild.py

index 9b1535e499d24b23e8c85b5b9f85749a3b5ff722..b4e2407838d81837d11b7e32c64203fb95f2cfa8 100644 (file)
@@ -18,7 +18,7 @@ portage.proxy.lazyimport.lazyimport(globals(),
 
 from portage.cache.mappings import slot_dict_class
 from portage.dbapi.virtual import fakedbapi
-from portage.dep import use_reduce, paren_enclose
+from portage.dep import Atom, use_reduce, paren_enclose
 from portage.exception import InvalidPackageName, \
        PermissionDenied, PortageException
 from portage.localization import _
@@ -1087,22 +1087,12 @@ class binarytree(object):
                for k in self._pkgindex_use_evaluated_keys:
                        try:
                                deps = metadata[k]
-                               deps = use_reduce(deps, uselist=raw_use)
+                               deps = use_reduce(deps, uselist=raw_use, token_class=Atom)
                                deps = paren_enclose(deps)
                        except portage.exception.InvalidDependString as e:
                                writemsg("%s: %s\n" % (k, str(e)),
                                        noiselevel=-1)
                                raise
-                       if k in _vdb_use_conditional_atoms:
-                               v_split = []
-                               for x in deps.split():
-                                       try:
-                                               x = portage.dep.Atom(x)
-                                       except portage.exception.InvalidAtom:
-                                               v_split.append(x)
-                                       else:
-                                               v_split.append(str(x.evaluate_conditionals(raw_use)))
-                               deps = ' '.join(v_split)
                        metadata[k] = deps
 
        def exists_specific(self, cpv):
index c6bd4ea21a9457323f16aaa8e5e5fdf7bd3bdc17..8a31b3f6d48e7baa8b021d5774a7d8406216a261 100644 (file)
@@ -486,6 +486,10 @@ def use_reduce(depstr, uselist=[], masklist=[], matchall=False, excludeall=[], i
                                                raise portage.exception.InvalidDependString(
                                                        _("Invalid token '%s' in '%s', token %s") % (token, depstr, pos+1))
 
+                                       if not matchall and \
+                                               hasattr(token, 'evaluate_conditionals'):
+                                               token = token.evaluate_conditionals(uselist)
+
                        stack[level].append(token)
 
        if level != 0:
index 9b4e97097b5334dee38faa017b301f827ff50d44..bfbdc608e87f77301d9e6f76aacd6d645b7126fe 100644 (file)
@@ -80,11 +80,6 @@ def _expand_new_virtuals(mysplit, edebug, mydbapi, mysettings, myroot="/",
                if repoman:
                        x = x._eval_qa_conditionals(use_mask, use_force)
 
-               if not repoman and \
-                       myuse is not None and x.use:
-                       if x.use.conditional:
-                               x = x.evaluate_conditionals(myuse)
-
                mykey = x.cp
                if not mykey.startswith("virtual/"):
                        newsplit.append(x)
index af4ee5ef410739468c5b606e801be887e4785ecf..9b2e3e8e775536b0c6b52845ffd95ac8bd8a81c2 100644 (file)
@@ -1463,20 +1463,10 @@ def _post_src_install_uid_fix(mysettings, out):
                v = mysettings.configdict['pkg'].get(k)
                if v is None:
                        continue
-               v = use_reduce(v, uselist=use)
+               v = use_reduce(v, uselist=use, token_class=Atom)
                v = paren_enclose(v)
                if not v:
                        continue
-               if v in _vdb_use_conditional_atoms:
-                       v_split = []
-                       for x in v.split():
-                               try:
-                                       x = Atom(x)
-                               except InvalidAtom:
-                                       v_split.append(x)
-                               else:
-                                       v_split.append(str(x.evaluate_conditionals(use)))
-                       v = ' '.join(v_split)
                codecs.open(_unicode_encode(os.path.join(build_info_dir,
                        k), encoding=_encodings['fs'], errors='strict'),
                        mode='w', encoding=_encodings['repo.content'],