public inbox for gentoo-dev@lists.gentoo.org
 help / color / mirror / Atom feed
Search results ordered by [date|relevance]  view[summary|nested|Atom feed]
thread overview below | download: 
* [gentoo-dev] [PATCH] distutils-r1.eclass: Warn if *-nspkg.pth files are installed
@ 2017-05-05 21:14 99% Michał Górny
  0 siblings, 0 replies; 1+ results
From: Michał Górny @ 2017-05-05 21:14 UTC (permalink / raw
  To: gentoo-dev; +Cc: Michał Górny

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



^ permalink raw reply related	[relevance 99%]

Results 1-1 of 1 | reverse | options above
-- pct% links below jump to the message on this page, permalinks otherwise --
2017-05-05 21:14 99% [gentoo-dev] [PATCH] distutils-r1.eclass: Warn if *-nspkg.pth files are installed Michał Górny

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox