def eval_atom_use(atom):
if atom.use.conditional and 'USE' in os.environ:
use = os.environ['USE'].split()
- evaluated_atom = portage.dep.remove_slot(atom)
- if atom.slot:
- evaluated_atom += ":%s" % atom.slot
- evaluated_atom += str(atom.use.evaluate_conditionals(use))
- atom = portage.dep.Atom(evaluated_atom)
+ atom = atom.evaluate_conditionals(use)
return atom
#-----------------------------------------------------------------------------
if not repoman and \
myuse is not None and isinstance(x, portage.dep.Atom) and x.use:
if x.use.conditional:
- evaluated_atom = portage.dep.remove_slot(x)
- if x.slot:
- evaluated_atom += ":%s" % x.slot
- evaluated_atom += str(x.use.evaluate_conditionals(myuse))
- x = portage.dep.Atom(evaluated_atom)
+ x = x.evaluate_conditionals(myuse)
mykey = x.cp
if not mykey.startswith("virtual/"):
return False
+ def evaluate_conditionals(self, use):
+ """
+ Create an atom instance with any USE conditionals evaluated.
+ @param use: The set of enabled USE flags
+ @type other: set
+ @rtype: Atom
+ @return: an atom instance with any USE conditionals evaluated
+ """
+ if not self.use.conditional:
+ return self
+ atom = remove_slot(self)
+ if self.slot:
+ atom += ":%s" % self.slot
+ atom += str(self.use.evaluate_conditionals(use))
+ return Atom(atom)
+
def __copy__(self):
"""Immutable, so returns self."""
return self