From 620761739cc9f52cfd884f5ca61d0b31201a0f67 Mon Sep 17 00:00:00 2001 From: Martin Weinelt Date: Wed, 5 Jan 2022 01:12:38 +0100 Subject: [PATCH] python3Packages.django_4: init at 4.0.2 --- pkgs/development/python-modules/django/4.nix | 107 ++++++++++++++++++ .../django/django_4_set_geos_gdal_lib.patch | 26 +++++ pkgs/top-level/python-packages.nix | 3 +- 3 files changed, 135 insertions(+), 1 deletion(-) create mode 100644 pkgs/development/python-modules/django/4.nix create mode 100644 pkgs/development/python-modules/django/django_4_set_geos_gdal_lib.patch diff --git a/pkgs/development/python-modules/django/4.nix b/pkgs/development/python-modules/django/4.nix new file mode 100644 index 000000000000..eb24edb4bff1 --- /dev/null +++ b/pkgs/development/python-modules/django/4.nix @@ -0,0 +1,107 @@ +{ lib +, stdenv +, buildPythonPackage +, fetchPypi +, pythonOlder +, substituteAll + +# patched in +, geos +, gdal +, withGdal ? false + +# propagated +, asgiref +, backports-zoneinfo +, sqlparse + +# tests +, aiosmtpd +, argon2_cffi +, bcrypt +, docutils +, geoip2 +, jinja2 +, memcached +, numpy +, pillow +, pylibmc +, pymemcache +, python +, pytz +, pywatchman +, pyyaml +, redis +, selenium +, tblib +, tzdata +}: + +buildPythonPackage rec { + pname = "Django"; + version = "4.0.2"; + format = "pyproject"; + + disabled = pythonOlder "3.8"; + + src = fetchPypi { + inherit pname version; + hash = "sha256-EQ+1j7Euylngcq1Z/ELXcc1kLdei8kFlgqqdp6jvlUo="; + }; + + patches = lib.optional withGdal + (substituteAll { + src = ./django_4_set_geos_gdal_lib.patch; + geos = geos; + gdal = gdal; + extension = stdenv.hostPlatform.extensions.sharedLibrary; + }); + + propagatedBuildInputs = [ + asgiref + sqlparse + ] ++ lib.optionals (pythonOlder "3.9") [ + backports-zoneinfo + ]; + + # Fails to import asgiref in ~200 tests + # ModuleNotFoundError: No module named 'asgiref' + doCheck = false; + + checkInputs = [ + aiosmtpd + argon2_cffi + asgiref + bcrypt + docutils + geoip2 + jinja2 + memcached + numpy + pillow + pylibmc + pymemcache + pytz + pywatchman + pyyaml + redis + selenium + tblib + tzdata + ]; + + checkPhase = '' + runHook preCheck + + ${python.interpreter} tests/runtests.py + + runHook postCheck + ''; + + meta = with lib; { + description = "A high-level Python Web framework that encourages rapid development and clean, pragmatic design."; + homepage = "https://www.djangoproject.com"; + license = licenses.bsd3; + maintainers = with maintainers; [ hexa ]; + }; +} diff --git a/pkgs/development/python-modules/django/django_4_set_geos_gdal_lib.patch b/pkgs/development/python-modules/django/django_4_set_geos_gdal_lib.patch new file mode 100644 index 000000000000..da73a93e8f22 --- /dev/null +++ b/pkgs/development/python-modules/django/django_4_set_geos_gdal_lib.patch @@ -0,0 +1,26 @@ +diff --git a/django/contrib/gis/gdal/libgdal.py b/django/contrib/gis/gdal/libgdal.py +index 05b5732..91fafee 100644 +--- a/django/contrib/gis/gdal/libgdal.py ++++ b/django/contrib/gis/gdal/libgdal.py +@@ -14,7 +14,7 @@ try: + from django.conf import settings + lib_path = settings.GDAL_LIBRARY_PATH + except (AttributeError, ImportError, ImproperlyConfigured, OSError): +- lib_path = None ++ lib_path = ""@gdal@/lib/libgdal@extension@" + + if lib_path: + lib_names = None +diff --git a/django/contrib/gis/geos/libgeos.py b/django/contrib/gis/geos/libgeos.py +index 2cdb5d3..fac2d04 100644 +--- a/django/contrib/gis/geos/libgeos.py ++++ b/django/contrib/gis/geos/libgeos.py +@@ -24,7 +24,7 @@ def load_geos(): + from django.conf import settings + lib_path = settings.GEOS_LIBRARY_PATH + except (AttributeError, ImportError, ImproperlyConfigured, OSError): +- lib_path = None ++ lib_path = "@geos@/lib/libgeos_c@extension@" + + # Setting the appropriate names for the GEOS-C library. + if lib_path: diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 223ba7aaa6bd..00b909441c26 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -2192,9 +2192,10 @@ in { # Current LTS django_2 = callPackage ../development/python-modules/django/2.nix { }; + django_3 = callPackage ../development/python-modules/django/3.nix { }; # Current latest - django_3 = callPackage ../development/python-modules/django/3.nix { }; + django_4 = callPackage ../development/python-modules/django/4.nix { }; django-allauth = callPackage ../development/python-modules/django-allauth { };