Observed as a breakage on binutils ebuilds:

> ERROR: sys-devel/binutils-2.24-r3::gentoo failed (depend phase):
>  use() calls are not allowed in global scope
>    Call stack:
>    ebuild.sh, line 584:  Called source 'binutils-2.24-r3.ebuild,
>    ebuild.sh, line   7:  Called inherit 'toolchain-binutils'
>    ebuild.sh, line 280:  Called __qa_source 
> '/gentoo-32k/gentoo-x86/eclass/toolchain-binutils.e
>    ebuild.sh, line  80:  Called source 
> '/gentoo-32k/gentoo-x86/eclass/toolchain-binutils.eclass
>  toolchain-binutils.eclass, line 106:  Called use 'multislot'
>                  ebuild.sh, line  47:  Called die
> The specific snippet of code:
>       # These functions die because calls to them during the "depend" phase

Zac confirms it's a safe thing to use ${EAPI-0} here:
> ebuild.sh unsets the EAPI just before it sources the ebuild,
> and then it does this after it sources the ebuild:
>
>   [ "${EAPI+set}" = set ] || EAPI=0
>
> So, for any code that is called while the ebuild is being sourced, using
> ${EAPI-0} would be correct.

For consistency and defense against future copy/paste errors
converted all uses of ${EAPI} for ${EAPI-0} in 'bin/eapi.sh'.

Signed-off-by: Sergei Trofimovich <sly...@gentoo.org>
---
 bin/eapi.sh | 90 ++++++++++++++++++++++++++++++-------------------------------
 1 file changed, 45 insertions(+), 45 deletions(-)

