Do not apply PATCHES and user patches (either via the EAPI 6 default or
pre-EAPI 5 code) when DISTUTILS_OPTIONAL is being used. In this case,
distutils functions are usually called conditionally, in a subdirectory,
while both PATCHES and user patches are usually intended to be applied
top-level.

There is no ebuild relying on distutils-r1_src_prepare applying patches
with DISTUTILS_OPTIONAL. In fact, there are ebuilds which work around
this behavior.
---
 eclass/distutils-r1.eclass | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/eclass/distutils-r1.eclass b/eclass/distutils-r1.eclass
index e8de5ad..afd29ed 100644
--- a/eclass/distutils-r1.eclass
+++ b/eclass/distutils-r1.eclass
@@ -315,11 +315,13 @@ _distutils-r1_disable_ez_setup() {
 distutils-r1_python_prepare_all() {
        debug-print-function ${FUNCNAME} "${@}"
 
-       if [[ ${EAPI} != [45] ]]; then
-               default
-       else
-               [[ ${PATCHES} ]] && epatch "${PATCHES[@]}"
-               epatch_user
+       if [[ ! ${DISTUTILS_OPTIONAL} ]]; then
+               if [[ ${EAPI} != [45] ]]; then
+                       default
+               else
+                       [[ ${PATCHES} ]] && epatch "${PATCHES[@]}"
+                       epatch_user
+               fi
        fi
 
        # by default, use in-source build if python_prepare() is used
-- 
2.8.2


Reply via email to