On pią, 2017-05-05 at 23:14 +0200, Michał Górny wrote:
> Add a check for *-nspkg.pth files indicating implicit setuptools
> namespace hack. While they kept namespaces somewhat working without
> requiring explicit support in ebuilds, they were unreliable. They
> frequently required additional hacks (distutils_install_for_testing) to
> get the tests working, and they have proven even more broken for Python
> 3.5+.
> 
> For this reason, those files were deprecated in favor of proper,
> explicit namespace support. If they are found to exist, the developer
> should ensure to remove them to avoid issues.
> ---
>  eclass/distutils-r1.eclass | 29 +++++++++++++++++++++++++++++
>  1 file changed, 29 insertions(+)
> 
> **REVIEW NOTE**
> 
> The wiki documentation update is not yet in place for the new policy
> is not yet in place. In fact, it's not even guaranteed that the policy
> will actually be approved. The discussion is taking place here:
> 
> https://archives.gentoo.org/gentoo-python/message/d74af64a795cb776ac7b4f285963072d
> 
> diff --git a/eclass/distutils-r1.eclass b/eclass/distutils-r1.eclass
> index 3be67bbf2a21..5df7234332d3 100644
> --- a/eclass/distutils-r1.eclass
> +++ b/eclass/distutils-r1.eclass
> @@ -789,6 +789,33 @@ distutils-r1_src_test() {
>       fi
>  }
>  
> +# @FUNCTION: _distutils-r1_check_namespace_pth
> +# @INTERNAL
> +# @DESCRIPTION:
> +# Check if any *-nspkg.pth files were installed (by setuptools)
> +# and warn about the policy non-conformance if they were.
> +_distutils-r1_check_namespace_pth() {
> +     local f pth=()
> +
> +     while IFS= read -r -d '' f; do
> +             pth+=( "${f}" )
> +     done < <(find "${ED}" -name '*-nspkg.pth' -print0)
> +
> +     if [[ ${pth[@]} ]]; then
> +             ewarn "The following *-nspkg.pth files were found installed:"
> +             ewarn
> +             for f in "${pth[@]}"; do
> +                     ewarn "  ${f#${ED%/}}"
> +             done
> +             ewarn
> +             ewarn "The presence of those files may break namespaces in 
> Python 3.5+. Please"
> +             ewarn "read our documentation on reliable handling of 
> namespaces and update"
> +             ewarn "the ebuild accordingly:"
> +             ewarn
> +             ewarn "  
> https://wiki.gentoo.org/wiki/Project:Python/Namespace_packages";
> +     fi
> +}
> +
>  distutils-r1_src_install() {
>       debug-print-function ${FUNCNAME} "${@}"
>  
> @@ -812,6 +839,8 @@ distutils-r1_src_install() {
>  
>               "${cmd}" "QA: python_install_all() didn't call 
> distutils-r1_python_install_all"
>       fi
> +
> +     _distutils-r1_check_namespace_pth
>  }
>  
>  # -- distutils.eclass functions --

Committed.

-- 
Best regards,
Michał Górny

Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to