gentoo/dev-python/twisted/twisted-24.7.0.ebuild
Tom Gillespie 065e06ff79
dev-python/twisted: add more IDEPEND for regen-cache
One additional IDEPEND is needed that was missed in the previous
commit on this issue (d74d1d24e34cfd796a297695d05fec023a783701).
twisted-regen-cache should run without error now that
typing-extensions is pulled in. This was tested from an image
with nothing else installed so should finally have everything.

One note is that incremental is also technically required at
install time and may be missing, however there are no real cases
where this is an issue because it is in both BDEPEND and RDEPEND
and emerging with --nodeps does not install IDEPEND so the fact
that install would fail in that case is expected.

Signed-off-by: Tom Gillespie <tgbugs@gmail.com>
Closes: https://github.com/gentoo/gentoo/pull/39402
Signed-off-by: Michał Górny <mgorny@gentoo.org>
2024-11-23 12:45:40 +01:00

168 lines
4.6 KiB
Bash

# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
DISTUTILS_USE_PEP517=hatchling
PYTHON_TESTED=( python3_{10..13} pypy3 )
PYTHON_COMPAT=( "${PYTHON_TESTED[@]}" )
PYTHON_REQ_USE="threads(+)"
inherit distutils-r1 multiprocessing pypi virtualx
DESCRIPTION="An asynchronous networking framework written in Python"
HOMEPAGE="
https://twisted.org/
https://github.com/twisted/twisted/
https://pypi.org/project/Twisted/
"
SRC_URI+="
https://dev.gentoo.org/~mgorny/dist/twisted-regen-cache.gz
"
LICENSE="MIT"
SLOT="0"
KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~arm64-macos ~x64-macos"
IUSE="conch http2 serial ssl test"
RESTRICT="!test? ( test )"
RDEPEND="
>=dev-python/attrs-19.2.0[${PYTHON_USEDEP}]
>=dev-python/automat-0.8.0[${PYTHON_USEDEP}]
>=dev-python/constantly-15.1[${PYTHON_USEDEP}]
>=dev-python/hyperlink-17.1.1[${PYTHON_USEDEP}]
>=dev-python/incremental-22.10.0[${PYTHON_USEDEP}]
>=dev-python/typing-extensions-4.2.0[${PYTHON_USEDEP}]
>=dev-python/zope-interface-5[${PYTHON_USEDEP}]
conch? (
>=dev-python/appdirs-1.4.0[${PYTHON_USEDEP}]
>=dev-python/bcrypt-3.0.0[${PYTHON_USEDEP}]
>=dev-python/cryptography-3.3[${PYTHON_USEDEP}]
dev-python/pyasn1[${PYTHON_USEDEP}]
)
http2? (
<dev-python/h2-5.0[${PYTHON_USEDEP}]
>=dev-python/h2-3.0.0[${PYTHON_USEDEP}]
<dev-python/priority-2.0[${PYTHON_USEDEP}]
>=dev-python/priority-1.1.0[${PYTHON_USEDEP}]
)
serial? (
>=dev-python/pyserial-3.0[${PYTHON_USEDEP}]
)
ssl? (
>=dev-python/pyopenssl-21.0.0[${PYTHON_USEDEP}]
>=dev-python/service-identity-18.1.0[${PYTHON_USEDEP}]
>=dev-python/idna-2.4[${PYTHON_USEDEP}]
)
"
IDEPEND="
>=dev-python/attrs-19.2.0[${PYTHON_USEDEP}]
>=dev-python/constantly-15.1[${PYTHON_USEDEP}]
>=dev-python/typing-extensions-4.2.0[${PYTHON_USEDEP}]
>=dev-python/zope-interface-5[${PYTHON_USEDEP}]
"
BDEPEND="
>=dev-python/hatch-fancy-pypi-readme-22.5.0[${PYTHON_USEDEP}]
>=dev-python/incremental-22.10.0[${PYTHON_USEDEP}]
test? (
${RDEPEND}
$(python_gen_cond_dep '
>=dev-python/appdirs-1.4.0[${PYTHON_USEDEP}]
>=dev-python/bcrypt-3.0.0[${PYTHON_USEDEP}]
>=dev-python/constantly-15.1.0[${PYTHON_USEDEP}]
<dev-python/cython-test-exception-raiser-2[${PYTHON_USEDEP}]
>=dev-python/cython-test-exception-raiser-1.0.2[${PYTHON_USEDEP}]
>=dev-python/idna-2.4[${PYTHON_USEDEP}]
>=dev-python/hypothesis-6.56[${PYTHON_USEDEP}]
dev-python/pyasn1[${PYTHON_USEDEP}]
>=dev-python/pyhamcrest-2[${PYTHON_USEDEP}]
>=dev-python/pyserial-3.0[${PYTHON_USEDEP}]
virtual/openssh
ssl? (
>=dev-python/pyopenssl-21.0.0[${PYTHON_USEDEP}]
>=dev-python/service-identity-18.1.0[${PYTHON_USEDEP}]
)
' "${PYTHON_TESTED[@]}")
)
"
PATCHES=(
"${FILESDIR}/${PN}-24.3.0-skip-dsa-tests.patch"
"${FILESDIR}/${PN}-24.3.0_p20240628-skip-py313-test.patch"
"${FILESDIR}/${PN}-24.7.0_rc1-skip-py313-tests.patch"
)
python_prepare_all() {
# upstream test for making releases; not very useful and requires
# sphinx (including on py2)
rm src/twisted/python/test/test_release.py || die
# multicast tests fail within network-sandbox
sed -e 's:test_joinLeave:_&:' \
-e 's:test_loopback:_&:' \
-e 's:test_multiListen:_&:' \
-e 's:test_multicast:_&:' \
-i src/twisted/test/test_udp.py || die
distutils-r1_python_prepare_all
}
src_test() {
# the test suite handles missing file & failing ioctl()s gracefully
# but not permission errors from sandbox
addwrite /dev/net/tun
virtx distutils-r1_src_test
}
python_test() {
if ! has "${EPYTHON}" "${PYTHON_TESTED[@]/_/.}"; then
einfo "Skipping tests on ${EPYTHON} (xfail)"
return
fi
# breaks some tests by overriding empty environment
local -x SANDBOX_ON=0
# for py3.13, see
# https://github.com/twisted/twisted/pull/12092#issuecomment-2194326096
local -x LINES=25 COLUMNS=80
"${EPYTHON}" -m twisted.trial -j "$(makeopts_jobs)" twisted ||
die "Tests failed with ${EPYTHON}"
}
python_install() {
distutils-r1_python_install
# own the dropin.cache so we don't leave orphans
> "${D}$(python_get_sitedir)"/twisted/plugins/dropin.cache || die
python_doscript "${WORKDIR}"/twisted-regen-cache
}
python_install_all() {
distutils-r1_python_install_all
newconfd "${FILESDIR}/twistd.conf" twistd
newinitd "${FILESDIR}/twistd.init" twistd
}
python_postinst() {
twisted-regen-cache || die
}
pkg_postinst() {
if [[ -z ${ROOT} ]]; then
python_foreach_impl python_postinst
fi
}
python_postrm() {
rm -f "${ROOT}$(python_get_sitedir)/twisted/plugins/dropin.cache" || die
}
pkg_postrm() {
# if we're removing the last version, remove the cache file
if [[ ! ${REPLACING_VERSIONS} ]]; then
python_foreach_impl python_postrm
fi
}