summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichał Górny <mgorny@gentoo.org>2025-07-05 14:24:30 +0200
committerMichał Górny <mgorny@gentoo.org>2025-07-08 08:03:05 +0200
commitc017c6384e76484d2e2465eff2e16c78e35cd580 (patch)
tree029d6bb7579705b7ed671f2e3cf35fa9a46ae4a3
parent129f9f44662460d2793cf0f55304ca3b8d3346ab (diff)
downloadgentoo-c017c6384e76484d2e2465eff2e16c78e35cd580.tar.gz
gentoo-c017c6384e76484d2e2465eff2e16c78e35cd580.tar.bz2
gentoo-c017c6384e76484d2e2465eff2e16c78e35cd580.zip
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>
-rw-r--r--dev-python/ensurepip-setuptools/Manifest1
-rw-r--r--dev-python/ensurepip-setuptools/ensurepip-setuptools-80.9.0-r1.ebuild86
-rw-r--r--dev-python/ensurepip-setuptools/metadata.xml17
3 files changed, 97 insertions, 7 deletions
diff --git a/dev-python/ensurepip-setuptools/Manifest b/dev-python/ensurepip-setuptools/Manifest
index 52cfd61b5197..7db4debdcccd 100644
--- a/dev-python/ensurepip-setuptools/Manifest
+++ b/dev-python/ensurepip-setuptools/Manifest
@@ -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
diff --git a/dev-python/ensurepip-setuptools/ensurepip-setuptools-80.9.0-r1.ebuild b/dev-python/ensurepip-setuptools/ensurepip-setuptools-80.9.0-r1.ebuild
new file mode 100644
index 000000000000..16193240eb0e
--- /dev/null
+++ b/dev-python/ensurepip-setuptools/ensurepip-setuptools-80.9.0-r1.ebuild
@@ -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}"
+}
diff --git a/dev-python/ensurepip-setuptools/metadata.xml b/dev-python/ensurepip-setuptools/metadata.xml
index ac51c41b5f27..46eeb100c7f3 100644
--- a/dev-python/ensurepip-setuptools/metadata.xml
+++ b/dev-python/ensurepip-setuptools/metadata.xml
@@ -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>