summaryrefslogtreecommitdiff
path: root/dev-vcs/mercurial/files/python3.12.patch
diff options
context:
space:
mode:
Diffstat (limited to 'dev-vcs/mercurial/files/python3.12.patch')
-rw-r--r--dev-vcs/mercurial/files/python3.12.patch51
1 files changed, 51 insertions, 0 deletions
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 <jcristau@debian.org>
+# 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