mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-01-06 02:17:34 -08:00
dev-python/ensurepip-pip: Switch to building from source
Build the installed wheel from source rather than fetching the upstream wheel. This is going to make it easier to patch bugs, and it enables users to apply user patches. Additionally, we are effectively extending test coverage, since dev-python/pip is only testing the unbundled variant. Signed-off-by: Michał Górny <mgorny@gentoo.org> Part-of: https://github.com/gentoo/gentoo/pull/42882 Closes: https://github.com/gentoo/gentoo/pull/42882 Signed-off-by: Michał Górny <mgorny@gentoo.org>
This commit is contained in:
parent
c017c6384e
commit
e8f4b3407b
@ -1,3 +1,4 @@
|
||||
DIST pip-25.0.1-py3-none-any.whl 1841526 BLAKE2B 928210cf0586b2e17cf96c341babbbf612eb08775af716588fad8840d04153d264b64098f97c8d2d7b219389d571cee8e4190195f8c5cc9f602749aad92df437 SHA512 48315489f2c0a76b49386228f9a2f675e71f20ff2f4aaaf65b2634ba5cac7c98facfbdebeb4651c65efdd2ade053a140d7a2a6b44587549d6663bc8bb5ef2220
|
||||
DIST pip-25.1-py3-none-any.whl 1824948 BLAKE2B a237c46c680afca0b72da704db8f390f9723e1a9d262b31d3d1dc7c89adff2dd6908768cdbeff5dc621ade7d68ce056ec1c6373b1b500da3a098d9f9798ad925 SHA512 1f669dce82d5e9238dc4cb776097f96179be9dbacf18a825a0845437cc4c234ab5242009e8d7d5b0d383bc339d0759ea408668b8d7076861d35da275c0d0fbfe
|
||||
DIST pip-25.1.1-py3-none-any.whl 1825227 BLAKE2B 13170fa08dd26edced5e5fe8d89b38f5b3b63882489d2a951a7238f950a332ce0df11109482840595984bca187960d8fe2b7aeabfcbdaf94e5586631cc1de4e3 SHA512 e0c56f04a306cba9e13ed87f7460ad5a3bda7d6c37e05098082c58acb1f7493c8061e48df279f2c476e75d12df12d0f1a74d82e00e6fc2badffe484d281c56fc
|
||||
DIST pip-25.1.1.gh.tar.gz 9219969 BLAKE2B eb443451deeb71888c2fc56ac5c8cb2d0515ec0efff975fab98cfa65d1fc5e66948243b3acebf1f4b0446e46082abb9fd350816579a4f5af1292c160490ce930 SHA512 ce61c9861265139b3c5ea9be9dc246097cd75c21687cf8301f80a377d02420c4524f0d6307d2ca0232ff8715b1105343bcfdb9cac6b69503780ab2c4645558dc
|
||||
|
||||
145
dev-python/ensurepip-pip/ensurepip-pip-25.1.1-r1.ebuild
Normal file
145
dev-python/ensurepip-pip/ensurepip-pip-25.1.1-r1.ebuild
Normal file
@ -0,0 +1,145 @@
|
||||
# Copyright 1999-2025 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=8
|
||||
|
||||
DISTUTILS_USE_PEP517=setuptools
|
||||
# PYTHON_COMPAT is used only for testing
|
||||
PYTHON_COMPAT=( pypy3_11 python3_{11..14} )
|
||||
PYTHON_REQ_USE="ssl(+),threads(+)"
|
||||
|
||||
inherit distutils-r1
|
||||
|
||||
MY_P=${P#ensurepip-}
|
||||
DESCRIPTION="Shared pip wheel for ensurepip Python module"
|
||||
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 -> ${MY_P}.gh.tar.gz
|
||||
"
|
||||
S=${WORKDIR}/${MY_P}
|
||||
|
||||
LICENSE="Apache-2.0 BSD BSD-2 ISC LGPL-2.1+ MIT MPL-2.0 PSF-2"
|
||||
SLOT="0"
|
||||
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
|
||||
IUSE="test test-rust"
|
||||
RESTRICT="!test? ( test )"
|
||||
|
||||
BDEPEND="
|
||||
${RDEPEND}
|
||||
test? (
|
||||
<dev-python/ensurepip-setuptools-80
|
||||
dev-python/ensurepip-wheel
|
||||
dev-python/freezegun[${PYTHON_USEDEP}]
|
||||
dev-python/pretend[${PYTHON_USEDEP}]
|
||||
dev-python/scripttest[${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
|
||||
)
|
||||
"
|
||||
|
||||
EPYTEST_PLUGINS=( pytest-rerunfailures )
|
||||
EPYTEST_XDIST=1
|
||||
distutils_enable_tests pytest
|
||||
|
||||
python_prepare_all() {
|
||||
local PATCHES=(
|
||||
"${FILESDIR}/pip-23.1-no-coverage.patch"
|
||||
)
|
||||
|
||||
distutils-r1_python_prepare_all
|
||||
|
||||
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_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
|
||||
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
|
||||
)
|
||||
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
|
||||
)
|
||||
;;
|
||||
python3.14*)
|
||||
EPYTEST_DESELECT+=(
|
||||
# TODO: segfaults
|
||||
tests/unit/test_collector.py::test_get_index_content_directory_append_index
|
||||
# https://github.com/python/cpython/issues/125974
|
||||
tests/unit/test_collector.py::test_ensure_quoted_url
|
||||
tests/unit/test_finder.py::test_finder_priority_file_over_page
|
||||
tests/unit/test_urls.py::test_path_to_url_unix
|
||||
tests/unit/test_collector.py::test_clean_url_path
|
||||
tests/unit/test_collector.py::test_clean_url_path_with_local_path
|
||||
tests/unit/test_req.py::TestRequirementSet::test_download_info_local_editable_dir
|
||||
tests/unit/test_req.py::test_parse_editable_local
|
||||
tests/unit/test_req.py::test_parse_editable_local_extras
|
||||
tests/unit/test_req.py::test_get_url_from_path__archive_file
|
||||
tests/unit/test_req.py::test_get_url_from_path__installable_dir
|
||||
tests/functional/test_lock.py::test_lock_wheel_from_findlinks
|
||||
tests/functional/test_lock.py::test_lock_sdist_from_findlinks
|
||||
tests/functional/test_lock.py::test_lock_local_editable_with_dep
|
||||
)
|
||||
;;
|
||||
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
|
||||
# rerunfailures because test suite breaks if packages are installed
|
||||
# in parallel
|
||||
epytest -m "not network" -o tmp_path_retention_policy=all \
|
||||
--reruns=5 --use-venv
|
||||
}
|
||||
|
||||
src_install() {
|
||||
if [[ ${DISTUTILS_WHEEL_PATH} != *py3-none-any.whl ]]; then
|
||||
die "Non-pure wheel produced?! ${DISTUTILS_WHEEL_PATH}"
|
||||
fi
|
||||
# TODO: compress it?
|
||||
insinto /usr/lib/python/ensurepip
|
||||
doins "${DISTUTILS_WHEEL_PATH}"
|
||||
}
|
||||
42
dev-python/ensurepip-pip/files/pip-23.1-no-coverage.patch
Normal file
42
dev-python/ensurepip-pip/files/pip-23.1-no-coverage.patch
Normal file
@ -0,0 +1,42 @@
|
||||
From d915b0eec7b5844c06b5d8853544c8c5b538b0b9 Mon Sep 17 00:00:00 2001
|
||||
From: Arthur Zamarin <arthurzam@gentoo.org>
|
||||
Date: Fri, 29 Jul 2022 14:06:03 +0300
|
||||
Subject: [PATCH] Disable coverage testing support inside test venvs
|
||||
|
||||
--- a/tests/conftest.py
|
||||
+++ b/tests/conftest.py
|
||||
@@ -408,13 +408,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")
|
||||
-
|
||||
-
|
||||
def install_pth_link(
|
||||
venv: VirtualEnvironment, project_name: str, lib_dir: Path
|
||||
) -> None:
|
||||
@@ -431,3 +424,2 @@ def virtualenv_template(
|
||||
setuptools_install: Path,
|
||||
wheel_install: Path,
|
||||
- coverage_install: Path,
|
||||
@@ -457,13 +449,6 @@ def virtualenv_template(
|
||||
[os.fspath(venv.bin / "python"), "setup.py", "-q", "develop"], cwd=pip_editable
|
||||
)
|
||||
|
||||
- # 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 (
|
||||
--
|
||||
2.40.0
|
||||
|
||||
@ -1,11 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
|
||||
<pkgmetadata>
|
||||
<maintainer type="project">
|
||||
<email>python@gentoo.org</email>
|
||||
</maintainer>
|
||||
<stabilize-allarches/>
|
||||
<upstream>
|
||||
<remote-id type="pypi">pip</remote-id>
|
||||
</upstream>
|
||||
<maintainer type="project">
|
||||
<email>python@gentoo.org</email>
|
||||
<name>Python</name>
|
||||
</maintainer>
|
||||
<stabilize-allarches/>
|
||||
<upstream>
|
||||
<remote-id type="pypi">pip</remote-id>
|
||||
<remote-id type="github">pypa/pip</remote-id>
|
||||
</upstream>
|
||||
</pkgmetadata>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user