blob: 933bd7378c5158e7a3323a7ae1e00afb3c386f36 (
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
|
# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
# please keep this ebuild at EAPI 7 -- sys-apps/portage dep
EAPI=7
DISTUTILS_USE_PEP517=standalone
PYTHON_COMPAT=( python3_{8..11} pypy3 )
PYTHON_REQ_USE="xml(+)"
inherit distutils-r1 multiprocessing
CPY_PATCHSET="python-gentoo-patches-3.10.4"
DESCRIPTION="Collection of extensions to Distutils"
HOMEPAGE="
https://github.com/pypa/setuptools/
https://pypi.org/project/setuptools/
"
SRC_URI="
mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz
https://dev.gentoo.org/~mgorny/dist/python/${CPY_PATCHSET}.tar.xz
"
LICENSE="MIT"
SLOT="0"
KEYWORDS="~alpha amd64 ~arm arm64 hppa ~ia64 ~loong ~m68k ppc ppc64 ~riscv ~s390 sparc x86 ~x64-solaris"
IUSE="test"
RESTRICT="!test? ( test )"
RDEPEND="
>=dev-python/appdirs-1.4.4-r2[${PYTHON_USEDEP}]
>=dev-python/jaraco-text-3.7.0-r1[${PYTHON_USEDEP}]
>=dev-python/more-itertools-8.12.0-r1[${PYTHON_USEDEP}]
dev-python/nspektr[${PYTHON_USEDEP}]
>=dev-python/ordered-set-4.0.2-r1[${PYTHON_USEDEP}]
>=dev-python/packaging-21.3-r2[${PYTHON_USEDEP}]
$(python_gen_cond_dep '
>=dev-python/importlib_metadata-4.10.1-r1[${PYTHON_USEDEP}]
' 3.8 3.9)
$(python_gen_cond_dep '
>=dev-python/importlib_resources-5.4.0-r3[${PYTHON_USEDEP}]
' 3.8)
"
BDEPEND="
${RDEPEND}
>=dev-python/wheel-0.37.1-r1[${PYTHON_USEDEP}]
test? (
$(python_gen_cond_dep '
dev-python/build[${PYTHON_USEDEP}]
>=dev-python/ini2toml-0.9[${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/mock[${PYTHON_USEDEP}]
dev-python/pip[${PYTHON_USEDEP}]
dev-python/pip-run[${PYTHON_USEDEP}]
dev-python/sphinx[${PYTHON_USEDEP}]
dev-python/pytest[${PYTHON_USEDEP}]
dev-python/pytest-fixture-config[${PYTHON_USEDEP}]
dev-python/pytest-virtualenv[${PYTHON_USEDEP}]
dev-python/pytest-xdist[${PYTHON_USEDEP}]
dev-python/tomli[${PYTHON_USEDEP}]
>=dev-python/tomli-w-1.0.0[${PYTHON_USEDEP}]
>=dev-python/virtualenv-20[${PYTHON_USEDEP}]
dev-python/wheel[${PYTHON_USEDEP}]
' python3_{8..10} pypy3)
)
"
PDEPEND="
>=dev-python/certifi-2016.9.26[${PYTHON_USEDEP}]
dev-python/setuptools_scm[${PYTHON_USEDEP}]
"
DOCS=( {CHANGES,README}.rst )
src_prepare() {
# remove bundled dependencies, setuptools will switch to system deps
# automatically
rm -r */_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[.]::' \
-i {} + || die
# apply distutils patches to the bundled distutils
pushd setuptools/_distutils >/dev/null || die
# TODO: distutils C++ patch?
eapply -p3 "${WORKDIR}/${CPY_PATCHSET}/0006-distutils-make-OO-enable-both-opt-1-and-opt-2-optimi.patch"
popd >/dev/null || die
distutils-r1_src_prepare
export SETUPTOOLS_SCM_PRETEND_VERSION=${PV}
}
python_test() {
local -x SETUPTOOLS_USE_DISTUTILS=stdlib
# keep in sync with python_gen_cond_dep above!
has "${EPYTHON}" python3.{8..10} pypy3 || return
local EPYTEST_DESELECT=(
# network
# TODO: see if PRE_BUILT_SETUPTOOLS_* helps
setuptools/tests/integration/test_pip_install_sdist.py::test_install_sdist
setuptools/tests/test_distutils_adoption.py
setuptools/tests/test_virtualenv.py::test_clean_env_install
setuptools/tests/test_virtualenv.py::test_no_missing_dependencies
'setuptools/tests/test_virtualenv.py::test_pip_upgrade_from_source[None]'
setuptools/tests/test_virtualenv.py::test_test_command_install_requirements
setuptools/tests/test_setuptools.py::test_its_own_wheel_does_not_contain_tests
setuptools/tests/config/test_apply_pyprojecttoml.py::test_apply_pyproject_equivalent_to_setupcfg
# unhappy with pytest-xdist?
setuptools/tests/test_easy_install.py::TestUserInstallTest::test_local_index
# TODO
setuptools/tests/test_easy_install.py::TestSetupRequires::test_setup_requires_with_allow_hosts
setuptools/tests/test_test.py::test_tests_are_run_once
setuptools/tests/config/test_setupcfg.py::TestConfigurationReader::test_basic
setuptools/tests/config/test_setupcfg.py::TestConfigurationReader::test_ignore_errors
# expects bundled deps in virtualenv
setuptools/tests/test_editable_install.py::test_editable_with_pyproject
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
)
# test_easy_install raises a SandboxViolation due to ${HOME}/.pydistutils.cfg
# It tries to sandbox the test in a tempdir
HOME="${PWD}" epytest \
-n "$(makeopts_jobs "${MAKEOPTS}" "$(get_nproc)")" setuptools
}
|