summaryrefslogtreecommitdiff
path: root/dev-python/ensurepip-setuptools/ensurepip-setuptools-82.0.1.ebuild
blob: 1198a24443125f94e2167174b4c685b0c8f426ac (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
# Copyright 1999-2026 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_{9,10,11,12,13,14} pypy3 )
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 ~arm64-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

declare -A VENDOR_LICENSES=(
	[autocommand]=LGPL-3
	[backports.tarfile]=MIT
	[importlib_metadata]=Apache-2.0
	[jaraco_context]=MIT
	[jaraco_functools]=MIT
	[jaraco.text]=MIT
	[more_itertools]=MIT
	[packaging]="|| ( Apache-2.0 MIT )"
	[platformdirs]=MIT
	[tomli]=MIT
	[wheel]=MIT
	[zipp]=MIT
)
LICENSE+=" ${VENDOR_LICENSES[*]}"

src_prepare() {
	distutils-r1_src_prepare

	# Verify that we've covered licenses for all vendored packages
	cd setuptools/_vendor || die
	local packages=( *.dist-info )
	local pkg missing=()
	for pkg in "${packages[@]%%-*}"; do
		if [[ ! -v "VENDOR_LICENSES[${pkg}]" ]]; then
			missing+=( "${pkg}" )
		else
			unset "VENDOR_LICENSES[${pkg}]"
		fi
	done

	if [[ ${missing[@]} || ${VENDOR_LICENSES[@]} ]]; then
		[[ ${missing[@]} ]] &&
			eerror "License missing for packages: ${missing[*]}"
		[[ ${VENDOR_LICENSES[@]} ]] &&
			eerror "Vendored packages removed: ${!VENDOR_LICENSES[*]}"
		die "VENDOR_LICENSES outdated"
	fi
}

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
		# Internet
		setuptools/tests/test_namespaces.py::TestNamespaces::test_mixed_site_and_non_site
		setuptools/tests/test_namespaces.py::TestNamespaces::test_namespace_package_installed_and_cwd
		setuptools/tests/test_namespaces.py::TestNamespaces::test_packages_in_the_same_namespace_installed_and_cwd
		setuptools/tests/test_namespaces.py::TestNamespaces::test_pkg_resources_import
		# broken by warnings from setuptools-scm
		setuptools/tests/config/test_apply_pyprojecttoml.py::TestPresetField::test_scripts_dont_require_dynamic_entry_points
		# TODO
		setuptools/tests/test_config_discovery.py::TestDiscoverPackagesAndPyModules::test_py_modules_when_wheel_dir_is_cwd
		'setuptools/tests/test_egg_info.py::TestEggInfo::test_requires[setup_requires_with_markers]'
	)

	case ${EPYTHON} in
		pypy3.11)
			EPYTEST_DESELECT+=(
				# fails and breaks other tests
				setuptools/tests/test_editable_install.py
			)
			;;
	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}"
}