From 314cbd4b075fa3b74a7fcd338f8fd55097c7dd94 Mon Sep 17 00:00:00 2001 From: Krzesimir Nowak Date: Tue, 24 Jan 2023 10:51:48 +0100 Subject: [PATCH] dev-python/certifi: Sync with Gentoo It's from Gentoo commit ed468028e725c9580a7b2ee02d6b7b9375f7a0b2. --- .../dev-python/certifi/Manifest | 2 +- .../certifi/certifi-3021.3.16-r1.ebuild | 60 ------- .../certifi/certifi-3021.3.16-r3.ebuild | 55 ++++++ .../files/certifi-3021.3.16-setuptools.patch | 21 --- .../certifi-3021.3.16-use-importlib.patch | 164 ++++++++++++++++++ 5 files changed, 220 insertions(+), 82 deletions(-) delete mode 100644 sdk_container/src/third_party/portage-stable/dev-python/certifi/certifi-3021.3.16-r1.ebuild create mode 100644 sdk_container/src/third_party/portage-stable/dev-python/certifi/certifi-3021.3.16-r3.ebuild delete mode 100644 sdk_container/src/third_party/portage-stable/dev-python/certifi/files/certifi-3021.3.16-setuptools.patch create mode 100644 sdk_container/src/third_party/portage-stable/dev-python/certifi/files/certifi-3021.3.16-use-importlib.patch diff --git a/sdk_container/src/third_party/portage-stable/dev-python/certifi/Manifest b/sdk_container/src/third_party/portage-stable/dev-python/certifi/Manifest index a8393e15ac..25c84ad821 100644 --- a/sdk_container/src/third_party/portage-stable/dev-python/certifi/Manifest +++ b/sdk_container/src/third_party/portage-stable/dev-python/certifi/Manifest @@ -1 +1 @@ -DIST certifi-system-store-3021.3.16.tar.gz 13784 BLAKE2B c0c2322fe298d363c4ef4dada2c0db8837bf7a32d86a7b54a1b45bb3dd3c99d732b2612f25495f4a59d9692f896e2b962e7057fa5fec9998724476db48f90c2a SHA512 44953ed8a3deb5fa4aff3f74afa557219e042acea395e9cdebfd26fd43ce0bdeca07c6b6dfe91977f88852e7674b94337b93c4d78fd2da6f47a6187fa46d6668 +DIST certifi-system-store-3021.3.16.gh.tar.gz 13784 BLAKE2B c0c2322fe298d363c4ef4dada2c0db8837bf7a32d86a7b54a1b45bb3dd3c99d732b2612f25495f4a59d9692f896e2b962e7057fa5fec9998724476db48f90c2a SHA512 44953ed8a3deb5fa4aff3f74afa557219e042acea395e9cdebfd26fd43ce0bdeca07c6b6dfe91977f88852e7674b94337b93c4d78fd2da6f47a6187fa46d6668 diff --git a/sdk_container/src/third_party/portage-stable/dev-python/certifi/certifi-3021.3.16-r1.ebuild b/sdk_container/src/third_party/portage-stable/dev-python/certifi/certifi-3021.3.16-r1.ebuild deleted file mode 100644 index 6019af2a84..0000000000 --- a/sdk_container/src/third_party/portage-stable/dev-python/certifi/certifi-3021.3.16-r1.ebuild +++ /dev/null @@ -1,60 +0,0 @@ -# Copyright 1999-2021 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 - -PYTHON_COMPAT=( python3_{8..10} pypy3 ) -DISTUTILS_USE_SETUPTOOLS=rdepend -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}.tar.gz" -S=${WORKDIR}/${MY_P} - -LICENSE="MPL-2.0" -SLOT="0" -KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~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" - -PATCHES=( - "${FILESDIR}"/${PN}-3021.3.16-setuptools.patch -) - -EPYTEST_IGNORE=( - # requires Internet - tests/test_requests.py -) - -distutils_enable_tests --install pytest - -src_prepare() { - sed -i -e "s^/etc^${EPREFIX}/etc^" src/certifi/core.py || die - distutils-r1_src_prepare -} - -symlink_info() { - pushd "${1}" >/dev/null || die - local egginfo=( certifi_system_store*.egg-info ) - [[ -d ${egginfo} ]] || die - ln -v -s "${egginfo}" "${egginfo/_system_store}" || die - popd >/dev/null || die -} - -python_test() { - distutils_install_for_testing - symlink_info "${TEST_DIR}"/lib - epytest -} - -python_install() { - distutils-r1_python_install - symlink_info "${D}$(python_get_sitedir)" -} diff --git a/sdk_container/src/third_party/portage-stable/dev-python/certifi/certifi-3021.3.16-r3.ebuild b/sdk_container/src/third_party/portage-stable/dev-python/certifi/certifi-3021.3.16-r3.ebuild new file mode 100644 index 0000000000..16b427fc6e --- /dev/null +++ b/sdk_container/src/third_party/portage-stable/dev-python/certifi/certifi-3021.3.16-r3.ebuild @@ -0,0 +1,55 @@ +# Copyright 1999-2023 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_{9..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/sdk_container/src/third_party/portage-stable/dev-python/certifi/files/certifi-3021.3.16-setuptools.patch b/sdk_container/src/third_party/portage-stable/dev-python/certifi/files/certifi-3021.3.16-setuptools.patch deleted file mode 100644 index 57154fd0ee..0000000000 --- a/sdk_container/src/third_party/portage-stable/dev-python/certifi/files/certifi-3021.3.16-setuptools.patch +++ /dev/null @@ -1,21 +0,0 @@ -https://github.com/tiran/certifi-system-store/pull/17 -https://bugs.gentoo.org/822777 - -From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= -Date: Tue, 23 Nov 2021 15:56:33 +0100 -Subject: [PATCH] Add missing install_requires on setuptools - -This package is using pkg_resources explicitly, it should therefore -declare an explicit dependency on setuptools. The missing dependency -has lead me to actually miss the runtime dependency which caused issues -for Gentoo users for whom setuptools were cleaned. ---- a/setup.cfg -+++ b/setup.cfg -@@ -40,6 +40,7 @@ zip_safe = True - setup_requires = setuptools - # hack to prevent installation on unsupported platforms Windows and macOS - install_requires = -+ setuptools - certifi-system-store > 4000; sys_platform == "win32" or sys_platform == "darwin" - python_requires = >=3.6 - diff --git a/sdk_container/src/third_party/portage-stable/dev-python/certifi/files/certifi-3021.3.16-use-importlib.patch b/sdk_container/src/third_party/portage-stable/dev-python/certifi/files/certifi-3021.3.16-use-importlib.patch new file mode 100644 index 0000000000..3028bfcb99 --- /dev/null +++ b/sdk_container/src/third_party/portage-stable/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'. " +