commit:     9e9a93ca1c92f22f4ad15ae2e814c81deb1145f8
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Fri Mar 24 05:03:59 2023 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Fri Mar 24 05:09:07 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=9e9a93ca

dev-python/cython: workaround parallel install race for importing pythran

An empty directory in site-packages is a valid Python module, unfortunately, 
because
of namespaces. If installing packages in parallel, the pythran module might 
"exist"
but be empty (hence no __version__ attribute). Catch AttributeError to avoid a 
narrow
race.

This might still be a Portage issue if there's a substantial delay between 
creating
the directory and installing the remaining files though.

Thanks to Eli Schwartz for helping out.

Bug: https://bugs.gentoo.org/902713
Signed-off-by: Sam James <sam <AT> gentoo.org>

 ...n-3.0.0_beta1.ebuild => cython-0.29.33-r1.ebuild} | 12 ++++--------
 ...0.0_beta1.ebuild => cython-3.0.0_beta1-r1.ebuild} |  0
 .../cython-0.29.23-pythran-parallel-install.patch    | 20 ++++++++++++++++++++
 3 files changed, 24 insertions(+), 8 deletions(-)

diff --git a/dev-python/cython/cython-3.0.0_beta1.ebuild 
b/dev-python/cython/cython-0.29.33-r1.ebuild
similarity index 89%
copy from dev-python/cython/cython-3.0.0_beta1.ebuild
copy to dev-python/cython/cython-0.29.33-r1.ebuild
index 54bc5b850f4d..75535976ff9b 100644
--- a/dev-python/cython/cython-3.0.0_beta1.ebuild
+++ b/dev-python/cython/cython-0.29.33-r1.ebuild
@@ -9,7 +9,6 @@ PYTHON_REQ_USE="threads(+)"
 
 inherit distutils-r1 toolchain-funcs elisp-common
 
-MY_P=${P/_beta/b}
 DESCRIPTION="A Python to C compiler"
 HOMEPAGE="
        https://cython.org/
@@ -17,10 +16,9 @@ HOMEPAGE="
        https://pypi.org/project/Cython/
 "
 SRC_URI="
-       https://github.com/cython/cython/archive/${PV/_beta/b}.tar.gz
-               -> ${MY_P}.gh.tar.gz
+       https://github.com/cython/cython/archive/${PV}.tar.gz
+               -> ${P}.gh.tar.gz
 "
-S=${WORKDIR}/${MY_P}
 
 LICENSE="Apache-2.0"
 SLOT="0"
@@ -43,14 +41,12 @@ BDEPEND="
 PATCHES=(
        "${FILESDIR}/${PN}-0.29.22-spawn-multiprocessing.patch"
        "${FILESDIR}/${PN}-0.29.23-test_exceptions-py310.patch"
+       "${FILESDIR}/${PN}-0.29.23-pythran-parallel-install.patch"
 )
 
 SITEFILE=50cython-gentoo.el
 
-distutils_enable_sphinx docs \
-       dev-python/jinja \
-       dev-python/sphinx-issues \
-       dev-python/sphinx-tabs
+distutils_enable_sphinx docs
 
 python_compile() {
        # Python gets confused when it is in sys.path before build.

diff --git a/dev-python/cython/cython-3.0.0_beta1.ebuild 
b/dev-python/cython/cython-3.0.0_beta1-r1.ebuild
similarity index 100%
rename from dev-python/cython/cython-3.0.0_beta1.ebuild
rename to dev-python/cython/cython-3.0.0_beta1-r1.ebuild

diff --git 
a/dev-python/cython/files/cython-0.29.23-pythran-parallel-install.patch 
b/dev-python/cython/files/cython-0.29.23-pythran-parallel-install.patch
new file mode 100644
index 000000000000..450007b5663f
--- /dev/null
+++ b/dev-python/cython/files/cython-0.29.23-pythran-parallel-install.patch
@@ -0,0 +1,20 @@
+An empty directory in site-packages is a valid Python module, unfortunately, 
because
+of namespaces. If installing packages in parallel, the pythran module might 
"exist"
+but be empty (hence no __version__ attribute). Catch AttributeError to avoid a 
narrow
+race.
+
+See https://bugs.gentoo.org/902713.
+
+This might still be a Portage issue if there's a substantial delay between 
creating
+the directory and installing the remaining files though.
+--- a/Cython/Compiler/Pythran.py
++++ b/Cython/Compiler/Pythran.py
+@@ -10,7 +10,7 @@ try:
+     import pythran
+     pythran_is_pre_0_9 = tuple(map(int, pythran.__version__.split('.')[0:2])) 
< (0, 9)
+     pythran_is_pre_0_9_6 = tuple(map(int, 
pythran.__version__.split('.')[0:3])) < (0, 9, 6)
+-except ImportError:
++except (AttributeError, ImportError):
+     pythran = None
+     pythran_is_pre_0_9 = True
+     pythran_is_pre_0_9_6 = True

Reply via email to