[arch-commits] Commit in postorius/trunk (PKGBUILD postorius-1.3.6-django4.0.patch)

David Runge dvzrv at gemini.archlinux.org
Sun Feb 20 15:14:06 UTC 2022


    Date: Sunday, February 20, 2022 @ 15:14:06
  Author: dvzrv
Revision: 1135286

upgpkg: postorius 1.3.6-3: Rebuild for django 4.0 compatibility.

Add upstreamed (not yet merged) patch for django 4.0 compatibility:
https://gitlab.com/mailman/postorius/-/merge_requests/694

Remove unneeded quotes and curly braces.

Added:
  postorius/trunk/postorius-1.3.6-django4.0.patch
Modified:
  postorius/trunk/PKGBUILD

---------------------------------+
 PKGBUILD                        |   93 ++++++++++-----------
 postorius-1.3.6-django4.0.patch |  163 ++++++++++++++++++++++++++++++++++++++
 2 files changed, 207 insertions(+), 49 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2022-02-20 15:06:06 UTC (rev 1135285)
+++ PKGBUILD	2022-02-20 15:14:06 UTC (rev 1135286)
@@ -2,19 +2,19 @@
 
 pkgname=postorius
 pkgver=1.3.6
-pkgrel=2
+pkgrel=3
 pkgdesc="The New Mailman Web UI"
-arch=('any')
+arch=(any)
 url="https://gitlab.com/mailman/postorius"
-license=('GPL3')
-depends=('python-cmarkgfm' 'python-django' 'python-django-mailman3'
-'python-mailmanclient' 'python-readme-renderer')
-makedepends=('git' 'python-setuptools')
-checkdepends=('mailman3' 'python-beautifulsoup4' 'python-isort' 'python-mock'
-'python-pytest' 'python-pytest-django' 'python-vcrpy')
+license=(GPL3)
+depends=(python-cmarkgfm python-django python-django-mailman3
+python-mailmanclient python-readme-renderer)
+makedepends=(git python-setuptools)
+checkdepends=(mailman3 python-beautifulsoup4 python-isort python-mock
+python-pytest python-pytest-django python-vcrpy)
 optdepends=('mailman3: for configuring a local mailman instance'
             'uwsgi-plugin-python: for running inside uwsgi')
