From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id 10863139694 for ; Fri, 5 May 2017 21:15:16 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id EA280E0D1A; Fri, 5 May 2017 21:15:06 +0000 (UTC) Received: from smtp.gentoo.org (mail.gentoo.org [IPv6:2001:470:ea4a:1:5054:ff:fec7:86e4]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 9CD1DE0D01 for ; Fri, 5 May 2017 21:15:06 +0000 (UTC) Received: from localhost.localdomain (d202-252.icpnet.pl [109.173.202.252]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: mgorny) by smtp.gentoo.org (Postfix) with ESMTPSA id 1C94733FE74; Fri, 5 May 2017 21:15:03 +0000 (UTC) From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= To: gentoo-dev@lists.gentoo.org Cc: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= Subject: [gentoo-dev] [PATCH] distutils-r1.eclass: Warn if *-nspkg.pth files are installed Date: Fri, 5 May 2017 23:14:57 +0200 Message-Id: <20170505211457.16160-1-mgorny@gentoo.org> X-Mailer: git-send-email 2.13.0.rc1 Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-dev@lists.gentoo.org Reply-to: gentoo-dev@lists.gentoo.org X-Archives-Salt: 975d14a9-8aed-4226-bc98-3bc4d8f27a44 X-Archives-Hash: b61fa207da8507e09adc5346a95d8196 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 -- -- 2.13.0.rc1