Gentoo Archives: gentoo-dev

From: "Michał Górny" <mgorny@g.o>
To: gentoo-dev@l.g.o
Cc: "Michał Górny" <mgorny@g.o>
Subject: [gentoo-dev] [PATCH 2/2] distutils-r1.eclass: Strip pkg_resources namespaces automatically
Date: Wed, 22 Feb 2023 18:21:26
Message-Id: 20230222182040.1550296-2-mgorny@gentoo.org
1 Signed-off-by: Michał Górny <mgorny@g.o>
2 ---
3 eclass/distutils-r1.eclass | 32 ++++++++++++++++++++++++++++++++
4 1 file changed, 32 insertions(+)
5
6 diff --git a/eclass/distutils-r1.eclass b/eclass/distutils-r1.eclass
7 index 426de7200957..9ef8342486b4 100644
8 --- a/eclass/distutils-r1.eclass
9 +++ b/eclass/distutils-r1.eclass
10 @@ -1980,6 +1980,36 @@ distutils-r1_src_test() {
11 return ${ret}
12 }
13
14 +# @FUNCTION: _distutils-r1_strip_namespace_packages
15 +# @USAGE: <sitedir>
16 +# @INTERNAL
17 +# @DESCRIPTION:
18 +# Find and remove setuptools-style namespaces in the specified
19 +# directory.
20 +_distutils-r1_strip_namespace_packages() {
21 + debug-print-function ${FUNCNAME} "${@}"
22 +
23 + local sitedir=${1}
24 + local f ns had_any=
25 + while IFS= read -r -d '' f; do
26 + while read -r ns; do
27 + einfo "Stripping pkg_resources-style namespace ${ns}"
28 + had_any=1
29 + done < "${f}"
30 +
31 + rm "${f}" || die
32 + done < <(
33 + # NB: this deliberately does not include .egg-info, in order
34 + # to limit this to PEP517 mode.
35 + find "${sitedir}" -path '*.dist-info/namespace_packages.txt' -print0
36 + )
37 +
38 + # If we had any namespace packages, remove .pth files as well.
39 + if [[ ${had_any} ]]; then
40 + find "${sitedir}" -name '*-nspkg.pth' -delete || die
41 + fi
42 +}
43 +
44 # @FUNCTION: _distutils-r1_post_python_install
45 # @INTERNAL
46 # @DESCRIPTION:
47 @@ -1990,6 +2020,8 @@ _distutils-r1_post_python_install() {
48
49 local sitedir=${D%/}$(python_get_sitedir)
50 if [[ -d ${sitedir} ]]; then
51 + _distutils-r1_strip_namespace_packages "${sitedir}"
52 +
53 local forbidden_package_names=(
54 examples test tests
55 .pytest_cache .hypothesis _trial_temp
56 --
57 2.39.2