mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-07-25 08:58:27 -07:00
Force tests in 5.2.x to use the "fork" method unconditionally, to disable using the newer "forkserver" method in Python 3.14+. Upstream does not support Python 3.14 at all in this branch, and we are already backporting a few patches to make them work; most of them actually related to the default start method change. However, they still do not seem sufficient, and we're seeing random test regressions depending on the job count. Given most of the issues were test-related before, let's test using the "fork" method to avoid the problems. We will continue providing the Python 3.14+ backports and nominal support for the "forkserver" method, as it is unlikely to be causing real life issues. Signed-off-by: Michał Górny <mgorny@gentoo.org>
109 lines
3.1 KiB
Bash
109 lines
3.1 KiB
Bash
# Copyright 1999-2026 Gentoo Authors
|
|
# Distributed under the terms of the GNU General Public License v2
|
|
|
|
EAPI=8
|
|
|
|
DISTUTILS_USE_PEP517=setuptools
|
|
PYTHON_COMPAT=( python3_{12..15} )
|
|
PYTHON_REQ_USE='sqlite?,threads(+)'
|
|
|
|
inherit distutils-r1 multiprocessing optfeature shell-completion verify-sig
|
|
|
|
DESCRIPTION="High-level Python web framework"
|
|
HOMEPAGE="
|
|
https://www.djangoproject.com/
|
|
https://github.com/django/django/
|
|
https://pypi.org/project/Django/
|
|
"
|
|
SRC_URI="
|
|
https://media.djangoproject.com/releases/$(ver_cut 1-2)/${P}.tar.gz
|
|
verify-sig? ( https://media.djangoproject.com/pgp/${P^}.checksum.txt )
|
|
"
|
|
|
|
LICENSE="BSD"
|
|
# admin fonts: Roboto (media-fonts/roboto)
|
|
LICENSE+=" Apache-2.0"
|
|
# admin icons, jquery, xregexp.js
|
|
LICENSE+=" MIT"
|
|
SLOT="0/$(ver_cut 1-2)"
|
|
KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~sparc x86 ~x64-macos"
|
|
IUSE="doc sqlite test"
|
|
RESTRICT="!test? ( test )"
|
|
|
|
RDEPEND="
|
|
<dev-python/asgiref-4[${PYTHON_USEDEP}]
|
|
>=dev-python/asgiref-3.8.1[${PYTHON_USEDEP}]
|
|
>=dev-python/sqlparse-0.3.1[${PYTHON_USEDEP}]
|
|
sys-libs/timezone-data
|
|
"
|
|
BDEPEND="
|
|
test? (
|
|
$(python_gen_impl_dep sqlite)
|
|
${RDEPEND}
|
|
>=dev-python/docutils-0.19[${PYTHON_USEDEP}]
|
|
>=dev-python/jinja2-2.11.0[${PYTHON_USEDEP}]
|
|
dev-python/numpy[${PYTHON_USEDEP}]
|
|
dev-python/pillow[webp,${PYTHON_USEDEP}]
|
|
dev-python/pyyaml[${PYTHON_USEDEP}]
|
|
>=dev-python/selenium-4.8.0[${PYTHON_USEDEP}]
|
|
>=dev-python/tblib-1.5.0[${PYTHON_USEDEP}]
|
|
sys-devel/gettext
|
|
)
|
|
verify-sig? ( >=sec-keys/openpgp-keys-django-20241002 )
|
|
"
|
|
|
|
PATCHES=(
|
|
"${FILESDIR}"/django-4.0-bashcomp.patch
|
|
# d55979334dcefdb11626220000bec97ade09df07
|
|
# 2026-07-10: force "fork" method in tests anyway, as we're hitting
|
|
# random failures anyway
|
|
"${FILESDIR}"/django-5.2.7-py314.patch
|
|
# based on upstream commits:
|
|
# b1a65eac7c09250d36e12464fc8fff2a401246b6
|
|
# ed13a58bf63df94508c8a0fe779da0b6a2bc26bb
|
|
# e7f539f813bd56a71ca3c1fbf379f47691002086
|
|
# plus my own fixes
|
|
"${FILESDIR}"/django-6.0.7-py315.patch
|
|
)
|
|
|
|
distutils_enable_sphinx docs --no-autodoc
|
|
|
|
VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/django.asc
|
|
|
|
src_unpack() {
|
|
if use verify-sig; then
|
|
cd "${DISTDIR}" || die
|
|
verify-sig_verify_signed_checksums \
|
|
"${P^}.checksum.txt" sha256 "${P}.tar.gz"
|
|
cd "${WORKDIR}" || die
|
|
fi
|
|
|
|
default
|
|
}
|
|
|
|
python_test() {
|
|
# Tests have non-standard assumptions about PYTHONPATH,
|
|
# and don't work with ${BUILD_DIR}/lib.
|
|
PYTHONPATH=. "${EPYTHON}" tests/runtests.py --settings=test_sqlite \
|
|
-v2 --parallel="${EPYTEST_JOBS:-$(makeopts_jobs)}" ||
|
|
die "Tests fail with ${EPYTHON}"
|
|
}
|
|
|
|
python_install_all() {
|
|
newbashcomp extras/django_bash_completion django-admin
|
|
bashcomp_alias django-admin django-admin.py
|
|
|
|
distutils-r1_python_install_all
|
|
}
|
|
|
|
pkg_postinst() {
|
|
optfeature_header "Additional Backend support can be enabled via:"
|
|
optfeature "MySQL backend support" dev-python/mysqlclient
|
|
optfeature "PostgreSQL backend support" dev-python/psycopg:0
|
|
optfeature_header
|
|
optfeature "GEO Django" "sci-libs/gdal[geos]"
|
|
optfeature "Memcached support" dev-python/pylibmc dev-python/python-memcached
|
|
optfeature "ImageField Support" dev-python/pillow
|
|
optfeature "Password encryption" dev-python/bcrypt
|
|
}
|