Files
gentoo/dev-python/django/django-5.2.16.ebuild
Michał Górny 7e09f225a1 dev-python/django: Force testing 5.2.x with the fork start method
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>
2026-07-10 13:58:50 +02:00

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
}