-replaces=('python-django-postorius')
+replaces=(python-django-postorius)
 backup=("etc/uwsgi/${pkgname}.ini"
         "etc/webapps/${pkgname}/settings_local.py"
         "etc/webapps/${pkgname}/urls.py"
@@ -23,76 +23,71 @@
 # the signature for the pypi sdist tarball for 1.3.6 is missing the chain of trust:
 # https://gitlab.com/mailman/postorius/-/issues/537
 # source=("https://files.pythonhosted.org/packages/source/${pkgname::1}/${pkgname}/${pkgname}-${pkgver}.tar.gz"{,.asc}
-source=("git+https://gitlab.com/mailman/${pkgname}#tag=${pkgver}?signed"
-        "${pkgname}-1.3.2-settings.patch"
-        "${pkgname}.sysusers"
-        "${pkgname}.tmpfiles"
-        "${pkgname}.uwsgi"
+source=(
+  git+https://gitlab.com/mailman/$pkgname#tag=$pkgver?signed
+  $pkgname-1.3.2-settings.patch
+  $pkgname.sysusers
+  $pkgname.tmpfiles
+  $pkgname.uwsgi
+  $pkgname-1.3.6-django4.0.patch
 )
 sha512sums=('SKIP'
             '53713874043e368c71543966e878ff7a49f03088b7ebcff9487935bef2c20a57a561a122dd6b4cbde126c25b935871288dadd7693b831a94b8f27da52afeaa0c'
             '3884b818da2deb148279e50316f720c95f0aaa529777b1b3662d8ab253cda823a90682a9eb47e941ca5ba80eefcb9a2d4afacd29f0340d7f9828b36ebcee23b3'
             '44925c7ce6d1c13bd5bdd2cb449fa978b8eaadaac7ecff74075c23a13478decc4acd1f2cd0399bf55c312d6a08985a3e80f6e7a6e85be9e3dcb93ffb526ca9fb'
-            'c042f00d0d8dc72dadd19023152e55246c4d7a4b9d53bca3a05e7b8cb38cac5116417440d4ae82350820c7cb0cd414dcce45fa6af9be19296c4ebd0862dba896')
+            'c042f00d0d8dc72dadd19023152e55246c4d7a4b9d53bca3a05e7b8cb38cac5116417440d4ae82350820c7cb0cd414dcce45fa6af9be19296c4ebd0862dba896'
+            '3ebb4f0f02d1ef793504b6e2fb7f2cecf5ed3acc8c1fdda6fa2fc2808644aa55f979203d070aa1ca1f1f8430a6e9c30ee653ede99523600f499db872a0640fce')
 b2sums=('SKIP'
         'c4017fe87b8743ae516e360be97efd767d726b043733a6dd880503e796e28f65c9ad5924b0fef53281e4fa73a1a329e818baedbe5dbbc0dc07db2af0cf25f1b7'
         '1ef6dc98c6751e6d65e49812d08d813879b791a7f13622ea31ecadae6dd1859a918761d7723732ed2e4872b9cae61b84c8dbfec2dd2522de9f0929a1ee1cec24'
         '502d59cb0009b7cdf108a1611d17470d1a73c2d06bf6d9509799b63d4bbb4bb0a2cb71a39eddb0dc5990ee6489625174de6ce2d7e04e77a601c90a6da6d69c84'
-        '4b80d60c88d46edd0e6e61ad2ff37ba3568c6c56a2abd449f903f7302aeec4a3bc91bbd3ee846731513fa1906df2e3d7d1c52b75a55214051fb96b048f9b4999')
+        '4b80d60c88d46edd0e6e61ad2ff37ba3568c6c56a2abd449f903f7302aeec4a3bc91bbd3ee846731513fa1906df2e3d7d1c52b75a55214051fb96b048f9b4999'
+        'a74dc3e0c818e753320f15fa063bdfa531b6c3405475f2da45a7203c1c188819d90adc164f917577ac09a5216255a896c1fa0d11ea1aa2f680bd73fddd246422')
 validpgpkeys=('541EA0448453394FF77A0ECC9D9B2BA061D0A67C') # Abhilash Raj <raj.abhilash1 at gmail.com>
 
 prepare() {
-#  cd "$pkgname-$pkgver"
-  cd "$pkgname"
   # patch global paths into settings.py
-  patch -Np1 -i "../${pkgname}-1.3.2-settings.patch"
+  patch -d $pkgname -p1 -i ../$pkgname-1.3.2-settings.patch
+  # make compatible with django 4.0: https://gitlab.com/mailman/postorius/-/merge_requests/694
+  patch -d $pkgname -p1 -i ../$pkgname-1.3.6-django4.0.patch
+
   touch settings_local.py
 }
 
 build() {
-#  cd "$pkgname-$pkgver"
-  cd "$pkgname"
+  cd $pkgname
   python setup.py build
 }
 
 check() {
-#  cd "$pkgname-$pkgver/example_project"
-  cd "$pkgname/example_project"
-  export PYTHONPATH="../build/lib:${PYTHONPATH}"
-  PYTHONDONTWRITEBYTECODE=1 \
-  pytest -vv ../build/lib/${pkgname}
+  cd $pkgname/example_project
+
+  export PYTHONPATH="../build/lib:$PYTHONPATH"
+  PYTHONDONTWRITEBYTECODE=1
+  pytest -vv ../build/lib/$pkgname
 }
 
 package() {
-#  cd "$pkgname-$pkgver"
-  cd "$pkgname"
-  python setup.py install --optimize=1 --root="${pkgdir}"
+  cd $pkgname
+  python setup.py install --optimize=1 --root="$pkgdir"
   # django project
-  install -vDm 644 example_project/{__init__,manage,settings,wsgi}.py \
-    -t "${pkgdir}/usr/share/webapps/${pkgname}"
+  install -vDm 644 example_project/{__init__,manage,settings,wsgi}.py -t "$pkgdir/usr/share/webapps/$pkgname"
   # symlink locale and static dirs to state dir
-  ln -svf "/var/lib//${pkgname}/locale/" \
-    "${pkgdir}/usr/share/webapps/${pkgname}"
-  ln -svf "/var/lib/${pkgname}/static/" \
-    "${pkgdir}/usr/share/webapps/${pkgname}"
+  ln -svf /var/lib//$pkgname/locale/ "$pkgdir/usr/share/webapps/$pkgname"
+  ln -svf /var/lib/$pkgname/static/ "$pkgdir/usr/share/webapps/$pkgname"
   # state dir
-  install -vdm 750 "${pkgdir}/var/lib/${pkgname}/data"
-  install -vdm 755 "${pkgdir}/var/lib/${pkgname}/"{locale,static}
+  install -vdm 750 "$pkgdir/var/lib/$pkgname/data"
+  install -vdm 755 "$pkgdir/var/lib/$pkgname/"{locale,static}
   # log dir
-  install -vdm 750 "${pkgdir}/var/log/${pkgname}"
+  install -vdm 750 "$pkgdir/var/log/$pkgname"
   # config
-  install -vDm 640 settings_local.py example_project/urls.py \
-    -t "${pkgdir}/etc/webapps/${pkgname}"
-  ln -svf "/etc/webapps/${pkgname}/settings_local.py" \
-    "${pkgdir}/usr/share/webapps/${pkgname}/settings_local.py"
-  ln -svf "/etc/webapps/${pkgname}/urls.py" \
-    "${pkgdir}/usr/share/webapps/${pkgname}/urls.py"
+  install -vDm 640 ../settings_local.py example_project/urls.py -t "$pkgdir/etc/webapps/$pkgname"
+  ln -svf /etc/webapps/$pkgname/settings_local.py "$pkgdir/usr/share/webapps/$pkgname/settings_local.py"
+  ln -svf /etc/webapps/$pkgname/urls.py "$pkgdir/usr/share/webapps/$pkgname/urls.py"
   # uwsgi
-  install -vDm 644 "../${pkgname}.uwsgi" "${pkgdir}/etc/uwsgi/${pkgname}.ini"
+  install -vDm 644 ../$pkgname.uwsgi "$pkgdir/etc/uwsgi/$pkgname.ini"
   # tmpfiles.d
-  install -vDm 644 "../${pkgname}.tmpfiles" \
-    "${pkgdir}/usr/lib/tmpfiles.d/${pkgname}.conf"
+  install -vDm 644 ../$pkgname.tmpfiles "$pkgdir/usr/lib/tmpfiles.d/$pkgname.conf"
   # sysusers.d
-  install -vDm 644 "../${pkgname}.sysusers" \
-    "${pkgdir}/usr/lib/sysusers.d/${pkgname}.conf"
+  install -vDm 644 ../$pkgname.sysusers "$pkgdir/usr/lib/sysusers.d/$pkgname.conf"
 }

