commit:     81549b33168154d1014a120bc28a2c7951bf1058
Author:     Cédric Krier <cedk <AT> gentoo <DOT> org>
AuthorDate: Sat Aug 24 06:19:38 2024 +0000
Commit:     Cédric Krier <cedk <AT> gentoo <DOT> org>
CommitDate: Sat Aug 24 06:19:38 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=81549b33

dev-vcs/mercurial: apply demand import patch for python 3.12.4

Closes: https://bugs.gentoo.org/938128
Signed-off-by: Cédric Krier <cedk <AT> gentoo.org>

 dev-vcs/mercurial/files/python3.12.patch | 51 ++++++++++++++++++++++++++++++++
 dev-vcs/mercurial/mercurial-6.5.3.ebuild |  2 ++
 dev-vcs/mercurial/mercurial-6.6.2.ebuild |  2 ++
 dev-vcs/mercurial/mercurial-6.7.4.ebuild |  2 ++
 4 files changed, 57 insertions(+)

diff --git a/dev-vcs/mercurial/files/python3.12.patch 
b/dev-vcs/mercurial/files/python3.12.patch
new file mode 100644
index 000000000000..ad0e5772739d
--- /dev/null
+++ b/dev-vcs/mercurial/files/python3.12.patch
@@ -0,0 +1,51 @@
+# HG changeset patch
+# User Julien Cristau <[email protected]>
+# Date 1721983948 -7200
+#      Fri Jul 26 10:52:28 2024 +0200
+# Branch stable
+# Node ID 63ede7a43a3731fecc7e5b535144c6bd59911284
+# Parent  e6508d1e0b47fb5437a36e1f5fe00dc032991b9b
+demandimport: don't delay threading import
+
+A recent cpython change breaks demandimport by importing threading
+locally in importlib.util.LazyLoader.exec_module; add it (plus warnings
+and _weakrefset, which are imported by threading) to demandimport's
+ignore list.
+
+```
+Traceback (most recent call last):
+  File "/usr/bin/hg", line 57, in <module>
+    from mercurial import dispatch
+  File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
+  File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
+  File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
+  File "/usr/lib/python3/dist-packages/hgdemandimport/demandimportpy3.py", 
line 52, in exec_module
+    super().exec_module(module)
+  File "<frozen importlib.util>", line 257, in exec_module
+  File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
+  File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
+  File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
+  File "/usr/lib/python3/dist-packages/hgdemandimport/demandimportpy3.py", 
line 52, in exec_module
+    super().exec_module(module)
+  File "<frozen importlib.util>", line 267, in exec_module
+AttributeError: partially initialized module 'threading' has no attribute 
'RLock' (most likely due to a circular import)
+```
+
+Ref: https://github.com/python/cpython/issues/117983
+     https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1076449
+     https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1076747
+
+diff --git a/hgdemandimport/__init__.py b/hgdemandimport/__init__.py
+--- a/hgdemandimport/__init__.py
++++ b/hgdemandimport/__init__.py
+@@ -58,6 +58,10 @@
+     # setuptools uses this hack to inject it's own distutils at import time
+     'setuptools',
+     '_distutils_hack.override',
++    # threading is locally imported by importlib.util.LazyLoader.exec_module
++    '_weakrefset',
++    'warnings',
++    'threading',
+ }
+ 
+ _pypy = '__pypy__' in sys.builtin_module_names

diff --git a/dev-vcs/mercurial/mercurial-6.5.3.ebuild 
b/dev-vcs/mercurial/mercurial-6.5.3.ebuild
index 8c1137cfcd01..be2e9ed6132c 100644
--- a/dev-vcs/mercurial/mercurial-6.5.3.ebuild
+++ b/dev-vcs/mercurial/mercurial-6.5.3.ebuild
@@ -192,6 +192,8 @@ SITEFILE="70${PN}-gentoo.el"
 
 RESTRICT="!test? ( test )"
 
+PATCHES=( "${FILESDIR}/python3.12.patch" )
+
 src_unpack() {
        default_src_unpack
        if use rust; then

diff --git a/dev-vcs/mercurial/mercurial-6.6.2.ebuild 
b/dev-vcs/mercurial/mercurial-6.6.2.ebuild
index ed79e2235c03..f9b1e2544f31 100644
--- a/dev-vcs/mercurial/mercurial-6.6.2.ebuild
+++ b/dev-vcs/mercurial/mercurial-6.6.2.ebuild
@@ -202,6 +202,8 @@ SITEFILE="70${PN}-gentoo.el"
 
 RESTRICT="!test? ( test )"
 
+PATCHES=( "${FILESDIR}/python3.12.patch" )
+
 src_unpack() {
        default_src_unpack
        if use rust; then

diff --git a/dev-vcs/mercurial/mercurial-6.7.4.ebuild 
b/dev-vcs/mercurial/mercurial-6.7.4.ebuild
index 6207efb0c49b..ffb9e0d727d7 100644
--- a/dev-vcs/mercurial/mercurial-6.7.4.ebuild
+++ b/dev-vcs/mercurial/mercurial-6.7.4.ebuild
@@ -213,6 +213,8 @@ SITEFILE="70${PN}-gentoo.el"
 
 RESTRICT="!test? ( test )"
 
+PATCHES=( "${FILESDIR}/python3.12.patch" )
+
 src_unpack() {
        default_src_unpack
        if use rust; then

Reply via email to