Make parent_use parameter for portage.dep.Atom.violated_conditionals() optional ...
authorSebastian Luther <SebastianLuther@gmx.de>
Tue, 25 May 2010 10:18:28 +0000 (12:18 +0200)
committerZac Medico <zmedico@gentoo.org>
Tue, 25 May 2010 11:43:46 +0000 (04:43 -0700)
pym/_emerge/depgraph.py
pym/portage/dep/__init__.py

index 3a35e84e9cf224a60205c325419ca5a0d90e0e23..ff561f7fa8390e4095878c5027bea87e6f465cc7 100644 (file)
@@ -2269,9 +2269,8 @@ class depgraph(object):
                                # Lets see if the violated use deps are conditional.
                                # If so, suggest to change them on the parent.
                                mreasons = []
-                               violated_atom = atom.unevaluated_atom.violated_conditionals(myparent.use.enabled, pkg.use.enabled)
-                               if violated_atom.use and not \
-                                       (violated_atom.use.enabled or violated_atom.use.disabled):
+                               violated_atom = atom.unevaluated_atom.violated_conditionals(pkg.use.enabled, myparent.use.enabled)
+                               if not (violated_atom.use.enabled or violated_atom.use.disabled):
                                        #all violated use deps are conditional
                                        changes = []
                                        conditional = violated_atom.use.conditional
index bc04e5be3a2c4e1678478f7f0a04c2f0cd25fe2a..5de6de1aea6ed80922376b5ccd9c74c70c4afbf4 100644 (file)
@@ -499,26 +499,28 @@ class _use_dep(object):
                tokens.extend(x for x in conditional.not_equal if x not in use)
 
                return _use_dep(tokens)
-               
-       def violated_conditionals(self, use, other_use):
+
+       def violated_conditionals(self, other_use, parent_use=None):
                """
-               Create a new instance with satisfied  conditionals removed.
+               Create a new instance with satisfied use deps removed.
                """
                tokens = []
-       
+
                conditional = self.conditional
                tokens.extend(x for x in self.enabled if x not in other_use)
                tokens.extend("-" + x for x in self.disabled if x in other_use)
                if conditional:
-                       tokens.extend(x + "?" for x in conditional.enabled if x in use and not x in other_use)
-                       tokens.extend("!" + x + "?" for x in conditional.disabled if x not in use and x in other_use)
-                       tokens.extend(x + "=" for x in conditional.equal if x in use and x not in other_use)
-                       tokens.extend(x + "=" for x in conditional.equal if x not in use and x in other_use)
-                       tokens.extend("!" + x + "=" for x in conditional.not_equal if x in use and x in other_use)
-                       tokens.extend("!" + x + "=" for x in conditional.not_equal if x not in use and x not in other_use)
-       
-               return _use_dep(tokens)
+                       if not parent_use:
+                               raise InvalidAtom("violated_conditionals needs 'parent_use'" + \
+                                       " parameter for conditional flags: '%s'" % (token,))
+                       tokens.extend(x + "?" for x in conditional.enabled if x in parent_use and not x in other_use)
+                       tokens.extend("!" + x + "?" for x in conditional.disabled if x not in parent_use and x in other_use)
+                       tokens.extend(x + "=" for x in conditional.equal if x in parent_use and x not in other_use)
+                       tokens.extend(x + "=" for x in conditional.equal if x not in parent_use and x in other_use)
+                       tokens.extend("!" + x + "=" for x in conditional.not_equal if x in parent_use and x in other_use)
+                       tokens.extend("!" + x + "=" for x in conditional.not_equal if x not in parent_use and x not in other_use)
 
+               return _use_dep(tokens)
 
        def _eval_qa_conditionals(self, use_mask, use_force):
                """
@@ -687,7 +689,7 @@ class Atom(_atom_base):
                atom += str(self.use.evaluate_conditionals(use))
                return Atom(atom, self)
 
-       def violated_conditionals(self, use, other_use):
+       def violated_conditionals(self, other_use, parent_use=None):
                """
                Create an atom instance with any USE conditional removed, that is
                satisfied by other_use.
@@ -703,7 +705,7 @@ class Atom(_atom_base):
                atom = remove_slot(self)
                if self.slot:
                        atom += ":%s" % self.slot
-               atom += str(self.use.violated_conditionals(use, other_use))
+               atom += str(self.use.violated_conditionals(other_use, parent_use))
                return Atom(atom, self)
 
        def __copy__(self):