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