diff options
author | Michał Górny <mgorny@gentoo.org> | 2022-06-09 07:51:13 +0200 |
---|---|---|
committer | Michał Górny <mgorny@gentoo.org> | 2022-06-12 10:31:03 +0200 |
commit | 150538e302a34e89b9364d63fadfb6683b3af2d6 (patch) | |
tree | b1d23e784b976c9743ba205a5a389e9a0d31517a | |
parent | distutils-r1.eclass: Add assertions for bindir correctness (diff) | |
download | gentoo-150538e302a34e89b9364d63fadfb6683b3af2d6.tar.gz gentoo-150538e302a34e89b9364d63fadfb6683b3af2d6.tar.bz2 gentoo-150538e302a34e89b9364d63fadfb6683b3af2d6.zip |
python-r1.eclass: Warn about direct foreach_impl calls in d-r1
Warn if python_foreach_impl is called directly from within a phase
function that is already covered by a distutils-r1 sub-phase.
Signed-off-by: Michał Górny <mgorny@gentoo.org>
-rw-r--r-- | eclass/distutils-r1.eclass | 1 | ||||
-rw-r--r-- | eclass/python-r1.eclass | 18 |
2 files changed, 19 insertions, 0 deletions
diff --git a/eclass/distutils-r1.eclass b/eclass/distutils-r1.eclass index c4a46a620546..693b656b21bc 100644 --- a/eclass/distutils-r1.eclass +++ b/eclass/distutils-r1.eclass @@ -1752,6 +1752,7 @@ _distutils-r1_run_foreach_impl() { set -- distutils-r1_run_phase "${@}" if [[ ! ${DISTUTILS_SINGLE_IMPL} ]]; then + local _DISTUTILS_CALLING_FOREACH_IMPL=1 python_foreach_impl "${@}" else if [[ ! ${EPYTHON} ]]; then diff --git a/eclass/python-r1.eclass b/eclass/python-r1.eclass index 2f8cfa0316d9..3471e17bdde6 100644 --- a/eclass/python-r1.eclass +++ b/eclass/python-r1.eclass @@ -625,6 +625,24 @@ _python_multibuild_wrapper() { python_foreach_impl() { debug-print-function ${FUNCNAME} "${@}" + if [[ ${_DISTUTILS_R1} ]]; then + if has "${EBUILD_PHASE}" prepare configure compile test install && + [[ ! ${_DISTUTILS_CALLING_FOREACH_IMPL} && + ! ${_DISTUTILS_FOREACH_IMPL_WARNED} ]] + then + eqawarn "python_foreach_impl has been called directly while using distutils-r1." + eqawarn "Please redefine python_*() phase functions to meet your expectations" + eqawarn "instead." + _DISTUTILS_FOREACH_IMPL_WARNED=1 + + if ! has "${EAPI}" 6 7 8; then + die "Calling python_foreach_impl from distutils-r1 is banned in EAPI ${EAPI}" + fi + fi + # undo the eclass-set value to catch nested calls + local _DISTUTILS_CALLING_FOREACH_IMPL= + fi + local MULTIBUILD_VARIANTS _python_obtain_impls |