From af0edeba23b385b695a53a7b91eaa20188a12926 Mon Sep 17 00:00:00 2001 From: Flatcar Buildbot Date: Mon, 4 Aug 2025 07:14:04 +0000 Subject: [PATCH] dev-python/pip: Sync with Gentoo It's from Gentoo commit a101ef012188824865db9689743b8f7f697da1ed. --- .../portage-stable/dev-python/pip/Manifest | 1 + .../pip/files/pip-25.2-test-wheels.patch | 74 +++++++ .../dev-python/pip/pip-25.2.ebuild | 191 ++++++++++++++++++ 3 files changed, 266 insertions(+) create mode 100644 sdk_container/src/third_party/portage-stable/dev-python/pip/files/pip-25.2-test-wheels.patch create mode 100644 sdk_container/src/third_party/portage-stable/dev-python/pip/pip-25.2.ebuild diff --git a/sdk_container/src/third_party/portage-stable/dev-python/pip/Manifest b/sdk_container/src/third_party/portage-stable/dev-python/pip/Manifest index 08cbb3a739..86f564765d 100644 --- a/sdk_container/src/third_party/portage-stable/dev-python/pip/Manifest +++ b/sdk_container/src/third_party/portage-stable/dev-python/pip/Manifest @@ -1 +1,2 @@ DIST pip-25.1.1.gh.tar.gz 9219969 BLAKE2B eb443451deeb71888c2fc56ac5c8cb2d0515ec0efff975fab98cfa65d1fc5e66948243b3acebf1f4b0446e46082abb9fd350816579a4f5af1292c160490ce930 SHA512 ce61c9861265139b3c5ea9be9dc246097cd75c21687cf8301f80a377d02420c4524f0d6307d2ca0232ff8715b1105343bcfdb9cac6b69503780ab2c4645558dc +DIST pip-25.2.gh.tar.gz 9121715 BLAKE2B 3bfe61d6d0d6f3a79c3fd801f5cb40b203fd12085d925ae7cde53adca3c5ee523fdfd9449546e1bc8ca719b3e8766cfef3162919e13a77f7adc0d20a951d11c7 SHA512 5cc65c9091fdda7905e26ce32ddaa3a1c2fd287d69fd3da67c814ba7e8e5be59301d8327c06cdca78c1b95f4a5b5f75c87f36a549022408cc0e8f9411c0db11e diff --git a/sdk_container/src/third_party/portage-stable/dev-python/pip/files/pip-25.2-test-wheels.patch b/sdk_container/src/third_party/portage-stable/dev-python/pip/files/pip-25.2-test-wheels.patch new file mode 100644 index 0000000000..c99af85681 --- /dev/null +++ b/sdk_container/src/third_party/portage-stable/dev-python/pip/files/pip-25.2-test-wheels.patch @@ -0,0 +1,74 @@ +From f172db76c62cf8e00fb547828c43cd8bf78a31ef Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= +Date: Thu, 31 Jul 2025 05:10:08 +0200 +Subject: [PATCH] Disable coverage & socket plugins inside test venvs + +--- + tests/conftest.py | 33 --------------------------------- + 1 file changed, 33 deletions(-) + +diff --git a/tests/conftest.py b/tests/conftest.py +index c98b87117..f4ef35a7e 100644 +--- a/tests/conftest.py ++++ b/tests/conftest.py +@@ -444,25 +444,6 @@ def wheel_install(tmpdir_factory: pytest.TempPathFactory, common_wheels: Path) - + return _common_wheel_editable_install(tmpdir_factory, common_wheels, "wheel") + + +-@pytest.fixture(scope="session") +-def coverage_install( +- tmpdir_factory: pytest.TempPathFactory, common_wheels: Path +-) -> Path: +- return _common_wheel_editable_install(tmpdir_factory, common_wheels, "coverage") +- +- +-@pytest.fixture(scope="session") +-def socket_install(tmpdir_factory: pytest.TempPathFactory, common_wheels: Path) -> Path: +- lib_dir = _common_wheel_editable_install( +- tmpdir_factory, common_wheels, "pytest_subket" +- ) +- # pytest-subket is only included so it can intercept and block unexpected +- # network requests. It should NOT be visible to the pip under test. +- dist_info = next(lib_dir.glob("*.dist-info")) +- shutil.rmtree(dist_info) +- return lib_dir +- +- + def install_pth_link( + venv: VirtualEnvironment, project_name: str, lib_dir: Path + ) -> None: +@@ -479,8 +460,6 @@ def virtualenv_template( + pip_editable_parts: tuple[Path, ...], + setuptools_install: Path, + wheel_install: Path, +- coverage_install: Path, +- socket_install: Path, + ) -> VirtualEnvironment: + venv_type: VirtualEnvironmentType + if request.config.getoption("--use-venv"): +@@ -494,11 +473,7 @@ def virtualenv_template( + + # Install setuptools, wheel, pytest-subket, and pip. + install_pth_link(venv, "setuptools", setuptools_install) + install_pth_link(venv, "wheel", wheel_install) +- install_pth_link(venv, "pytest_subket", socket_install) +- # Also copy pytest-subket's .pth file so it can intercept socket calls. +- with open(venv.site / "pytest_socket.pth", "w") as f: +- f.write(socket_install.joinpath("pytest_socket.pth").read_text()) + + pth, dist_info = pip_editable_parts + +@@ -511,13 +485,6 @@ def virtualenv_template( + # detects changed files. + venv.site.joinpath("easy-install.pth").touch() + +- # Install coverage and pth file for executing it in any spawned processes +- # in this virtual environment. +- install_pth_link(venv, "coverage", coverage_install) +- # zz prefix ensures the file is after easy-install.pth. +- with open(venv.site / "zz-coverage-helper.pth", "a") as f: +- f.write("import coverage; coverage.process_startup()") +- + # Drop (non-relocatable) launchers. + for exe in os.listdir(venv.bin): + if not exe.startswith(("python", "libpy")): # Don't remove libpypy-c.so... diff --git a/sdk_container/src/third_party/portage-stable/dev-python/pip/pip-25.2.ebuild b/sdk_container/src/third_party/portage-stable/dev-python/pip/pip-25.2.ebuild new file mode 100644 index 0000000000..fbfd75f3e9 --- /dev/null +++ b/sdk_container/src/third_party/portage-stable/dev-python/pip/pip-25.2.ebuild @@ -0,0 +1,191 @@ +# 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_11 python3_{11..14} ) +PYTHON_COMPAT=( "${PYTHON_TESTED[@]}" ) +PYTHON_REQ_USE="ssl(+),threads(+)" + +inherit distutils-r1 shell-completion + +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 ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" +IUSE="test test-rust" +RESTRICT="!test? ( test )" + +# see src/pip/_vendor/vendor.txt +RDEPEND=" + >=dev-python/cachecontrol-0.14.3[${PYTHON_USEDEP}] + >=dev-python/dependency-groups-1.3.0[${PYTHON_USEDEP}] + >=dev-python/distlib-0.4.0[${PYTHON_USEDEP}] + >=dev-python/distro-1.9.0[${PYTHON_USEDEP}] + >=dev-python/msgpack-1.1.1[${PYTHON_USEDEP}] + >=dev-python/packaging-25.0[${PYTHON_USEDEP}] + >=dev-python/platformdirs-4.3.8[${PYTHON_USEDEP}] + >=dev-python/pyproject-hooks-1.2.0[${PYTHON_USEDEP}] + >=dev-python/requests-2.32.4[${PYTHON_USEDEP}] + >=dev-python/rich-14.1.0[${PYTHON_USEDEP}] + >=dev-python/resolvelib-1.2.0[${PYTHON_USEDEP}] + >=dev-python/setuptools-70.3.0[${PYTHON_USEDEP}] + >=dev-python/tomli-w-1.2.0[${PYTHON_USEDEP}] + >=dev-python/truststore-0.10.1[${PYTHON_USEDEP}] + >=dev-python/typing-extensions-4.13.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[${PYTHON_USEDEP}] + dev-python/pytest-rerunfailures[${PYTHON_USEDEP}] + dev-python/pytest-xdist[${PYTHON_USEDEP}] + dev-python/scripttest[${PYTHON_USEDEP}] + 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 + tests/functional/test_lock.py::test_lock_archive + tests/functional/test_lock.py::test_lock_vcs + # 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=( + # from upstream options + tests/tests_cache + # 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 EPYTEST_PLUGINS=() + # rerunfailures because test suite breaks if packages are installed + # to system site-packages while it's running + local EPYTEST_RERUNS=5 + local EPYTEST_XDIST=1 + epytest -m "not network" -o addopts= -o tmp_path_retention_policy=all \ + --use-venv +} + +python_install_all() { + local DOCS=( AUTHORS.txt docs/html/**/*.rst ) + distutils-r1_python_install_all + + newbashcomp completion.bash pip + newzshcomp completion.zsh _pip +}