summaryrefslogtreecommitdiff
path: root/dev-python/certifi
diff options
context:
space:
mode:
authorV3n3RiX <venerix@koprulu.sector>2022-11-25 13:12:41 +0000
committerV3n3RiX <venerix@koprulu.sector>2022-11-25 13:12:41 +0000
commit959575d1af06bc64016d62d064143faba68a4c43 (patch)
treefbab98e9b035f9f858937e73ff342c2df8e17beb /dev-python/certifi
parent14a74a5f982f25582974c2ee235027a041aec36d (diff)
gentoo auto-resync : 25:11:2022 - 13:12:41
Diffstat (limited to 'dev-python/certifi')
-rw-r--r--dev-python/certifi/Manifest3
-rw-r--r--dev-python/certifi/certifi-3021.3.16-r3.ebuild55
-rw-r--r--dev-python/certifi/files/certifi-3021.3.16-use-importlib.patch164
3 files changed, 222 insertions, 0 deletions
diff --git a/dev-python/certifi/Manifest b/dev-python/certifi/Manifest
index 297928180fe9..f28ffdae0243 100644
--- a/dev-python/certifi/Manifest
+++ b/dev-python/certifi/Manifest
@@ -1,3 +1,6 @@
+AUX certifi-3021.3.16-use-importlib.patch 6291 BLAKE2B 6ab0b3586c87564e5f92f18a2a9f8f449959962105dc2d0ee348f53d42cad93b0c23c102fe57c224eb449771f0139c38561d14a8fe666dac5666c8be452fad3c SHA512 80d92dbf505f5a4a6372a77e79299cbb9afd7a0770c66c197045948d50d249276e954b09ae36d7c6fef6be4033c775ba096bdae9319286af1c603af33738362f
+DIST certifi-system-store-3021.3.16.gh.tar.gz 13784 BLAKE2B c0c2322fe298d363c4ef4dada2c0db8837bf7a32d86a7b54a1b45bb3dd3c99d732b2612f25495f4a59d9692f896e2b962e7057fa5fec9998724476db48f90c2a SHA512 44953ed8a3deb5fa4aff3f74afa557219e042acea395e9cdebfd26fd43ce0bdeca07c6b6dfe91977f88852e7674b94337b93c4d78fd2da6f47a6187fa46d6668
DIST certifi-system-store-3021.3.16.tar.gz 13784 BLAKE2B c0c2322fe298d363c4ef4dada2c0db8837bf7a32d86a7b54a1b45bb3dd3c99d732b2612f25495f4a59d9692f896e2b962e7057fa5fec9998724476db48f90c2a SHA512 44953ed8a3deb5fa4aff3f74afa557219e042acea395e9cdebfd26fd43ce0bdeca07c6b6dfe91977f88852e7674b94337b93c4d78fd2da6f47a6187fa46d6668
EBUILD certifi-3021.3.16-r2.ebuild 1374 BLAKE2B d38b75478478579e47e2318722fc870be0d69327960a7cc7e4eb2db86ae2c6baf3c08b36c0144d3bdfad31326d62f044fc8207c8fb32788a1616e22e40538b20 SHA512 59de47ac00ae7ce9fc36021c1bf784a8aec1886c3f037a9f206bfcaa19147ca0c9e72ab61e5bacf4c0e2074eb322a25ad8316e2e0a32e5d413046dc6f8d46b99
+EBUILD certifi-3021.3.16-r3.ebuild 1438 BLAKE2B 698d3843df1fbee5ddb96837e70869df5d10183c2ea15631cb95ed04abb583b36d4754e2dce8eaa1559784c37ccb4bfb40c1e60fb9bf567b9b35bd5669058d09 SHA512 3ee08168ff6c5b70cd66aae1f07e30f48a21ce98496f7d6bd2d1f54eeb62f2f3bafb1c09f9dfdf4f3870302458a77979cfa94e7e2608dcf672c15f080f847786
MISC metadata.xml 427 BLAKE2B 12dfba937658c8ecdf591eef8803d721aec4be7f4f78e819d8add5ea85b5b73a9c071ae8d79d7abcedf6876ea53ea5365a7fd9adffc1c04ac4738e9f05ef58af SHA512 b4a027b08e92241cd0eb000e3220eaa4008f3e7b49f52b00b4b6abeaf7d66cfc92597a9633e1e29ff98758f258678ae09c213d332614d3f94e003ff0e59ad74b
diff --git a/dev-python/certifi/certifi-3021.3.16-r3.ebuild b/dev-python/certifi/certifi-3021.3.16-r3.ebuild
new file mode 100644
index 000000000000..ca1efe706415
--- /dev/null
+++ b/dev-python/certifi/certifi-3021.3.16-r3.ebuild
@@ -0,0 +1,55 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+# please keep this ebuild at EAPI 7 -- sys-apps/portage dep
+EAPI=7
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{8..11} pypy3 )
+
+inherit distutils-r1
+
+MY_P=certifi-system-store-${PV}
+DESCRIPTION="A certifi hack to use system trust store on Linux/FreeBSD"
+HOMEPAGE="
+ https://github.com/tiran/certifi-system-store/
+ https://pypi.org/project/certifi-system-store/
+"
+SRC_URI="
+ https://github.com/tiran/certifi-system-store/archive/v${PV}.tar.gz
+ -> ${MY_P}.gh.tar.gz
+"
+S=${WORKDIR}/${MY_P}
+
+LICENSE="MPL-2.0"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
+
+RDEPEND="
+ app-misc/ca-certificates
+ dev-python/setuptools[${PYTHON_USEDEP}]
+"
+
+PATCHES=(
+ "${FILESDIR}"/${P}-use-importlib.patch
+)
+
+EPYTEST_IGNORE=(
+ # requires Internet
+ tests/test_requests.py
+)
+
+distutils_enable_tests pytest
+
+src_prepare() {
+ sed -i -e "s^/etc^${EPREFIX}/etc^" src/certifi/core.py || die
+ distutils-r1_src_prepare
+}
+
+python_compile() {
+ distutils-r1_python_compile
+ cd "${BUILD_DIR}/install$(python_get_sitedir)" || die
+ local distinfo=( certifi_system_store*.dist-info )
+ [[ -d ${distinfo} ]] || die
+ ln -v -s "${distinfo}" "${distinfo/_system_store}" || die
+}
diff --git a/dev-python/certifi/files/certifi-3021.3.16-use-importlib.patch b/dev-python/certifi/files/certifi-3021.3.16-use-importlib.patch
new file mode 100644
index 000000000000..3028bfcb99cf
--- /dev/null
+++ b/dev-python/certifi/files/certifi-3021.3.16-use-importlib.patch
@@ -0,0 +1,164 @@
+1. https://github.com/tiran/certifi-system-store/commit/6945f34b7be433dbf22946825cdb225d5d2136d5
+2. https://github.com/tiran/certifi-system-store/pull/21
+
+Avoid repeated instances of https://bugs.gentoo.org/878045 when a package
+has too-strict requirements and then affects other, unrelated Python
+packages on the system.
+
+From 6945f34b7be433dbf22946825cdb225d5d2136d5 Mon Sep 17 00:00:00 2001
+From: Christian Heimes <christian@python.org>
+Date: Tue, 16 Mar 2021 16:00:08 +0100
+Subject: [PATCH] Relax patch checks (#13)
+
+- only check that version matches, not files are identical
+- compare base directories with samefile. This fixes a problem with
+ lib64 symlink in virtual envs.
+
+Signed-off-by: Christian Heimes <christian@python.org>
+--- a/src/certifi/_patch.py
++++ b/src/certifi/_patch.py
+@@ -28,7 +28,7 @@ def _patch_dist_info():
+ except pkg_resources.DistributionNotFound:
+ pass
+ else:
+- if os.path.samefile(css_dist.egg_info, certifi_dist.egg_info):
++ if certifi_dist.version == css_dist.version:
+ return False, css_dist.egg_info, certifi_dist.egg_info
+ else:
+ # blow away certifi's dist-info
+@@ -55,7 +55,9 @@ def _patch_dist_info():
+ certifi_dir = os.path.dirname(os.path.abspath(__file__))
+ dist_dir = os.path.abspath(certifi_dist.egg_info)
+
+- if os.path.dirname(certifi_dir) != os.path.dirname(dist_dir):
++ # compare with samefile instead of string comparison to avoid false
++ # negatives caused by venv lib64 / lib symlinks
++ if not os.path.samefile(os.path.dirname(certifi_dir), os.path.dirname(dist_dir)):
+ raise RuntimeError(
+ f"'{certifi_dir} and {dist_dir} have different parent directories."
+ )
+
+From cdec6d20b5d716d9853e72a1519a304070395498 Mon Sep 17 00:00:00 2001
+From: Christian Heimes <christian@python.org>
+Date: Wed, 22 Jun 2022 10:08:18 +0200
+Subject: [PATCH] Use importlib on Python 3.8+
+
+--- a/setup.cfg
++++ b/setup.cfg
+@@ -38,8 +40,9 @@ packages = certifi
+ include_package_data = True
+ zip_safe = True
+ setup_requires = setuptools
+-# hack to prevent installation on unsupported platforms Windows and macOS
+ install_requires =
++ setuptools; python_version < "3.8"
++ # hack to prevent installation on unsupported platforms Windows and macOS
+ certifi-system-store > 4000; sys_platform == "win32" or sys_platform == "darwin"
+ python_requires = >=3.6
+
+--- a/src/certifi/_patch.py
++++ b/src/certifi/_patch.py
+@@ -1,7 +1,31 @@
+ import os
+ import shutil
+ import sys
+-import pkg_resources
++
++if sys.version_info >= (3, 8):
++ from importlib import metadata
++
++ PackageNotFoundError = metadata.PackageNotFoundError
++
++ def _get_distinfo(name):
++ dist = metadata.distribution(name)
++ egg_info = dist._path
++ return dist.version, egg_info
++
++ def _invalidate_caches():
++ pass
++
++else:
++ import pkg_resources
++
++ PackageNotFoundError = pkg_resources.DistributionNotFound
++
++ def _get_distinfo(name):
++ dist = pkg_resources.get_distribution(name)
++ return dist.version, dist.egg_info
++
++ def _invalidate_caches():
++ pkg_resources.working_set.__init__()
+
+
+ def _relsymlink(target, linkname):
+@@ -22,22 +46,22 @@ def _relsymlink(target, linkname):
+
+ def _patch_dist_info():
+ # distribution object for the canonical project name
+- css_dist = pkg_resources.get_distribution("certifi_system_store")
++ css_version, css_egg_info = _get_distinfo("certifi_system_store")
+ try:
+- certifi_dist = pkg_resources.get_distribution("certifi")
+- except pkg_resources.DistributionNotFound:
++ certifi_version, certifi_egg_info = _get_distinfo("certifi")
++ except PackageNotFoundError:
+ pass
+ else:
+- if certifi_dist.version == css_dist.version:
+- return False, css_dist.egg_info, certifi_dist.egg_info
++ if certifi_version == css_version:
++ return False, css_egg_info, certifi_egg_info
+ else:
+ # blow away certifi's dist-info
+- shutil.rmtree(certifi_dist.egg_info)
++ shutil.rmtree(certifi_egg_info)
+ # reset current working set, so pkg_resources can pick up our hack
+- pkg_resources.working_set.__init__()
++ _invalidate_caches()
+
+ # certifi-system-store's dist-info
+- abs_css_distinfodir = os.path.abspath(css_dist.egg_info)
++ abs_css_distinfodir = os.path.abspath(css_egg_info)
+ css_basedir, css_distinfodir = os.path.split(abs_css_distinfodir)
+
+ # certifi's dist-info in same base directory
+@@ -48,12 +72,12 @@ def _patch_dist_info():
+ _relsymlink(target=abs_css_distinfodir, linkname=abs_certifi_distinfodir)
+
+ # get dist info from refreshed working set
+- css_dist = pkg_resources.get_distribution("certifi_system_store")
+- certifi_dist = pkg_resources.get_distribution("certifi")
++ css_version, css_egg_info = _get_distinfo("certifi_system_store")
++ certifi_version, certifi_egg_info = _get_distinfo("certifi")
+
+ # check that certifi dist-info is in same site-packages as certifi package
+ certifi_dir = os.path.dirname(os.path.abspath(__file__))
+- dist_dir = os.path.abspath(certifi_dist.egg_info)
++ dist_dir = os.path.abspath(certifi_egg_info)
+
+ # compare with samefile instead of string comparison to avoid false
+ # negatives caused by venv lib64 / lib symlinks
+@@ -65,17 +89,17 @@ def _patch_dist_info():
+ # double check versions
+ _verify_dist_info()
+
+- return True, css_dist.egg_info, certifi_dist.egg_info
++ return True, css_egg_info, certifi_egg_info
+
+
+ def _verify_dist_info():
+- css_dist = pkg_resources.get_distribution("certifi_system_store")
++ css_version, css_egg_info = _get_distinfo("certifi_system_store")
+ try:
+- certifi_dist = pkg_resources.get_distribution("certifi")
+- except pkg_resources.DistributionNotFound as e:
++ certifi_version, certifi_egg_info = _get_distinfo("certifi")
++ except PackageNotFoundError as e:
+ raise RuntimeError(e)
+ else:
+- if certifi_dist.version != css_dist.version:
++ if certifi_version != css_version:
+ raise RuntimeError(
+ f"'certifi.dist-info' is not an alias to "
+ f"'certifi_system_store.dist-info'. "
+