blob: ee5ce0b32cdb5c8423e226b47204ed929097d2ba (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
|
# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
# please keep this ebuild at EAPI 8 -- sys-apps/portage dep
EAPI=8
# please bump dev-python/ensurepip-setuptools along with this package!
DISTUTILS_USE_PEP517=standalone
PYTHON_TESTED=( python3_{10..13} pypy3 )
PYTHON_COMPAT=( "${PYTHON_TESTED[@]}" )
PYTHON_REQ_USE="xml(+)"
inherit distutils-r1 pypi
DESCRIPTION="Collection of extensions to Distutils"
HOMEPAGE="
https://github.com/pypa/setuptools/
https://pypi.org/project/setuptools/
"
LICENSE="MIT"
SLOT="0"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
IUSE="test"
RESTRICT="!test? ( test )"
# check */_vendor/vendored.txt
RDEPEND="
!!<dev-python/setuptools-rust-1.8.0
>=dev-python/jaraco-text-3.7.0-r1[${PYTHON_USEDEP}]
>=dev-python/more-itertools-8.12.0-r1[${PYTHON_USEDEP}]
>=dev-python/ordered-set-4.0.2-r1[${PYTHON_USEDEP}]
>=dev-python/packaging-24[${PYTHON_USEDEP}]
>=dev-python/platformdirs-2.6.2-r1[${PYTHON_USEDEP}]
>=dev-python/wheel-0.37.1-r1[${PYTHON_USEDEP}]
$(python_gen_cond_dep '
>=dev-python/tomli-2.0.1[${PYTHON_USEDEP}]
' 3.10)
"
BDEPEND="
${RDEPEND}
test? (
$(python_gen_cond_dep '
>=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.2.0[${PYTHON_USEDEP}]
dev-python/jaraco-test[${PYTHON_USEDEP}]
dev-python/pip[${PYTHON_USEDEP}]
dev-python/pip-run[${PYTHON_USEDEP}]
dev-python/pyproject-hooks[${PYTHON_USEDEP}]
dev-python/pytest[${PYTHON_USEDEP}]
>=dev-python/pytest-home-0.5[${PYTHON_USEDEP}]
dev-python/pytest-subprocess[${PYTHON_USEDEP}]
dev-python/pytest-timeout[${PYTHON_USEDEP}]
dev-python/pytest-xdist[${PYTHON_USEDEP}]
>=dev-python/tomli-w-1.0.0[${PYTHON_USEDEP}]
>=dev-python/virtualenv-20[${PYTHON_USEDEP}]
' "${PYTHON_TESTED[@]}")
)
"
# setuptools-scm is here because installing plugins apparently breaks stuff at
# runtime, so let's pull it early. See bug #663324.
#
# trove-classifiers are optionally used in validation, if they are
# installed. Since we really oughtn't block them, let's always enforce
# the newest version for the time being to avoid errors.
# https://github.com/pypa/setuptools/issues/4459
PDEPEND="
dev-python/setuptools-scm[${PYTHON_USEDEP}]
>=dev-python/trove-classifiers-2024.7.2[${PYTHON_USEDEP}]
"
src_prepare() {
local PATCHES=(
# TODO: remove this when we're 100% PEP517 mode
"${FILESDIR}/setuptools-62.4.0-py-compile.patch"
)
distutils-r1_src_prepare
# breaks tests
sed -i -e '/--import-mode/d' pytest.ini || die
# remove bundled dependencies
rm -r */_vendor setuptools/_distutils/_vendor || die
# remove the ugly */extern hack that breaks on unvendored deps
rm -r */extern || die
find -name '*.py' -exec sed \
-e 's:from \w*[.]\+extern ::' -e 's:\w*[.]\+extern[.]::' \
-e 's:from [.]_vendor[.]:from :' \
-i {} + || die
}
python_test() {
if ! has "${EPYTHON}" "${PYTHON_TESTED[@]/_/.}"; then
return
fi
local EPYTEST_DESELECT=(
# network
# TODO: see if PRE_BUILT_SETUPTOOLS_* helps
setuptools/tests/config/test_apply_pyprojecttoml.py::test_apply_pyproject_equivalent_to_setupcfg
setuptools/tests/integration/test_pip_install_sdist.py::test_install_sdist
setuptools/tests/test_build_meta.py::test_legacy_editable_install
setuptools/tests/test_distutils_adoption.py
setuptools/tests/test_editable_install.py
setuptools/tests/test_setuptools.py::test_its_own_wheel_does_not_contain_tests
setuptools/tests/test_virtualenv.py::test_clean_env_install
setuptools/tests/test_virtualenv.py::test_no_missing_dependencies
setuptools/tests/test_virtualenv.py::test_test_command_install_requirements
# TODO
setuptools/tests/config/test_setupcfg.py::TestConfigurationReader::test_basic
setuptools/tests/config/test_setupcfg.py::TestConfigurationReader::test_ignore_errors
setuptools/tests/test_extern.py::test_distribution_picklable
# expects bundled deps in virtualenv
setuptools/tests/config/test_apply_pyprojecttoml.py::TestMeta::test_example_file_in_sdist
setuptools/tests/config/test_apply_pyprojecttoml.py::TestMeta::test_example_file_not_in_wheel
# fails if python-xlib is installed
setuptools/tests/test_easy_install.py::TestSetupRequires::test_setup_requires_with_allow_hosts
# TODO, probably some random package
setuptools/tests/config/test_setupcfg.py::TestOptions::test_cmdclass
# Internet, sigh
setuptools/tests/test_integration.py
# flaky
setuptools/tests/test_easy_install.py::TestSetupRequires::test_setup_requires_with_transitive_extra_dependency
setuptools/tests/test_easy_install.py::TestSetupRequires::test_setup_requires_with_distutils_command_dep
)
case ${EPYTHON} in
python3.12)
EPYTEST_DESELECT+=(
# TODO
setuptools/tests/test_easy_install.py::TestSetupRequires::test_setup_requires_with_distutils_command_dep
setuptools/tests/test_easy_install.py::TestSetupRequires::test_setup_requires_with_transitive_extra_dependency
)
esac
local EPYTEST_XDIST=1
epytest -o tmp_path_retention_policy=all setuptools
}
|