diff --git a/bin/eapi.sh b/bin/eapi.sh
index 7e7b54b..f1c677e 100644
--- a/bin/eapi.sh
+++ b/bin/eapi.sh
@@ -5,189 +5,189 @@
 # PHASES
 
 ___eapi_has_pkg_pretend() {
-       [[ ! ${1-${EAPI}} =~ ^(0|1|2|3)$ ]]
+       [[ ! ${1-${EAPI-0}} =~ ^(0|1|2|3)$ ]]
 }
 
 ___eapi_has_src_prepare() {
-       [[ ! ${1-${EAPI}} =~ ^(0|1)$ ]]
+       [[ ! ${1-${EAPI-0}} =~ ^(0|1)$ ]]
 }
 
 ___eapi_has_src_configure() {
-       [[ ! ${1-${EAPI}} =~ ^(0|1)$ ]]
+       [[ ! ${1-${EAPI-0}} =~ ^(0|1)$ ]]
 }
 
 ___eapi_default_src_test_disables_parallel_jobs() {
-       [[ ${1-${EAPI}} =~ ^(0|1|2|3|4|4-python|4-slot-abi)$ ]]
+       [[ ${1-${EAPI-0}} =~ ^(0|1|2|3|4|4-python|4-slot-abi)$ ]]
 }
 
 ___eapi_has_S_WORKDIR_fallback() {
-       [[ ${1-${EAPI}} =~ ^(0|1|2|3)$ ]]
+       [[ ${1-${EAPI-0}} =~ ^(0|1|2|3)$ ]]
 }
 
 # VARIABLES
 
 ___eapi_has_prefix_variables() {
-       [[ ! ${1-${EAPI}} =~ ^(0|1|2)$ || " ${FEATURES} " == *" force-prefix "* 
]]
+       [[ ! ${1-${EAPI-0}} =~ ^(0|1|2)$ || " ${FEATURES} " == *" force-prefix 
"* ]]
 }
 
 ___eapi_has_HDEPEND() {
-       [[ ${1-${EAPI}} =~ ^(5-hdepend)$ ]]
+       [[ ${1-${EAPI-0}} =~ ^(5-hdepend)$ ]]
 }
 
 ___eapi_has_RDEPEND_DEPEND_fallback() {
-       [[ ${1-${EAPI}} =~ ^(0|1|2|3)$ ]]
+       [[ ${1-${EAPI-0}} =~ ^(0|1|2|3)$ ]]
 }
 
 # HELPERS PRESENCE
 
 ___eapi_has_dohard() {
-       [[ ${1-${EAPI}} =~ ^(0|1|2|3)$ ]]
+       [[ ${1-${EAPI-0}} =~ ^(0|1|2|3)$ ]]
 }
 
 ___eapi_has_dosed() {
-       [[ ${1-${EAPI}} =~ ^(0|1|2|3)$ ]]
+       [[ ${1-${EAPI-0}} =~ ^(0|1|2|3)$ ]]
 }
 
 ___eapi_has_einstall() {
-       [[ ${1-${EAPI}} =~ 
^(0|1|2|3|4|4-python|4-slot-abi|5|5-hdepend|5-progress)$ ]]
+       [[ ${1-${EAPI-0}} =~ 
^(0|1|2|3|4|4-python|4-slot-abi|5|5-hdepend|5-progress)$ ]]
 }
 
 ___eapi_has_dohtml_deprecated() {
-       [[ ! ${1-${EAPI}} =~ 
^(0|1|2|3|4|4-python|4-slot-abi|5|5-hdepend|5-progress)$ ]]
+       [[ ! ${1-${EAPI-0}} =~ 
^(0|1|2|3|4|4-python|4-slot-abi|5|5-hdepend|5-progress)$ ]]
 }
 
 ___eapi_has_docompress() {
-       [[ ! ${1-${EAPI}} =~ ^(0|1|2|3)$ ]]
+       [[ ! ${1-${EAPI-0}} =~ ^(0|1|2|3)$ ]]
 }
 
 ___eapi_has_nonfatal() {
-       [[ ! ${1-${EAPI}} =~ ^(0|1|2|3)$ ]]
+       [[ ! ${1-${EAPI-0}} =~ ^(0|1|2|3)$ ]]
 }
 
 ___eapi_has_doheader() {
-       [[ ! ${1-${EAPI}} =~ ^(0|1|2|3|4|4-python|4-slot-abi)$ ]]
+       [[ ! ${1-${EAPI-0}} =~ ^(0|1|2|3|4|4-python|4-slot-abi)$ ]]
 }
 
 ___eapi_has_usex() {
-       [[ ! ${1-${EAPI}} =~ ^(0|1|2|3|4|4-python|4-slot-abi)$ ]]
+       [[ ! ${1-${EAPI-0}} =~ ^(0|1|2|3|4|4-python|4-slot-abi)$ ]]
 }
 
 ___eapi_has_get_libdir() {
-       [[ ! ${1-${EAPI}} =~ 
^(0|1|2|3|4|4-python|4-slot-abi|5|5-hdepend|5-progress)$ ]]
+       [[ ! ${1-${EAPI-0}} =~ 
^(0|1|2|3|4|4-python|4-slot-abi|5|5-hdepend|5-progress)$ ]]
 }
 
 ___eapi_has_einstalldocs() {
-       [[ ! ${1-${EAPI}} =~ 
^(0|1|2|3|4|4-python|4-slot-abi|5|5-hdepend|5-progress)$ ]]
+       [[ ! ${1-${EAPI-0}} =~ 
^(0|1|2|3|4|4-python|4-slot-abi|5|5-hdepend|5-progress)$ ]]
 }
 
 ___eapi_has_eapply() {
-       [[ ! ${1-${EAPI}} =~ 
^(0|1|2|3|4|4-python|4-slot-abi|5|5-hdepend|5-progress)$ ]]
+       [[ ! ${1-${EAPI-0}} =~ 
^(0|1|2|3|4|4-python|4-slot-abi|5|5-hdepend|5-progress)$ ]]
 }
 
 ___eapi_has_eapply_user() {
-       [[ ! ${1-${EAPI}} =~ 
^(0|1|2|3|4|4-python|4-slot-abi|5|5-hdepend|5-progress)$ ]]
+       [[ ! ${1-${EAPI-0}} =~ 
^(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)$ ]]
+       [[ ! ${1-${EAPI-0}} =~ 
^(0|1|2|3|4|4-python|4-slot-abi|5|5-hdepend|5-progress)$ ]]
 }
 
 ___eapi_has_master_repositories() {
-       [[ ${1-${EAPI}} =~ ^(5-progress)$ ]]
+       [[ ${1-${EAPI-0}} =~ ^(5-progress)$ ]]
 }
 
 ___eapi_has_repository_path() {
-       [[ ${1-${EAPI}} =~ ^(5-progress)$ ]]
+       [[ ${1-${EAPI-0}} =~ ^(5-progress)$ ]]
 }
 
 ___eapi_has_available_eclasses() {
-       [[ ${1-${EAPI}} =~ ^(5-progress)$ ]]
+       [[ ${1-${EAPI-0}} =~ ^(5-progress)$ ]]
 }
 
 ___eapi_has_eclass_path() {
-       [[ ${1-${EAPI}} =~ ^(5-progress)$ ]]
+       [[ ${1-${EAPI-0}} =~ ^(5-progress)$ ]]
 }
 
 ___eapi_has_license_path() {
-       [[ ${1-${EAPI}} =~ ^(5-progress)$ ]]
+       [[ ${1-${EAPI-0}} =~ ^(5-progress)$ ]]
 }
 
 ___eapi_has_package_manager_build_user() {
-       [[ ${1-${EAPI}} =~ ^(5-progress)$ ]]
+       [[ ${1-${EAPI-0}} =~ ^(5-progress)$ ]]
 }
 
 ___eapi_has_package_manager_build_group() {
-       [[ ${1-${EAPI}} =~ ^(5-progress)$ ]]
+       [[ ${1-${EAPI-0}} =~ ^(5-progress)$ ]]
 }
 
 # HELPERS BEHAVIOR
 
 ___eapi_best_version_and_has_version_support_--host-root() {
-       [[ ! ${1-${EAPI}} =~ ^(0|1|2|3|4|4-python|4-slot-abi)$ ]]
+       [[ ! ${1-${EAPI-0}} =~ ^(0|1|2|3|4|4-python|4-slot-abi)$ ]]
 }
 
 ___eapi_unpack_supports_xz() {
-       [[ ! ${1-${EAPI}} =~ ^(0|1|2)$ ]]
+       [[ ! ${1-${EAPI-0}} =~ ^(0|1|2)$ ]]
 }
 
 ___eapi_unpack_supports_txz() {
-       [[ ! ${1-${EAPI}} =~ 
^(0|1|2|3|4|4-python|4-slot-abi|5|5-hdepend|5-progress)$ ]]
+       [[ ! ${1-${EAPI-0}} =~ 
^(0|1|2|3|4|4-python|4-slot-abi|5|5-hdepend|5-progress)$ ]]
 }
 
 ___eapi_econf_passes_--disable-dependency-tracking() {
-       [[ ! ${1-${EAPI}} =~ ^(0|1|2|3)$ ]]
+       [[ ! ${1-${EAPI-0}} =~ ^(0|1|2|3)$ ]]
 }
 
 ___eapi_econf_passes_--disable-silent-rules() {
-       [[ ! ${1-${EAPI}} =~ ^(0|1|2|3|4|4-python|4-slot-abi)$ ]]
+       [[ ! ${1-${EAPI-0}} =~ ^(0|1|2|3|4|4-python|4-slot-abi)$ ]]
 }
 
 ___eapi_econf_passes_--docdir_and_--htmldir() {
-       [[ ! ${1-${EAPI}} =~ 
^(0|1|2|3|4|4-python|4-slot-abi|5|5-hdepend|5-progress)$ ]]
+       [[ ! ${1-${EAPI-0}} =~ 
^(0|1|2|3|4|4-python|4-slot-abi|5|5-hdepend|5-progress)$ ]]
 }
 
 ___eapi_use_enable_and_use_with_support_empty_third_argument() {
-       [[ ! ${1-${EAPI}} =~ ^(0|1|2|3)$ ]]
+       [[ ! ${1-${EAPI-0}} =~ ^(0|1|2|3)$ ]]
 }
 
 ___eapi_dodoc_supports_-r() {
-       [[ ! ${1-${EAPI}} =~ ^(0|1|2|3)$ ]]
+       [[ ! ${1-${EAPI-0}} =~ ^(0|1|2|3)$ ]]
 }
 
 ___eapi_doins_and_newins_preserve_symlinks() {
-       [[ ! ${1-${EAPI}} =~ ^(0|1|2|3)$ ]]
+       [[ ! ${1-${EAPI-0}} =~ ^(0|1|2|3)$ ]]
 }
 
 ___eapi_newins_supports_reading_from_standard_input() {
-       [[ ! ${1-${EAPI}} =~ ^(0|1|2|3|4|4-python|4-slot-abi)$ ]]
+       [[ ! ${1-${EAPI-0}} =~ ^(0|1|2|3|4|4-python|4-slot-abi)$ ]]
 }
 
 ___eapi_helpers_can_die() {
-       [[ ! ${1-${EAPI}} =~ ^(0|1|2|3)$ ]]
+       [[ ! ${1-${EAPI-0}} =~ ^(0|1|2|3)$ ]]
 }
 
 ___eapi_disallows_helpers_in_global_scope() {
-       [[ ! ${1-${EAPI}} =~ ^(0|1|2|3|4|4-slot-abi|5|5-hdepend)$ ]]
+       [[ ! ${1-${EAPI-0}} =~ ^(0|1|2|3|4|4-slot-abi|5|5-hdepend)$ ]]
 }
 
 ___eapi_unpack_is_case_sensitive() {
-       [[ ${1-${EAPI}} =~ ^(0|1|2|3|4|4-python|4-slot-abi|5|5-hdepend)$ ]]
+       [[ ${1-${EAPI-0}} =~ ^(0|1|2|3|4|4-python|4-slot-abi|5|5-hdepend)$ ]]
 }
 
 ___eapi_unpack_supports_absolute_paths() {
-       [[ ${1-${EAPI}} =~ ^(0|1|2|3|4|4-python|4-slot-abi|5|5-hdepend)$ ]]
+       [[ ${1-${EAPI-0}} =~ ^(0|1|2|3|4|4-python|4-slot-abi|5|5-hdepend)$ ]]
 }
 
 ___eapi_die_can_respect_nonfatal() {
-       [[ ! ${1-${EAPI}} =~ 
^(0|1|2|3|4|4-python|4-slot-abi|5|5-hdepend|5-progress)$ ]]
+       [[ ! ${1-${EAPI-0}} =~ 
^(0|1|2|3|4|4-python|4-slot-abi|5|5-hdepend|5-progress)$ ]]
 }
 
 # OTHERS
 
 ___eapi_enables_failglob_in_global_scope() {
-       [[ ! ${1-${EAPI}} =~ 
^(0|1|2|3|4|4-python|4-slot-abi|5|5-hdepend|5-progress)$ ]]
+       [[ ! ${1-${EAPI-0}} =~ 
^(0|1|2|3|4|4-python|4-slot-abi|5|5-hdepend|5-progress)$ ]]
 }
 
 ___eapi_enables_globstar() {
-       [[ ${1-${EAPI}} =~ ^(4-python|5-progress)$ ]]
+       [[ ${1-${EAPI-0}} =~ ^(4-python|5-progress)$ ]]
 }
-- 
2.2.1


Reply via email to