dev-python/ensurepip-setuptools: 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/setuptools is only testing the unbundled
variant.

Signed-off-by: Michał Górny <mgorny@gentoo.org>
Part-of: https://github.com/gentoo/gentoo/pull/42882
Signed-off-by: Michał Górny <mgorny@gentoo.org>
This commit is contained in:
Michał Górny 2025-07-05 14:24:30 +02:00
parent 129f9f4466
commit c017c6384e
No known key found for this signature in database
GPG Key ID: 639ADAE2329E240E
3 changed files with 97 additions and 7 deletions

View File

@ -1,2 +1,3 @@
DIST setuptools-79.0.1-py3-none-any.whl 1256281 BLAKE2B 8ae51bdd1c0ccada116757c2bd765225fcf4bedc7ada18567ae12f09b6978cdbcddd4f635a39a5568b6d3ed4388e4f73af5c33a7060f2ac0d0907fc82d8fd74f SHA512 fef6cfc6f95a5bb7320f1680e1c665cb8d9a4e4227cde4d8aab8a50bed4bcf04320085b9d7d5343359f887008db5c5a861e57f3d08b7b0b2311a28adaeee6b4a
DIST setuptools-80.9.0-py3-none-any.whl 1201486 BLAKE2B 79895683ef4df387aee698984dfdf13adb14314f2d0267f41291c1c1ca68f4383a4273f004b6f3457463913eb19f8d386f32e2630ceaceaaf27ef32c4f61b7ed SHA512 2a0420f7faaa33d2132b82895a8282688030e939db0225ad8abb95a47bdb87b45318f10985fc3cee271a9121441c1526caa363d7f2e4a4b18b1a674068766e87
DIST setuptools-80.9.0.tar.gz 1319958 BLAKE2B ab367912eec92b0d1251916d09c1dd2e311767eec87225beaff870dff923b47ba1732d2f7393b7d9e55d1ff1249c612e4403019e0021048951f9fc3b775c04c9 SHA512 36eb1f219d29c6b9e135936bde2001ad70a971c8069cd0175d3a5325b450e6843a903d3f70043c9f534768ebeab8ab0c544b8f44456555d333f1ed72daa5c18b

View File

@ -0,0 +1,86 @@
# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
DISTUTILS_USE_PEP517=standalone
PYPI_PN=${PN#ensurepip-}
# PYTHON_COMPAT used only for testing
PYTHON_COMPAT=( python3_{11..14} pypy3_11 )
PYTHON_REQ_USE="xml(+)"
inherit distutils-r1 pypi
DESCRIPTION="Shared setuptools wheel for ensurepip Python module"
HOMEPAGE="
https://github.com/pypa/setuptools/
https://pypi.org/project/setuptools/
"
LICENSE="MIT"
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"
RESTRICT="!test? ( test )"
BDEPEND="
${RDEPEND}
test? (
>=dev-python/build-1.0.3[${PYTHON_USEDEP}]
>=dev-python/ini2toml-0.14[${PYTHON_USEDEP}]
>=dev-python/filelock-3.4.0[${PYTHON_USEDEP}]
>=dev-python/jaraco-envs-2.2[${PYTHON_USEDEP}]
>=dev-python/jaraco-path-3.7.2[${PYTHON_USEDEP}]
>=dev-python/jaraco-test-5.5[${PYTHON_USEDEP}]
dev-python/pip[${PYTHON_USEDEP}]
dev-python/pyproject-hooks[${PYTHON_USEDEP}]
>=dev-python/tomli-w-1.0.0[${PYTHON_USEDEP}]
>=dev-python/virtualenv-20[${PYTHON_USEDEP}]
)
"
EPYTEST_PLUGINS=( pytest-{home,subprocess,timeout} )
EPYTEST_XDIST=1
distutils_enable_tests pytest
python_compile() {
# If we're testing, install for all implementations.
# If we're not, just get one wheel built.
if use test || [[ -z ${DISTUTILS_WHEEL_PATH} ]]; then
distutils-r1_python_compile
fi
}
python_test() {
local EPYTEST_DESELECT=(
# TODO
setuptools/tests/config/test_setupcfg.py::TestConfigurationReader::test_basic
setuptools/tests/config/test_setupcfg.py::TestConfigurationReader::test_ignore_errors
# TODO, probably some random package
setuptools/tests/config/test_setupcfg.py::TestOptions::test_cmdclass
# relies on -Werror
setuptools/_static.py::setuptools._static.Dict
setuptools/_static.py::setuptools._static.List
)
case ${EPYTHON} in
pypy3.11)
EPYTEST_DESELECT+=(
setuptools/tests/test_editable_install.py::TestCustomBuildWheel::test_access_plat_name
)
;;
esac
local -x PRE_BUILT_SETUPTOOLS_WHEEL=${DISTUTILS_WHEEL_PATH}
epytest -o tmp_path_retention_policy=all \
-m "not uses_network" setuptools
}
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}"
}

View File

@ -1,11 +1,14 @@
<?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">setuptools</remote-id>
</upstream>
<maintainer type="project">
<email>python@gentoo.org</email>
<name>Python</name>
</maintainer>
<stabilize-allarches/>
<upstream>
<remote-id type="pypi">setuptools</remote-id>
<remote-id type="github">pypa/setuptools</remote-id>
<remote-id type="cpe">cpe:/a:python:setuptools</remote-id>
</upstream>
</pkgmetadata>