gentoo/dev-python/ensurepip-setuptools/ensurepip-setuptools-80.9.0-r1.ebuild
Michał Górny c017c6384e
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>
2025-07-08 08:03:05 +02:00

87 lines
2.4 KiB
Bash

# 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}"
}