Add a function to query IUSE_EFFECTIVE for flags. --- bin/eapi.sh | 4 ++++ bin/phase-helpers.sh | 16 ++++++++++++++++ pym/portage/eapi.py | 3 +++ pym/portage/package/ebuild/doebuild.py | 2 +- 4 files changed, 24 insertions(+), 1 deletion(-)
diff --git a/bin/eapi.sh b/bin/eapi.sh index c650a4c..e0ade02 100644 --- a/bin/eapi.sh +++ b/bin/eapi.sh @@ -80,6 +80,10 @@ ___eapi_has_eapply_user() { [[ ! ${1-${EAPI}} =~ ^(0|1|2|3|4|4-python|4-slot-abi|5|5-hdepend|5-progress)$ ]] } +___eapi_has_in_iuse() { + [[ ! ${1-${EAPI}} =~ ^(0|1|2|3|4|4-python|4-slot-abi|5|5-hdepend|5-progress)$ ]] +} + ___eapi_has_master_repositories() { [[ ${1-${EAPI}} =~ ^(5-progress)$ ]] } diff --git a/bin/phase-helpers.sh b/bin/phase-helpers.sh index 60f7a39..2eada2f 100644 --- a/bin/phase-helpers.sh +++ b/bin/phase-helpers.sh @@ -973,6 +973,22 @@ if ___eapi_has_eapply_user; then } fi +if ___eapi_has_in_iuse; then + in_iuse() { + local use=${1} + + if [[ -z "${use}" ]]; then + echo "!!! in_iuse() called without a parameter." >&2 + echo "!!! in_iuse <USEFLAG>" >&2 + die "in_iuse() called without a parameter" + fi + + local liuse=( ${IUSE_EFFECTIVE} ) + + has "${use}" "${liuse[@]#[+-]}" + } +fi + if ___eapi_has_master_repositories; then master_repositories() { local output repository=$1 retval diff --git a/pym/portage/eapi.py b/pym/portage/eapi.py index 7217d23..386c81d 100644 --- a/pym/portage/eapi.py +++ b/pym/portage/eapi.py @@ -68,6 +68,9 @@ def eapi_has_required_use_at_most_one_of(eapi): def eapi_has_use_dep_defaults(eapi): return eapi not in ("0", "1", "2", "3") +def eapi_has_in_iuse(eapi): + return eapi not in ("0", "1", "2", "3", "4", "4-python", "4-slot-abi", "5", "5-progress") + def eapi_has_repo_deps(eapi): return eapi in ("4-python", "5-progress") diff --git a/pym/portage/package/ebuild/doebuild.py b/pym/portage/package/ebuild/doebuild.py index 01707ae..29fb0df 100644 --- a/pym/portage/package/ebuild/doebuild.py +++ b/pym/portage/package/ebuild/doebuild.py @@ -54,7 +54,7 @@ from portage.dep import Atom, check_required_use, \ from portage.eapi import eapi_exports_KV, eapi_exports_merge_type, \ eapi_exports_replace_vars, eapi_exports_REPOSITORY, \ eapi_has_required_use, eapi_has_src_prepare_and_src_configure, \ - eapi_has_pkg_pretend, _get_eapi_attrs + eapi_has_pkg_pretend, _get_eapi_attrs, eapi_has_in_iuse from portage.elog import elog_process, _preload_elog_modules from portage.elog.messages import eerror, eqawarn from portage.exception import DigestException, FileNotFound, \ -- 2.0.4