commit: 8d9b2b281577717bb223f50b24f57ed4eaebd56c
Author: Kent Fredric <kentfredric <AT> gmail <DOT> com>
AuthorDate: Mon Apr 11 09:58:36 2016 +0000
Commit: Kent Fredric <kentnl <AT> gentoo <DOT> org>
CommitDate: Sun Sep 17 00:39:34 2017 +0000
URL: https://gitweb.gentoo.org/proj/perl-overlay.git/commit/?id=8d9b2b28
perl-functions.eclass: Add a new (not in ::gentoo) perl_check_eapi function
eclass/perl-functions.eclass | 54 ++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 54 insertions(+)
diff --git a/eclass/perl-functions.eclass b/eclass/perl-functions.eclass
index b189ff32c..21fe60592 100644
--- a/eclass/perl-functions.eclass
+++ b/eclass/perl-functions.eclass
@@ -686,3 +686,57 @@ perl_domodule() {
insinto "/${target#/}"
doins "${doins_opts[@]}" "${files[@]}"
}
+
+# @FUNCTION: perl_check_eapi
+# @DESCRIPTION:
+# Checks a blacklist of known-suspect eclass variables which can be
accidentally set
+# by maintainers, or may be accidentally left residual after an EAPI change.
+#
+# Dies if any of the suspect fields are found, and tell the user that the
ebuild in question
+# is broken and needs a fix.
+#
+# There's a workaround, but you'll have to read the code for it.
+perl_check_eapi() {
+ local errored value;
+ local suspect_vars=();
+
+ # Secret sauce to inhibit this check
+ [[ -n "${_EAPI_PERL_MODULE_PERMISSIVE}" ]] && return;
+
+ if [[ ${EAPI:-0} == 5 ]]; then
+ suspect_vars=( DIST_TEST DIST_VERSION DIST_NAME DIST_AUTHOR
DIST_A_EXT DIST_A DIST_SECTION DIST_EXAMPLES );
+ else
+ suspect_vars=( MY_PN MY_PV MODULE_VERSION MY_P MODULE_A
MODULE_A_EXT MODULE_AUTHOR MODULE_NAME SRC_TEST MODULE_SECTION );
+ fi
+ for i in "${suspect_vars[@]}"; do
+ [[ -v $i ]] || continue;
+
+ # Add heading once and only once
+ if [[ ${errored:-0} == 0 ]]; then
+ if [[ -n "${I_KNOW_WHAT_I_AM_DOING}" ]]; then
+ elog "perl-module.eclass: Suspicious
EAPI${EAPI:-0} eclass variables found.";
+ else
+ eerror "perl-module.eclass: Suspicious
EAPI${EAPI:-0} eclass variables found.";
+ fi
+ fi
+
+ errored=1
+ # Print ENV name/value pair
+ if [[ -n "${I_KNOW_WHAT_I_AM_DOING}" ]]; then
+ elog " ${i}=\"${!i}\"";
+ else
+ eerror " ${i}=\"${!i}\"";
+ fi
+ done
+ # Return if there were no failures
+ [[ ${errored:-0} == 0 ]] && return;
+
+ # Return if user knows what they're doing
+ if [[ -n "${I_KNOW_WHAT_I_AM_DOING}" ]]; then
+ elog "Continuing anyway, seems you know what you're doing."
+ return
+ fi
+
+ eerror "Your ebuild/env contains eclass variables that are known
invalid/legacy and indicate author oversight."
+ die "Please file a bug for this ebuild as per above details."
+}