commit:     4b7bae6873a5b1f9be36a9d5c2226e92f2a14dd8
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Wed May 24 15:18:58 2023 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed May 24 15:18:58 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=4b7bae68

dev-python/distlib: Enable py3.12

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 dev-python/distlib/distlib-0.3.6.ebuild            | 12 ++++--
 dev-python/distlib/files/distlib-0.3.6-py312.patch | 50 ++++++++++++++++++++++
 2 files changed, 58 insertions(+), 4 deletions(-)

diff --git a/dev-python/distlib/distlib-0.3.6.ebuild 
b/dev-python/distlib/distlib-0.3.6.ebuild
index 6f1be5b2fb7b..2fb434b9de26 100644
--- a/dev-python/distlib/distlib-0.3.6.ebuild
+++ b/dev-python/distlib/distlib-0.3.6.ebuild
@@ -4,7 +4,7 @@
 EAPI=8
 
 DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{10..11} pypy3 )
+PYTHON_COMPAT=( python3_{10..12} pypy3 )
 
 inherit distutils-r1
 
@@ -31,12 +31,16 @@ BDEPEND="
 "
 
 src_prepare() {
+       local PATCHES=(
+               "${FILESDIR}/${P}-py312.patch"
+
+               # use system pypiserver instead of bundled one
+               "${FILESDIR}"/distlib-0.3.2-system-pypiserver.py
+       )
+
        # make sure they're not used
        rm tests/pypi-server-standalone.py || die
 
-       # use system pypiserver instead of broken bundled one
-       eapply "${FILESDIR}"/distlib-0.3.2-system-pypiserver.py || die
-
        distutils-r1_src_prepare
 }
 

diff --git a/dev-python/distlib/files/distlib-0.3.6-py312.patch 
b/dev-python/distlib/files/distlib-0.3.6-py312.patch
new file mode 100644
index 000000000000..4e1d8927b745
--- /dev/null
+++ b/dev-python/distlib/files/distlib-0.3.6-py312.patch
@@ -0,0 +1,50 @@
+From fe769c72e4f9d613b2ce066325d2fb28317833d5 Mon Sep 17 00:00:00 2001
+From: Lumir Balhar <lbal...@redhat.com>
+Date: Thu, 18 May 2023 14:09:34 +0200
+Subject: [PATCH 1/2] Check for cert_file attribute before accessing it
+
+In Python 3.12, HTTPSConnection no longer has cert_file attribute
+so unless something adds it to the subclass, the attribute doesn't
+exist by default.
+
+CPython change: 
https://github.com/python/cpython/commit/ef0e72b31d22f780d3a165d7d0471806061fe380#diff-3cf29d90eb758d0fe5ec013bbfda9b0bb60be4f7d899583bd5f490a7a5a5dc5f
+---
+ distlib/util.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/distlib/util.py b/distlib/util.py
+index dd01849..ddfc992 100644
+--- a/distlib/util.py
++++ b/distlib/util.py
+@@ -1435,7 +1435,7 @@ def connect(self):
+             context = ssl.SSLContext(ssl.PROTOCOL_SSLv23)
+             if hasattr(ssl, 'OP_NO_SSLv2'):
+                 context.options |= ssl.OP_NO_SSLv2
+-            if self.cert_file:
++            if hasattr(self, "cert_file") and self.cert_file:
+                 context.load_cert_chain(self.cert_file, self.key_file)
+             kwargs = {}
+             if self.ca_certs:
+
+From 440a7b57b9521ba2eca749e26945eaf16bc7c472 Mon Sep 17 00:00:00 2001
+From: Vinay Sajip <vinay_sa...@yahoo.co.uk>
+Date: Wed, 24 May 2023 15:50:44 +0100
+Subject: [PATCH 2/2] Use single quotes.
+
+---
+ distlib/util.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/distlib/util.py b/distlib/util.py
+index ddfc992..d1ec58a 100644
+--- a/distlib/util.py
++++ b/distlib/util.py
+@@ -1435,7 +1435,7 @@ def connect(self):
+             context = ssl.SSLContext(ssl.PROTOCOL_SSLv23)
+             if hasattr(ssl, 'OP_NO_SSLv2'):
+                 context.options |= ssl.OP_NO_SSLv2
+-            if hasattr(self, "cert_file") and self.cert_file:
++            if hasattr(self, 'cert_file') and self.cert_file:
+                 context.load_cert_chain(self.cert_file, self.key_file)
+             kwargs = {}
+             if self.ca_certs:

Reply via email to