summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichał Górny <mgorny@gentoo.org>2023-07-23 13:04:17 +0200
committerMichał Górny <mgorny@gentoo.org>2023-07-23 13:24:11 +0200
commit8b662f6292291606e579c70c581c6c76adba9534 (patch)
treeba97d9e15df3b0d5790541ec5406c3243ee7ad60 /dev-python/django
parentdev-lang/python: Backport regression fix to 3.12.0_beta4_p1 (diff)
downloadgentoo-8b662f6292291606e579c70c581c6c76adba9534.tar.gz
gentoo-8b662f6292291606e579c70c581c6c76adba9534.tar.bz2
gentoo-8b662f6292291606e579c70c581c6c76adba9534.zip
dev-python/django: Enable py3.12
Signed-off-by: Michał Górny <mgorny@gentoo.org>
Diffstat (limited to 'dev-python/django')
-rw-r--r--dev-python/django/django-4.2.3-r1.ebuild98
-rw-r--r--dev-python/django/files/django-4.2.3-py312.patch25
2 files changed, 123 insertions, 0 deletions
diff --git a/dev-python/django/django-4.2.3-r1.ebuild b/dev-python/django/django-4.2.3-r1.ebuild
new file mode 100644
index 000000000000..f51d9733c439
--- /dev/null
+++ b/dev-python/django/django-4.2.3-r1.ebuild
@@ -0,0 +1,98 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{10..12} )
+PYTHON_REQ_USE='sqlite?,threads(+)'
+
+inherit bash-completion-r1 distutils-r1 optfeature 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 )
+"
+S="${WORKDIR}/${P^}"
+
+LICENSE="BSD"
+# admin fonts: Roboto (media-fonts/roboto)
+LICENSE+=" Apache-2.0"
+# admin icons, jquery, xregexp.js
+LICENSE+=" MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc64 ~riscv ~sparc ~x86 ~x64-macos"
+IUSE="doc sqlite test"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ <dev-python/asgiref-4[${PYTHON_USEDEP}]
+ >=dev-python/asgiref-3.6.0[${PYTHON_USEDEP}]
+ >=dev-python/sqlparse-0.3.1[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ $(python_gen_impl_dep sqlite)
+ ${RDEPEND}
+ dev-python/docutils[${PYTHON_USEDEP}]
+ dev-python/jinja[${PYTHON_USEDEP}]
+ dev-python/numpy[${PYTHON_USEDEP}]
+ dev-python/pillow[webp,${PYTHON_USEDEP}]
+ dev-python/pyyaml[${PYTHON_USEDEP}]
+ dev-python/selenium[${PYTHON_USEDEP}]
+ dev-python/tblib[${PYTHON_USEDEP}]
+ sys-devel/gettext
+ )
+ verify-sig? ( >=sec-keys/openpgp-keys-django-20230606 )
+"
+
+PATCHES=(
+ "${FILESDIR}"/django-4.0-bashcomp.patch
+ "${FILESDIR}"/django-4.2.3-py312.patch
+)
+
+distutils_enable_sphinx docs --no-autodoc
+
+VERIFY_SIG_OPENPGP_KEY_PATH=${BROOT}/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 ||
+ die "Tests fail with ${EPYTHON}"
+}
+
+python_install_all() {
+ newbashcomp extras/django_bash_completion ${PN}-admin
+ bashcomp_alias ${PN}-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:2
+ 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
+}
diff --git a/dev-python/django/files/django-4.2.3-py312.patch b/dev-python/django/files/django-4.2.3-py312.patch
new file mode 100644
index 000000000000..7989f8e7cbcc
--- /dev/null
+++ b/dev-python/django/files/django-4.2.3-py312.patch
@@ -0,0 +1,25 @@
+This is a hack to get the tests to pass prior to:
+
+[e83a88566a71a2353cebc35992c110be0f8628af] Fixed #32172 -- Adapted signals to allow async handlers.
+
+diff --git a/django/test/signals.py b/django/test/signals.py
+index 94a5161e82..1358101b98 100644
+--- a/django/test/signals.py
++++ b/django/test/signals.py
+@@ -14,6 +14,7 @@ from django.utils import timezone
+ from django.utils.formats import FORMAT_SETTINGS, reset_format_cache
+ from django.utils.functional import empty
+ from django.utils.module_loading import import_string
++from django.utils.version import PY312
+
+ template_rendered = Signal()
+
+@@ -183,7 +184,7 @@ def complex_setting_changed(*, enter, setting, **kwargs):
+ # this stacklevel shows the line containing the override_settings call.
+ warnings.warn(
+ f"Overriding setting {setting} can lead to unexpected behavior.",
+- stacklevel=6,
++ stacklevel=5 if PY312 else 6,
+ )
+
+