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 |