Pass eapi to check_required_use more.
authorZac Medico <zmedico@gentoo.org>
Mon, 27 Aug 2012 22:16:50 +0000 (15:16 -0700)
committerZac Medico <zmedico@gentoo.org>
Mon, 27 Aug 2012 22:16:50 +0000 (15:16 -0700)
pym/_emerge/depgraph.py
pym/_emerge/resolver/circular_dependency.py
pym/portage/package/ebuild/doebuild.py

index 0f3bc9389c93889461bb1e7da8c449aa6a134a43..5c49e69897d2b0748994722382f741dfea7899dd 100644 (file)
@@ -1482,7 +1482,8 @@ class depgraph(object):
                        required_use_is_sat = check_required_use(
                                pkg.metadata["REQUIRED_USE"],
                                self._pkg_use_enabled(pkg),
-                               pkg.iuse.is_valid_flag)
+                               pkg.iuse.is_valid_flag,
+                               eapi=pkg.metadata["EAPI"])
                        if not required_use_is_sat:
                                if dep.atom is not None and dep.parent is not None:
                                        self._add_parent_atom(pkg, (dep.parent, dep.atom))
@@ -3372,7 +3373,8 @@ class depgraph(object):
                                                        if not check_required_use(
                                                                pkg.metadata["REQUIRED_USE"],
                                                                self._pkg_use_enabled(pkg),
-                                                               pkg.iuse.is_valid_flag):
+                                                               pkg.iuse.is_valid_flag,
+                                                               eapi=pkg.metadata["EAPI"]):
                                                                required_use_unsatisfied.append(pkg)
                                                                continue
                                                root_slot = (pkg.root, pkg.slot_atom)
@@ -3431,8 +3433,10 @@ class depgraph(object):
                                                new_use.add(flag)
                                        for flag in need_disable:
                                                new_use.discard(flag)
-                                       if check_required_use(required_use, old_use, pkg.iuse.is_valid_flag) and \
-                                               not check_required_use(required_use, new_use, pkg.iuse.is_valid_flag):
+                                       if check_required_use(required_use, old_use,
+                                               pkg.iuse.is_valid_flag, eapi=pkg.metadata["EAPI"]) \
+                                               and not check_required_use(required_use, new_use,
+                                               pkg.iuse.is_valid_flag, eapi=pkg.metadata["EAPI"]):
                                                        required_use_warning = ", this change violates use flag constraints " + \
                                                                "defined by %s: '%s'" % (pkg.cpv, human_readable_required_use(required_use))
 
@@ -3480,8 +3484,12 @@ class depgraph(object):
                                                                new_use.discard(flag)
                                                        else:
                                                                new_use.add(flag)
-                                               if check_required_use(required_use, old_use, myparent.iuse.is_valid_flag) and \
-                                                       not check_required_use(required_use, new_use, myparent.iuse.is_valid_flag):
+                                               if check_required_use(required_use, old_use,
+                                                       myparent.iuse.is_valid_flag,
+                                                       eapi=myparent.metadata["EAPI"]) and \
+                                                       not check_required_use(required_use, new_use,
+                                                       myparent.iuse.is_valid_flag,
+                                                       eapi=myparent.metadata["EAPI"]):
                                                                required_use_warning = ", this change violates use flag constraints " + \
                                                                        "defined by %s: '%s'" % (myparent.cpv, \
                                                                        human_readable_required_use(required_use))
@@ -3570,7 +3578,8 @@ class depgraph(object):
                        reduced_noise = check_required_use(
                                pkg.metadata["REQUIRED_USE"],
                                self._pkg_use_enabled(pkg),
-                               pkg.iuse.is_valid_flag).tounicode()
+                               pkg.iuse.is_valid_flag,
+                               eapi=pkg.metadata["EAPI"]).tounicode()
                        writemsg("    %s\n" % \
                                human_readable_required_use(reduced_noise),
                                noiselevel=-1)
@@ -4133,8 +4142,10 @@ class depgraph(object):
                if new_changes != old_changes:
                        #Don't do the change if it violates REQUIRED_USE.
                        required_use = pkg.metadata.get("REQUIRED_USE")
-                       if required_use and check_required_use(required_use, old_use, pkg.iuse.is_valid_flag) and \
-                               not check_required_use(required_use, new_use, pkg.iuse.is_valid_flag):
+                       if required_use and check_required_use(required_use, old_use,
+                               pkg.iuse.is_valid_flag, eapi=pkg.metadata["EAPI"]) and \
+                               not check_required_use(required_use, new_use,
+                               pkg.iuse.is_valid_flag, eapi=pkg.metadata["EAPI"]):
                                return old_use
 
                        if any(x in pkg.use.mask for x in new_changes) or \
index aca81face5b5b982c7b2101f6e2e2e8e84298429..1433f418c7fe5913bc7f2728474e970aac93b77f 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright 2010-2011 Gentoo Foundation
+# Copyright 2010-2012 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
 
 from __future__ import print_function
@@ -144,7 +144,8 @@ class circular_dependency_handler(object):
                        #If any of the flags we're going to touch is in REQUIRED_USE, add all
                        #other flags in REQUIRED_USE to affecting_use, to not lose any solution.
                        required_use_flags = get_required_use_flags(
-                               parent.metadata.get("REQUIRED_USE", ""))
+                               parent.metadata.get("REQUIRED_USE", ""),
+                               eapi=parent.metadata["EAPI"])
 
                        if affecting_use.intersection(required_use_flags):
                                # TODO: Find out exactly which REQUIRED_USE flags are
@@ -188,7 +189,9 @@ class circular_dependency_handler(object):
                                        #Make sure it doesn't conflict with REQUIRED_USE.
                                        required_use = parent.metadata.get("REQUIRED_USE", "")
 
-                                       if check_required_use(required_use, current_use, parent.iuse.is_valid_flag):
+                                       if check_required_use(required_use, current_use,
+                                               parent.iuse.is_valid_flag,
+                                               eapi=parent.metadata["EAPI"]):
                                                use = self.depgraph._pkg_use_enabled(parent)
                                                solution = set()
                                                for flag, state in zip(affecting_use, use_state):
index ef51da1b481e9c50b2ef0fd13f395026b3eeb6a3..6e7e63c40b8dcff0cae6e2bea89e0c74d5a68f07 100644 (file)
@@ -1302,7 +1302,7 @@ def _validate_deps(mysettings, myroot, mydo, mydbapi):
                pkg.metadata["REQUIRED_USE"] and \
                eapi_has_required_use(pkg.metadata["EAPI"]):
                result = check_required_use(pkg.metadata["REQUIRED_USE"],
-                       pkg.use.enabled, pkg.iuse.is_valid_flag)
+                       pkg.use.enabled, pkg.iuse.is_valid_flag, eapi=pkg.metadata["EAPI"])
                if not result:
                        reduced_noise = result.tounicode()
                        writemsg("\n  %s\n" % _("The following REQUIRED_USE flag" + \