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
signature.asc
Description: This is a digitally signed message part