From 2e512e4e32285f8c4eb19586d014cb9d31454ec9 Mon Sep 17 00:00:00 2001 From: V3n3RiX Date: Wed, 19 Feb 2025 00:15:15 +0000 Subject: gentoo auto-resync : 19:02:2025 - 00:15:15 --- dev-python/pip/Manifest | 3 +- dev-python/pip/files/pip-25.0.1-unbundle.patch | 209 +++++++++++++++++++++++++ dev-python/pip/pip-25.0.1-r1.ebuild | 175 +++++++++++++++++++++ dev-python/pip/pip-25.0.1.ebuild | 170 -------------------- 4 files changed, 386 insertions(+), 171 deletions(-) create mode 100644 dev-python/pip/files/pip-25.0.1-unbundle.patch create mode 100644 dev-python/pip/pip-25.0.1-r1.ebuild delete mode 100644 dev-python/pip/pip-25.0.1.ebuild (limited to 'dev-python/pip') diff --git a/dev-python/pip/Manifest b/dev-python/pip/Manifest index 900dcfb6529f..d7cb08586d04 100644 --- a/dev-python/pip/Manifest +++ b/dev-python/pip/Manifest @@ -2,12 +2,13 @@ AUX pip-23.1-no-coverage.patch 1693 BLAKE2B ff7c152dacfd7edd3d4268a07b555c4da0fe AUX pip-24.1-test-offline.patch 2995 BLAKE2B bbaa9b6410b350cecfaf1422c252c166ac931a550896d153f174e6b351372e753762af621716b37f5480d34f51440be11bc7c4ff2dee4a84328d8e9ebe03bb09 SHA512 8af459ba1c6a732a694537473b08377c17c996c2e50bae50f3fbb5ceb0376fa29e72055d887e179e8dd22df400886f9bd101f577dae59956b6a132a878bda23b AUX pip-24.1-unbundle.patch 8156 BLAKE2B 014d05bd6e5bb39a4b8a591948bba0760878b28fc757d3d091f226aca0bfc663de558d7b75651907d47951205d5804a7e3986c8631b805926a025658cd34895a SHA512 d78f521a27d1cb12012c622f1d13da7b19a2406204cba6a1ce149feb988a94421bc9883caaeda48e71bc26bb7c4845aef7c90aeb6f39bc474bf5f1ab1d694e43 AUX pip-24.3.1-rich-13.8.patch 1774 BLAKE2B d0672abf384ed7e357f771109381996ae839c2bd054fbc45e86700fa3bda9f96db21775efbcdf2314e8aa92278550e1855e9d89ffa66b29e49680312bcd1f52d SHA512 82007682370c205c48751b978727983afbbe28175b6d3d9d86372c412a4fd363716a0317b9c55cd2c254e8116c5fb6f913f24f5d4822c86bcfd0d36a4f60dab8 +AUX pip-25.0.1-unbundle.patch 8817 BLAKE2B 6569625d0cc9e553516bf8285f19a1dcae25b0dddac351605eb36df0dcaa85a95764addac0b7c99a01b347b88df3de1b0e1aab6a3906efd9d383ac4aa1298be7 SHA512 61dda2160dc494eeea0b9bbce6a9dcfca42891d704021f05ebf5f568344fb767ef375e4fb2d506ce1ce190a0f7ff2ea5937f9e57f0283e32caa8d218fcddad28 DIST pip-24.1.gh.tar.gz 9188658 BLAKE2B 4a43ff0199d811dd30461e376f655a447f3f706a48dd97fe1d0ccf630f558e72209ccd06d98949a1541cd6b2942a816db23ce8aaa7fbbf9aef429502fb91ab92 SHA512 c60ab329fe91202ff64b5f0f90209085fbf8db0f0a05f0703f952ad69e39e2e3edb5dadc006a3f317cdd4ba4fb5abe56dfbd22792249a2d139702eec272186d1 DIST pip-24.3.1.gh.tar.gz 9198711 BLAKE2B c70524bfedf46776d5ab8da24754e8177caac6d87cc90aa86b144c0fe9718860fe3d08823f655495c059dbece6e0ecbb2ac8e655cff3124693f64a35deac512e SHA512 9cf5f18eefd559cf27bc026e5206b0028ea77fd904a61fea9a6682b519305c962dd19170b841581bd05ff72192a9c458ec0eba173fa66db0438b046111ff5856 DIST pip-25.0.1.gh.tar.gz 9224526 BLAKE2B db729b8c75d8e15c6fed1dbc9e08adc4e82114f2bbd953859ec03c7948e521629afd8cea6adb08110b987d6adf48fd600a59a3bcc27774db61ea92675ad90d42 SHA512 a6850c8567082bbf98483a45e523c4de12132136d2b0aa388ac619c02ffd0c8f6aea7d727f7d84167dadec5f1e56dd478b2233b0caa5d9b3e5cadc9e1f3dc12c DIST pip-25.0.gh.tar.gz 9224545 BLAKE2B 9606eea2b08d5220f9ed7528c14251ef20499693bdb817a2280124672860cb24111999bdb67af1107006ae4dd02c52d395fddea7e6b09dbc820a41ee8618fd50 SHA512 023db908a1da1cbbd2134bb83cc69a7a35e6d010b3f846bb8abcab14ca79a8cee4d02ead9346220e05fe137039377074c732b4bf2a9e6eee5c0d9161f1754f95 EBUILD pip-24.1.ebuild 4069 BLAKE2B 17b48996f8c982abdf73f523e35f7c4be1a1a1aa08fdea73e10054e93e5548ae48b2363110d85a0dced150435ea4ede0a7986d7114841bd73deafe4b672349d3 SHA512 e484be733a9b8caa3fc8e751f26fecd4b24571d40402d8b70ab8d4a294e249c0ccaa18c6a64ff977d64a7e7610d14be5d7666faf87447703013f0b003f0ded59 EBUILD pip-24.3.1-r2.ebuild 5981 BLAKE2B f37086c64014a5f3cf30180d5d1a68c21f6850beb54d56781135dd5b35418e73eb34afc6f695ae605e6e39534149b6f5d319e47aa2e46ca2ea392f5e079f2236 SHA512 6bbb8a69b589f82181d33e184a292c11366001cfaa30a58f2c475c09ef666b7200004ba77dae8a13581e4ab4ad5edca4a86ad7cc25176d699c86a14a8c89319d -EBUILD pip-25.0.1.ebuild 5720 BLAKE2B dfae2110524d69525c87e6f3e9d26244d121f76ddd452ed55929d5cf0c050fee1efd977373d510a2af716e72f0f75a5e38d20f533bf6d6c0f9fcc33c56623df3 SHA512 2583833320cb0770f29391c1f980aec824f3b0213cd7ece173e99f001af4abdc0933156631121a7c4314abc7a953218e4f0421148c79293fc7fbc867b8f9dc41 +EBUILD pip-25.0.1-r1.ebuild 5832 BLAKE2B 41b45e20491fd96fec76463efae20eb681a930bec64d3a4459a1ac12b98feccd08fbd251f984a100fff262af9f38091bcbcb729506de17974518434ae85144fb SHA512 e265d1e710ca3ecfd973c6eb8a1ec94c43385e46c0700823eb6fd43002de1666b89b86b4e2e2eec2708dc87ae02d8afb745725e661903c8b052383febf36d429 EBUILD pip-25.0.ebuild 5711 BLAKE2B 22a2bb0b0c98892949ee69542e99c468b97b35b323cb1c18d760101aaf3cf7e98aa4cc32bc0351eec43ef455f4172e7bac689e9e764731449592ed7c8af0b49d SHA512 ff2221cde4bffdb767df5e70b2ee036e7cefff132bd3fd42ce1f79c3abbf78609652b82fa1b7e0732b7492103234a53591116928aec8fcb8abd723ea81af92a6 MISC metadata.xml 392 BLAKE2B 94ea3de1220cb9ca64ae1186597789cc83a54adfe44695932c07dd5065df0e5f9ee5078a495e3a12563b36809d781d8ab86bb6c92c485c023199d92547b74f27 SHA512 603199f6547105f3bb64f4fcaf004e9ef62fa2e0f8ec6eab56078119684b0f5119161e0f164fe02b2cf6dd6b115588c9ef77d727eeb6d138e281f1cb0bcb5de9 diff --git a/dev-python/pip/files/pip-25.0.1-unbundle.patch b/dev-python/pip/files/pip-25.0.1-unbundle.patch new file mode 100644 index 000000000000..9cc035985250 --- /dev/null +++ b/dev-python/pip/files/pip-25.0.1-unbundle.patch @@ -0,0 +1,209 @@ +diff --git a/src/pip/_internal/cli/main_parser.py b/src/pip/_internal/cli/main_parser.py +index 5ade356b9..d07dfeab8 100644 +--- a/src/pip/_internal/cli/main_parser.py ++++ b/src/pip/_internal/cli/main_parser.py +@@ -80,6 +80,11 @@ def parse_command(args: List[str]) -> Tuple[str, List[str]]: + + # --python + if general_options.python and "_PIP_RUNNING_IN_SUBPROCESS" not in os.environ: ++ raise CommandError( ++ "--python option is not supported on Gentoo, as it requires bundled " ++ "dependencies that have been removed to improve security" ++ ) ++ + # Re-invoke pip using the specified Python interpreter + interpreter = identify_python_interpreter(general_options.python) + if interpreter is None: +diff --git a/src/pip/_internal/commands/debug.py b/src/pip/_internal/commands/debug.py +index 567ca967e..427bfcf04 100644 +--- a/src/pip/_internal/commands/debug.py ++++ b/src/pip/_internal/commands/debug.py +@@ -6,7 +6,6 @@ from optparse import Values + from types import ModuleType + from typing import Any, Dict, List, Optional + +-import pip._vendor + from pip._vendor.certifi import where + from pip._vendor.packaging.version import parse as parse_version + +@@ -192,9 +191,7 @@ class DebugCommand(Command): + show_value("REQUESTS_CA_BUNDLE", os.environ.get("REQUESTS_CA_BUNDLE")) + show_value("CURL_CA_BUNDLE", os.environ.get("CURL_CA_BUNDLE")) + show_value("pip._vendor.certifi.where()", where()) +- show_value("pip._vendor.DEBUNDLED", pip._vendor.DEBUNDLED) +- +- show_vendor_versions() ++ show_value("pip._vendor.DEBUNDLED", True) + + show_tags(options) + +diff --git a/tests/conftest.py b/tests/conftest.py +index d093eea46..bf4d9e782 100644 +--- a/tests/conftest.py ++++ b/tests/conftest.py +@@ -418,6 +418,7 @@ def _common_wheel_editable_install( + ) + install_dir = tmpdir_factory.mktemp(package) / "install" + lib_install_dir = install_dir / "lib" ++ return lib_install_dir + bin_install_dir = install_dir / "bin" + with WheelFile.open(wheel_candidates[0]) as source: + install( +diff --git a/tests/functional/test_check.py b/tests/functional/test_check.py +index f50f5593e..c42e88bbe 100644 +--- a/tests/functional/test_check.py ++++ b/tests/functional/test_check.py +@@ -10,10 +10,8 @@ from tests.lib import ( + def matches_expected_lines(string: str, expected_lines: Collection[str]) -> bool: + # Ignore empty lines + output_lines = list(filter(None, string.splitlines())) +- # We'll match the last n lines, given n lines to match. +- last_few_output_lines = output_lines[-len(expected_lines) :] + # And order does not matter +- return set(last_few_output_lines) == set(expected_lines) ++ return set(expected_lines).issubset(set(output_lines)) + + + def test_basic_check_clean(script: PipTestEnvironment) -> None: +diff --git a/tests/functional/test_freeze.py b/tests/functional/test_freeze.py +index 0a7cedd11..ea2fef37d 100644 +--- a/tests/functional/test_freeze.py ++++ b/tests/functional/test_freeze.py +@@ -82,8 +82,8 @@ def test_basic_freeze(script: PipTestEnvironment) -> None: + result = script.pip("freeze", expect_stderr=True) + expected = textwrap.dedent( + """\ +- ...simple==2.0 +- simple2==3.0... ++ ...simple==2.0... ++ ...simple2==3.0... + """ + ) + _check_output(result.stdout, expected) +@@ -1016,7 +1016,7 @@ def test_freeze_skip_work_dir_pkg(script: PipTestEnvironment) -> None: + + # Freeze should not include package simple when run from package directory + result = script.pip("freeze", cwd=pkg_path) +- assert "simple" not in result.stdout ++ assert "\nsimple==" not in result.stdout + + + def test_freeze_include_work_dir_pkg(script: PipTestEnvironment) -> None: +diff --git a/tests/functional/test_install_check.py b/tests/functional/test_install_check.py +index 8a8a7c93a..bbda083f7 100644 +--- a/tests/functional/test_install_check.py ++++ b/tests/functional/test_install_check.py +@@ -57,6 +57,7 @@ def test_check_install_canonicalization(script: PipTestEnvironment) -> None: + ) + assert "requires" not in result.stderr + assert result.returncode == 0 ++ return + + # Double check that all errors are resolved in the end + result = script.pip("check") +diff --git a/tests/functional/test_list.py b/tests/functional/test_list.py +index e611fe7cb..c716f65c5 100644 +--- a/tests/functional/test_list.py ++++ b/tests/functional/test_list.py +@@ -1,5 +1,6 @@ + import json + import os ++import re + from pathlib import Path + + import pytest +@@ -42,8 +43,8 @@ def test_basic_list(simple_script: PipTestEnvironment) -> None: + + """ + result = simple_script.pip("list") +- assert "simple 1.0" in result.stdout, str(result) +- assert "simple2 3.0" in result.stdout, str(result) ++ assert re.search(r"simple\s+1\.0", result.stdout), str(result) ++ assert re.search(r"simple2\s+3\.0", result.stdout), str(result) + + + def test_verbose_flag(simple_script: PipTestEnvironment) -> None: +@@ -55,8 +56,8 @@ def test_verbose_flag(simple_script: PipTestEnvironment) -> None: + assert "Version" in result.stdout, str(result) + assert "Location" in result.stdout, str(result) + assert "Installer" in result.stdout, str(result) +- assert "simple 1.0" in result.stdout, str(result) +- assert "simple2 3.0" in result.stdout, str(result) ++ assert re.search(r"simple\s+1\.0", result.stdout), str(result) ++ assert re.search(r"simple2\s+3\.0", result.stdout), str(result) + + + def test_columns_flag(simple_script: PipTestEnvironment) -> None: +@@ -67,8 +68,8 @@ def test_columns_flag(simple_script: PipTestEnvironment) -> None: + assert "Package" in result.stdout, str(result) + assert "Version" in result.stdout, str(result) + assert "simple (1.0)" not in result.stdout, str(result) +- assert "simple 1.0" in result.stdout, str(result) +- assert "simple2 3.0" in result.stdout, str(result) ++ assert re.search(r"simple\s+1\.0", result.stdout), str(result) ++ assert re.search(r"simple2\s+3\.0", result.stdout), str(result) + + + def test_format_priority(simple_script: PipTestEnvironment) -> None: +@@ -80,16 +81,16 @@ def test_format_priority(simple_script: PipTestEnvironment) -> None: + ) + assert "simple==1.0" in result.stdout, str(result) + assert "simple2==3.0" in result.stdout, str(result) +- assert "simple 1.0" not in result.stdout, str(result) +- assert "simple2 3.0" not in result.stdout, str(result) ++ assert not re.search(r"simple\s+1\.0", result.stdout), str(result) ++ assert not re.search(r"simple2\s+3\.0", result.stdout), str(result) + + result = simple_script.pip("list", "--format=freeze", "--format=columns") + assert "Package" in result.stdout, str(result) + assert "Version" in result.stdout, str(result) + assert "simple==1.0" not in result.stdout, str(result) + assert "simple2==3.0" not in result.stdout, str(result) +- assert "simple 1.0" in result.stdout, str(result) +- assert "simple2 3.0" in result.stdout, str(result) ++ assert re.search(r"simple\s+1\.0", result.stdout), str(result) ++ assert re.search(r"simple2\s+3\.0", result.stdout), str(result) + + + def test_local_flag(simple_script: PipTestEnvironment) -> None: +@@ -125,8 +126,8 @@ def test_multiple_exclude_and_normalization( + assert "Normalizable_Name" in result.stdout + assert "pip" in result.stdout + result = script.pip("list", "--exclude", "normalizablE-namE", "--exclude", "pIp") +- assert "Normalizable_Name" not in result.stdout +- assert "pip" not in result.stdout ++ assert "Normalizable_Name " not in result.stdout ++ assert "pip " not in result.stdout + + + @pytest.mark.network +diff --git a/tests/lib/venv.py b/tests/lib/venv.py +index fac54d3bd..6bfe3cfdc 100644 +--- a/tests/lib/venv.py ++++ b/tests/lib/venv.py +@@ -9,6 +9,7 @@ import venv as _venv + from pathlib import Path + from typing import Dict, Literal, Optional, Union + ++import pytest + import virtualenv as _virtualenv + + VirtualEnvironmentType = Literal["virtualenv", "venv"] +@@ -35,7 +36,7 @@ class VirtualEnvironment: + self._venv_type = venv_type + else: + self._venv_type = "virtualenv" +- self._user_site_packages = False ++ self._user_site_packages = True + self._template = template + self._sitecustomize: Optional[str] = None + self._update_paths() +@@ -234,6 +235,8 @@ class VirtualEnvironment: + + @user_site_packages.setter + def user_site_packages(self, value: bool) -> None: ++ if not value: ++ pytest.skip("Gentoo: skipping due to lack of system site-packages") + self._user_site_packages = value + if self._legacy_virtualenv: + marker = self.lib / "no-global-site-packages.txt" diff --git a/dev-python/pip/pip-25.0.1-r1.ebuild b/dev-python/pip/pip-25.0.1-r1.ebuild new file mode 100644 index 000000000000..24f37823be9e --- /dev/null +++ b/dev-python/pip/pip-25.0.1-r1.ebuild @@ -0,0 +1,175 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +# please bump dev-python/ensurepip-pip along with this package! + +DISTUTILS_USE_PEP517=setuptools +PYTHON_TESTED=( pypy3 python3_{10..13} ) +PYTHON_COMPAT=( "${PYTHON_TESTED[@]}" pypy3_11 ) +PYTHON_REQ_USE="ssl(+),threads(+)" + +inherit bash-completion-r1 distutils-r1 + +DESCRIPTION="The PyPA recommended tool for installing Python packages" +HOMEPAGE=" + https://pip.pypa.io/en/stable/ + https://pypi.org/project/pip/ + https://github.com/pypa/pip/ +" +SRC_URI=" + https://github.com/pypa/pip/archive/${PV}.tar.gz -> ${P}.gh.tar.gz +" + +LICENSE="MIT" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" +IUSE="test-rust" + +# see src/pip/_vendor/vendor.txt +RDEPEND=" + >=dev-python/cachecontrol-0.14.1[${PYTHON_USEDEP}] + >=dev-python/distlib-0.3.9[${PYTHON_USEDEP}] + >=dev-python/distro-1.9.0[${PYTHON_USEDEP}] + >=dev-python/msgpack-1.1.0[${PYTHON_USEDEP}] + >=dev-python/packaging-24.2[${PYTHON_USEDEP}] + >=dev-python/platformdirs-4.3.6[${PYTHON_USEDEP}] + >=dev-python/pyproject-hooks-1.2.0[${PYTHON_USEDEP}] + >=dev-python/requests-2.32.0[${PYTHON_USEDEP}] + >=dev-python/rich-13.9.4[${PYTHON_USEDEP}] + >=dev-python/resolvelib-1.0.1[${PYTHON_USEDEP}] + >=dev-python/setuptools-69.5.1[${PYTHON_USEDEP}] + $(python_gen_cond_dep ' + >=dev-python/tomli-2.2.1[${PYTHON_USEDEP}] + ' 3.10) + >=dev-python/truststore-0.10.0[${PYTHON_USEDEP}] + >=dev-python/typing-extensions-4.12.2[${PYTHON_USEDEP}] +" +BDEPEND=" + ${RDEPEND} + test? ( + $(python_gen_cond_dep ' + dev-python/ensurepip-setuptools + dev-python/ensurepip-wheel + dev-python/freezegun[${PYTHON_USEDEP}] + dev-python/pretend[${PYTHON_USEDEP}] + dev-python/pytest-rerunfailures[${PYTHON_USEDEP}] + dev-python/pytest-xdist[${PYTHON_USEDEP}] + dev-python/scripttest[${PYTHON_USEDEP}] + dev-python/tomli-w[${PYTHON_USEDEP}] + dev-python/virtualenv[${PYTHON_USEDEP}] + dev-python/werkzeug[${PYTHON_USEDEP}] + dev-python/wheel[${PYTHON_USEDEP}] + test-rust? ( + dev-python/cryptography[${PYTHON_USEDEP}] + ) + dev-vcs/git + ' "${PYTHON_TESTED[@]}") + ) +" + +distutils_enable_tests pytest + +python_prepare_all() { + local PATCHES=( + "${FILESDIR}/pip-23.1-no-coverage.patch" + # prepare to unbundle dependencies + "${FILESDIR}/pip-25.0.1-unbundle.patch" + ) + + distutils-r1_python_prepare_all + + # unbundle dependencies + rm -r src/pip/_vendor || die + find -name '*.py' -exec sed -i \ + -e 's:from pip\._vendor import:import:g' \ + -e 's:from pip\._vendor\.:from :g' \ + {} + || die + + if use test; then + local wheels=( + "${BROOT}"/usr/lib/python/ensurepip/{setuptools,wheel}-*.whl + ) + mkdir tests/data/common_wheels/ || die + cp "${wheels[@]}" tests/data/common_wheels/ || die + fi +} + +python_compile_all() { + # 'pip completion' command embeds full $0 into completion script, which confuses + # 'complete' and causes QA warning when running as "${PYTHON} -m pip". + # This trick sets correct $0 while still calling just installed pip. + local pipcmd='import sys; sys.argv[0] = "pip"; __file__ = ""; from pip._internal.cli.main import main; sys.exit(main())' + "${EPYTHON}" -c "${pipcmd}" completion --bash > completion.bash || die + "${EPYTHON}" -c "${pipcmd}" completion --zsh > completion.zsh || die +} + +python_test() { + if ! has "${EPYTHON}" "${PYTHON_TESTED[@]/_/.}"; then + einfo "Skipping tests on ${EPYTHON}" + return 0 + fi + + local EPYTEST_DESELECT=( + tests/functional/test_inspect.py::test_inspect_basic + # Internet + tests/functional/test_config_settings.py::test_backend_sees_config_via_sdist + tests/functional/test_install.py::test_double_install_fail + tests/functional/test_install.py::test_install_sdist_links + tests/functional/test_install_config.py::test_prompt_for_keyring_if_needed + # broken by system site-packages use + tests/functional/test_freeze.py::test_freeze_with_setuptools + tests/functional/test_pip_runner_script.py::test_runner_work_in_environments_with_no_pip + tests/functional/test_uninstall.py::test_basic_uninstall_distutils + tests/unit/test_base_command.py::test_base_command_global_tempdir_cleanup + tests/unit/test_base_command.py::test_base_command_local_tempdir_cleanup + tests/unit/test_base_command.py::test_base_command_provides_tempdir_helpers + # broken by unbundling + "tests/functional/test_debug.py::test_debug[vendored library versions:]" + tests/functional/test_debug.py::test_debug__library_versions + tests/functional/test_python_option.py::test_python_interpreter + tests/functional/test_uninstall.py::test_uninstall_non_local_distutils + ) + local EPYTEST_IGNORE=( + # requires proxy.py + tests/functional/test_proxy.py + ) + + case ${EPYTHON} in + pypy3) + EPYTEST_DESELECT+=( + # unexpected tempfiles? + tests/functional/test_install_config.py::test_do_not_prompt_for_authentication + tests/functional/test_install_config.py::test_prompt_for_authentication + ) + ;; + esac + + if ! has_version "dev-python/cryptography[${PYTHON_USEDEP}]"; then + EPYTEST_DESELECT+=( + tests/functional/test_install.py::test_install_sends_client_cert + tests/functional/test_install_config.py::test_do_not_prompt_for_authentication + tests/functional/test_install_config.py::test_prompt_for_authentication + tests/functional/test_install_config.py::test_prompt_for_keyring_if_needed + ) + fi + + local -x PIP_DISABLE_PIP_VERSION_CHECK=1 + local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 + local EPYTEST_XDIST=1 + # rerunfailures because test suite breaks if packages are installed + # in parallel + epytest -m "not network" -o tmp_path_retention_policy=all \ + -p rerunfailures --reruns=5 --use-venv +} + +python_install_all() { + local DOCS=( AUTHORS.txt docs/html/**/*.rst ) + distutils-r1_python_install_all + + newbashcomp completion.bash pip + + insinto /usr/share/zsh/site-functions + newins completion.zsh _pip +} diff --git a/dev-python/pip/pip-25.0.1.ebuild b/dev-python/pip/pip-25.0.1.ebuild deleted file mode 100644 index a535620fe6ce..000000000000 --- a/dev-python/pip/pip-25.0.1.ebuild +++ /dev/null @@ -1,170 +0,0 @@ -# Copyright 1999-2025 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -# please bump dev-python/ensurepip-pip along with this package! - -DISTUTILS_USE_PEP517=setuptools -PYTHON_TESTED=( pypy3 python3_{10..13} ) -PYTHON_COMPAT=( "${PYTHON_TESTED[@]}" pypy3_11 ) -PYTHON_REQ_USE="ssl(+),threads(+)" - -inherit bash-completion-r1 distutils-r1 - -DESCRIPTION="The PyPA recommended tool for installing Python packages" -HOMEPAGE=" - https://pip.pypa.io/en/stable/ - https://pypi.org/project/pip/ - https://github.com/pypa/pip/ -" -SRC_URI=" - https://github.com/pypa/pip/archive/${PV}.tar.gz -> ${P}.gh.tar.gz -" - -LICENSE="MIT" -SLOT="0" -KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" -IUSE="test-rust" - -# see src/pip/_vendor/vendor.txt -RDEPEND=" - >=dev-python/cachecontrol-0.14.1[${PYTHON_USEDEP}] - >=dev-python/distlib-0.3.9[${PYTHON_USEDEP}] - >=dev-python/distro-1.9.0[${PYTHON_USEDEP}] - >=dev-python/msgpack-1.1.0[${PYTHON_USEDEP}] - >=dev-python/packaging-24.2[${PYTHON_USEDEP}] - >=dev-python/platformdirs-4.3.6[${PYTHON_USEDEP}] - >=dev-python/pyproject-hooks-1.2.0[${PYTHON_USEDEP}] - >=dev-python/requests-2.32.0[${PYTHON_USEDEP}] - >=dev-python/rich-13.9.4[${PYTHON_USEDEP}] - >=dev-python/resolvelib-1.0.1[${PYTHON_USEDEP}] - >=dev-python/setuptools-69.5.1[${PYTHON_USEDEP}] - $(python_gen_cond_dep ' - >=dev-python/tomli-2.2.1[${PYTHON_USEDEP}] - ' 3.10) - >=dev-python/truststore-0.10.0[${PYTHON_USEDEP}] - >=dev-python/typing-extensions-4.12.2[${PYTHON_USEDEP}] -" -BDEPEND=" - ${RDEPEND} - test? ( - $(python_gen_cond_dep ' - dev-python/ensurepip-setuptools - dev-python/ensurepip-wheel - dev-python/freezegun[${PYTHON_USEDEP}] - dev-python/pretend[${PYTHON_USEDEP}] - dev-python/pytest-rerunfailures[${PYTHON_USEDEP}] - dev-python/pytest-xdist[${PYTHON_USEDEP}] - dev-python/scripttest[${PYTHON_USEDEP}] - dev-python/tomli-w[${PYTHON_USEDEP}] - dev-python/virtualenv[${PYTHON_USEDEP}] - dev-python/werkzeug[${PYTHON_USEDEP}] - dev-python/wheel[${PYTHON_USEDEP}] - test-rust? ( - dev-python/cryptography[${PYTHON_USEDEP}] - ) - dev-vcs/git - ' "${PYTHON_TESTED[@]}") - ) -" - -distutils_enable_tests pytest - -python_prepare_all() { - local PATCHES=( - "${FILESDIR}/pip-23.1-no-coverage.patch" - # prepare to unbundle dependencies - "${FILESDIR}/pip-24.1-unbundle.patch" - ) - - distutils-r1_python_prepare_all - - # unbundle dependencies - rm -r src/pip/_vendor || die - find -name '*.py' -exec sed -i \ - -e 's:from pip\._vendor import:import:g' \ - -e 's:from pip\._vendor\.:from :g' \ - {} + || die - - if use test; then - local wheels=( - "${BROOT}"/usr/lib/python/ensurepip/{setuptools,wheel}-*.whl - ) - mkdir tests/data/common_wheels/ || die - cp "${wheels[@]}" tests/data/common_wheels/ || die - fi -} - -python_compile_all() { - # 'pip completion' command embeds full $0 into completion script, which confuses - # 'complete' and causes QA warning when running as "${PYTHON} -m pip". - # This trick sets correct $0 while still calling just installed pip. - local pipcmd='import sys; sys.argv[0] = "pip"; __file__ = ""; from pip._internal.cli.main import main; sys.exit(main())' - "${EPYTHON}" -c "${pipcmd}" completion --bash > completion.bash || die - "${EPYTHON}" -c "${pipcmd}" completion --zsh > completion.zsh || die -} - -python_test() { - local EPYTEST_DESELECT=( - tests/functional/test_inspect.py::test_inspect_basic - # Internet - tests/functional/test_config_settings.py::test_backend_sees_config_via_sdist - tests/functional/test_install.py::test_double_install_fail - tests/functional/test_install.py::test_install_sdist_links - tests/functional/test_install_config.py::test_prompt_for_keyring_if_needed - # broken by system site-packages use - tests/functional/test_freeze.py::test_freeze_with_setuptools - tests/functional/test_pip_runner_script.py::test_runner_work_in_environments_with_no_pip - tests/functional/test_uninstall.py::test_basic_uninstall_distutils - tests/unit/test_base_command.py::test_base_command_global_tempdir_cleanup - tests/unit/test_base_command.py::test_base_command_local_tempdir_cleanup - tests/unit/test_base_command.py::test_base_command_provides_tempdir_helpers - # broken by unbundling - "tests/functional/test_debug.py::test_debug[vendored library versions:]" - tests/functional/test_debug.py::test_debug__library_versions - tests/functional/test_python_option.py::test_python_interpreter - tests/functional/test_uninstall.py::test_uninstall_non_local_distutils - ) - local EPYTEST_IGNORE=( - # requires proxy.py - tests/functional/test_proxy.py - ) - - case ${EPYTHON} in - pypy3) - EPYTEST_DESELECT+=( - # unexpected tempfiles? - tests/functional/test_install_config.py::test_do_not_prompt_for_authentication - tests/functional/test_install_config.py::test_prompt_for_authentication - ) - ;; - esac - - if ! has_version "dev-python/cryptography[${PYTHON_USEDEP}]"; then - EPYTEST_DESELECT+=( - tests/functional/test_install.py::test_install_sends_client_cert - tests/functional/test_install_config.py::test_do_not_prompt_for_authentication - tests/functional/test_install_config.py::test_prompt_for_authentication - tests/functional/test_install_config.py::test_prompt_for_keyring_if_needed - ) - fi - - local -x PIP_DISABLE_PIP_VERSION_CHECK=1 - local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 - local EPYTEST_XDIST=1 - # rerunfailures because test suite breaks if packages are installed - # in parallel - epytest -m "not network" -o tmp_path_retention_policy=all \ - -p rerunfailures --reruns=5 --use-venv -} - -python_install_all() { - local DOCS=( AUTHORS.txt docs/html/**/*.rst ) - distutils-r1_python_install_all - - newbashcomp completion.bash pip - - insinto /usr/share/zsh/site-functions - newins completion.zsh _pip -} -- cgit v1.2.3