From 959575d1af06bc64016d62d064143faba68a4c43 Mon Sep 17 00:00:00 2001 From: V3n3RiX Date: Fri, 25 Nov 2022 13:12:41 +0000 Subject: gentoo auto-resync : 25:11:2022 - 13:12:41 --- dev-python/certifi/Manifest | 3 + dev-python/certifi/certifi-3021.3.16-r3.ebuild | 55 +++++++ .../files/certifi-3021.3.16-use-importlib.patch | 164 +++++++++++++++++++++ 3 files changed, 222 insertions(+) create mode 100644 dev-python/certifi/certifi-3021.3.16-r3.ebuild create mode 100644 dev-python/certifi/files/certifi-3021.3.16-use-importlib.patch (limited to 'dev-python/certifi') 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 +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 +--- 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 +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'. " + -- cgit v1.2.3