summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichał Górny <mgorny@gentoo.org>2022-06-09 07:51:13 +0200
committerMichał Górny <mgorny@gentoo.org>2022-06-12 10:31:03 +0200
commit150538e302a34e89b9364d63fadfb6683b3af2d6 (patch)
treeb1d23e784b976c9743ba205a5a389e9a0d31517a
parentdistutils-r1.eclass: Add assertions for bindir correctness (diff)
downloadgentoo-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.eclass1
-rw-r--r--eclass/python-r1.eclass18
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