diff options
author | Zac Medico <zmedico@gentoo.org> | 2012-09-23 16:22:35 -0700 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2012-09-23 16:22:35 -0700 |
commit | 439b2c8e8a09bc048de66d30905dbc086ee6796d (patch) | |
tree | a68a18524ee2a8434c4f6bdaa8170b1eef2a5bd6 /pym/_emerge/depgraph.py | |
parent | 6d8d0c02457c2e94c759fe89db0bef196b78158a (diff) | |
download | portage-439b2c8e8a09bc048de66d30905dbc086ee6796d.tar.gz portage-439b2c8e8a09bc048de66d30905dbc086ee6796d.tar.bz2 portage-439b2c8e8a09bc048de66d30905dbc086ee6796d.zip |
Add _get_feature_flags(eapi_attrs) function.
This will be useful for adding flags that behave specially in
experimental EAPIs, such as the targetroot/sysroot flag which is
planned for EAPI 5-hdepend.
Diffstat (limited to 'pym/_emerge/depgraph.py')
-rw-r--r-- | pym/_emerge/depgraph.py | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py index ac70d4315..9da202c62 100644 --- a/pym/_emerge/depgraph.py +++ b/pym/_emerge/depgraph.py @@ -23,13 +23,14 @@ from portage.dep import Atom, best_match_to_list, extract_affecting_use, \ check_required_use, human_readable_required_use, match_from_list, \ _repo_separator from portage.dep._slot_operator import ignore_built_slot_operator_deps -from portage.eapi import eapi_has_strong_blocks, eapi_has_required_use +from portage.eapi import eapi_has_strong_blocks, eapi_has_required_use, \ + _get_eapi_attrs from portage.exception import (InvalidAtom, InvalidDependString, PackageNotFound, PortageException) from portage.output import colorize, create_color_func, \ darkgreen, green bad = create_color_func("BAD") -from portage.package.ebuild.config import _feature_flags +from portage.package.ebuild.config import _get_feature_flags from portage.package.ebuild.getmaskingstatus import \ _getmaskingstatus, _MaskReason from portage._sets import SETPREFIX @@ -1229,20 +1230,22 @@ class depgraph(object): in ("y", "auto")) newuse = "--newuse" in self._frozen_config.myopts changed_use = "changed-use" == self._frozen_config.myopts.get("--reinstall") + feature_flags = _get_feature_flags( + _get_eapi_attrs(pkg.metadata["EAPI"])) if newuse or (binpkg_respect_use and not changed_use): flags = set(orig_iuse.symmetric_difference( cur_iuse).difference(forced_flags)) flags.update(orig_iuse.intersection(orig_use).symmetric_difference( cur_iuse.intersection(cur_use))) - flags.difference_update(_feature_flags) + flags.difference_update(feature_flags) if flags: return flags elif changed_use or binpkg_respect_use: flags = set(orig_iuse.intersection(orig_use).symmetric_difference( cur_iuse.intersection(cur_use))) - flags.difference_update(_feature_flags) + flags.difference_update(feature_flags) if flags: return flags return None |