Added: postorius-1.3.6-django4.0.patch
===================================================================
--- postorius-1.3.6-django4.0.patch	                        (rev 0)
+++ postorius-1.3.6-django4.0.patch	2022-02-20 15:14:06 UTC (rev 1135286)
@@ -0,0 +1,163 @@
+From 7c9c080333d5340c2c031ad4258489fe3f91b64a Mon Sep 17 00:00:00 2001
+From: David Runge <dave at sleepmap.de>
+Date: Sun, 20 Feb 2022 15:42:27 +0100
+Subject: [PATCH 1/4] forms/fields compatibility with django >= 4.0
+
+src/postorius/forms/fields.py:
+Use `django.utils.encoding.smart_str` (introduced with django 4.0) by
+default and fall back to `django.utils.encoding.smart_text` (django <
+4.0) otherwise.
+---
+ src/postorius/forms/fields.py | 11 +++++++++--
+ 1 file changed, 9 insertions(+), 2 deletions(-)
+
+diff --git a/src/postorius/forms/fields.py b/src/postorius/forms/fields.py
+index f1578615..6235260b 100644
+--- a/src/postorius/forms/fields.py
++++ b/src/postorius/forms/fields.py
+@@ -19,7 +19,14 @@
+ 
+ 
+ from django import forms
+-from django.utils.encoding import smart_text
++
++
++try:
++    from django.utils.encoding import smart_str
++except ImportError:
++    # django < 4.0
++    from django.utils.encoding import smart_text as smart_str
++
+ from django.utils.translation import gettext_lazy as _
+ 
+ from postorius.utils import with_empty_choice
+@@ -62,7 +69,7 @@ class ListOfStringsField(forms.Field):
+             line = line.strip()
+             if not line:
+                 continue
+-            result.append(smart_text(line))
++            result.append(smart_str(line))
+         return result
+ 
+ 
+-- 
+GitLab
+
+
+From 1b711c0adb063f165e00ed604a398c769f34b9e3 Mon Sep 17 00:00:00 2001
+From: David Runge <dave at sleepmap.de>
+Date: Sun, 20 Feb 2022 15:45:19 +0100
+Subject: [PATCH 2/4] Move the upper boundary for django to < 4.1
+
+setup.py:
+As postorius is compatible with django 4.0, set the upper boundary to <
+4.1.
+---
+ setup.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/setup.py b/setup.py
+index 9a900eee..18374c10 100644
+--- a/setup.py
++++ b/setup.py
+@@ -54,7 +54,7 @@ setup(
+     include_package_data=True,
+     install_requires=[
+         'django-mailman3>=1.3.7',
+-        'django>=2.2,<3.3',
++        'django>=2.2,<4.1',
+         'mailmanclient>=3.3.3',
+         'readme_renderer[md]',
+     ],
+-- 
+GitLab
+
+
+From 3dfa2cca5ea7d764e69e6a4c37feb3808755b69d Mon Sep 17 00:00:00 2001
+From: David Runge <dave at sleepmap.de>
+Date: Sun, 20 Feb 2022 15:46:30 +0100
+Subject: [PATCH 3/4] Add python 3.10 and django 4.0 support to tox
+
+tox.ini:
+Add environments for python 3.10 and django 4.0
+---
+ tox.ini | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/tox.ini b/tox.ini
+index 744dbbc8..bce92d5a 100644
+--- a/tox.ini
++++ b/tox.ini
+@@ -1,5 +1,5 @@
+ [tox]
+-envlist = py{36,37,38,39}-django{22,31,32,-latest},qa
++envlist = py{36,37,38,39,310}-django{22,31,32,-latest},qa
+ 
+ [testenv]
+ usedevelop = True
+@@ -20,6 +20,7 @@ deps =
+     django30: Django>=3.0,<3.1
+     django31: Django>=3.1,<3.2
+     django32: Django>=3.2,<3.3
++    django40: Django>=4.0,<4.1
+     django-latest: https://github.com/django/django/archive/main.tar.gz
+ commands =
+   pytest {posargs:../src}
+@@ -31,7 +32,7 @@ setenv =
+ basepython = python3
+ deps =
+     {[testenv]deps}
+-    Django>=3.2,<3.3
++    Django>=3.2,<4.1
+     coverage
+ commands =
+     coverage run -m pytest {posargs:../src/postorius}
+-- 
+GitLab
+
+
+From b5e9c49cf710295f53b340f22c7d2ec5cbb7a9da Mon Sep 17 00:00:00 2001
+From: David Runge <dave at sleepmap.de>
+Date: Sun, 20 Feb 2022 15:47:44 +0100
+Subject: [PATCH 4/4] Add python 3.10 and django 4.0 targets to gitlab CI
+
+.gitlab-ci.yml:
+Run tests against latest django using python 3.10.
+Add test targets against django 3.2 and 4.0 on python 3.10.
+---
+ .gitlab-ci.yml | 14 ++++++++++++--
+ 1 file changed, 12 insertions(+), 2 deletions(-)
+
+diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
+index ba6cea8c..9e9da7f4 100644
+--- a/.gitlab-ci.yml
++++ b/.gitlab-ci.yml
+@@ -66,13 +66,23 @@ py39-django32:
+   script:
+     - tox -e py39-django32
+ 
+-py39-django-latest:
++py310-django32:
++  stage: test
++  script:
++    - tox -e py310-django32
++
++py310-django40:
++  stage: test
++  script:
++    - tox -e py310-django40
++
++py310-django-latest:
+   stage: test
+   allow_failure: true
+   script:
+     - printf "Remove all django version restriction from setup.py.\n"
+     - sed -E 's/django[<=>,.[:digit:]]+/django/' -i setup.py
+-    - tox -e py39-django-latest
++    - tox -e py310-django-latest
+ 
+ coverage:
+   stage: test
+-- 
+GitLab
+



More information about the arch-commits mailing list