Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-HyperKitty for openSUSE:Factory checked in at 2022-10-12 18:23:58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-HyperKitty (Old) and /work/SRC/openSUSE:Factory/.python-HyperKitty.new.2275 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-HyperKitty" Wed Oct 12 18:23:58 2022 rev:18 rq:1009242 version:1.3.5 Changes: -------- --- /work/SRC/openSUSE:Factory/python-HyperKitty/python-HyperKitty.changes 2022-07-04 11:32:40.752004213 +0200 +++ /work/SRC/openSUSE:Factory/.python-HyperKitty.new.2275/python-HyperKitty.changes 2022-10-12 18:25:11.637739790 +0200 @@ -1,0 +2,13 @@ +Thu Oct 6 12:07:43 UTC 2022 - Daniel Garcia <daniel.gar...@suse.com> + +- Add fix-django41.patch to fix issues with django4.1 +- Add fix-elasticsearch8.patch to fix issues with elasticsearch 8.0.0 + +------------------------------------------------------------------- +Mon Jul 4 11:02:04 UTC 2022 - Ben Greiner <c...@bnavigator.de> + +- Rename the built package to python prefixless HyperKitty + * Doesn't imply any false impression of multiflavor +- Go back to python39 -- highest supported Python by mailman + +------------------------------------------------------------------- New: ---- fix-django41.patch fix-elasticsearch8.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-HyperKitty.spec ++++++ --- /var/tmp/diff_new_pack.lBibMm/_old 2022-10-12 18:25:12.521741999 +0200 +++ /var/tmp/diff_new_pack.lBibMm/_new 2022-10-12 18:25:12.525742009 +0200 @@ -31,9 +31,20 @@ %global hyperkitty_services hyperkitty-qcluster.service hyperkitty-runjob-daily.service hyperkitty-runjob-daily.timer hyperkitty-runjob-hourly.service hyperkitty-runjob-hourly.timer hyperkitty-runjob-minutely.service hyperkitty-runjob-minutely.timer hyperkitty-runjob-monthly.service hyperkitty-runjob-monthly.timer hyperkitty-runjob-quarter-hourly.service hyperkitty-runjob-quarter-hourly.timer hyperkitty-runjob-weekly.service hyperkitty-runjob-weekly.timer hyperkitty-runjob-yearly.service hyperkitty-runjob-yearly.timer +%if 0%{?suse_version} >= 1550 +# Newest python supported by mailman is Python 3.9 -- https://gitlab.com/mailman/mailman/-/issues/936 +%define pythons python39 +%define mypython python39 +%define __mypython %{__python39} +%define mypython_sitelib %{python39_sitelib} +%else %{?!python_module:%define python_module() python3-%{**}} -# mailman is built only for primary python3 flavor %define pythons python3 +%define mypython python3 +%define __mypython %{__python3} +%define mypython_sitelib %{python3_sitelib} +%endif + Name: python-HyperKitty Version: 1.3.5 Release: 0 @@ -67,6 +78,10 @@ Patch4: hyperkitty-fix-qcluster-timeout.patch # https://gitlab.com/mailman/hyperkitty/-/merge_requests/381 + https://gitlab.com/mailman/hyperkitty/-/merge_requests/449 Patch5: hyperkitty-fix-py310-tests.patch +# PATCH-FIX-UPSTREAM fix-django41.patch gl#mailman/hyperkitty#467 +Patch6: fix-django41.patch +# PATCH-FIX-UPSTREAM fix-elasticsearch8.patch gl#mailman/hyperkitty#468 +Patch7: fix-elasticsearch8.patch # BuildRequires: %{python_module django-debug-toolbar >= 2.2} BuildRequires: %{python_module isort} @@ -79,25 +94,11 @@ BuildRequires: python-rpm-macros BuildRequires: rsync BuildRequires: sudo -Requires: python-Django >= 1.11 -Requires: python-django-compressor >= 1.3 -Requires: python-django-debug-toolbar >= 2.2 -Requires: python-django-extensions >= 1.3.7 -Requires: python-django-gravatar2 >= 1.0.6 -Requires: python-django-haystack >= 2.8.0 -Requires: python-django-mailman3 >= 1.3.7 -Requires: python-django-q >= 1.3.9 -Requires: python-djangorestframework >= 3.0.0 -Requires: python-flufl.lock -Requires: python-libsass -Requires: python-mailmanclient >= 3.3.2 -Requires: python-mistune -Requires: python-networkx >= 1.9.1 -Requires: python-python-dateutil >= 2.0 -Requires: python-pytz >= 2012 -Requires: python-robot-detection >= 0.3 -Requires: python-xapian-haystack >= 2.1.0 BuildArch: noarch +%if 0%{?suse_version} >= 1550 +# use the real python3 primary for rpm pythondistdeps.py +BuildRequires: python3-packaging +%endif # SECTION test requirements BuildRequires: %{python_module Django >= 1.11} BuildRequires: %{python_module Whoosh >= 2.5.7} @@ -121,21 +122,45 @@ BuildRequires: %{python_module pytz >= 2012} BuildRequires: %{python_module robot-detection >= 0.3} # /SECTION -%if 0%{python3_version_nodots} == 38 -# help in replacing any previously installed multiflavor package back to the primary python3 package -Provides: python38-Hyperkitty = %{version}-%{release} -Obsoletes: python38-Hyperkitty < %{version}-%{release} -%endif -%python_subpackages %description A web interface to access GNU Mailman v3 archives. +%package -n %{hyperkitty_pkgname} +Summary: A web interface to access GNU Mailman v3 archives +Requires: %{mypython}-Django >= 1.11 +Requires: %{mypython}-django-compressor >= 1.3 +Requires: %{mypython}-django-debug-toolbar >= 2.2 +Requires: %{mypython}-django-extensions >= 1.3.7 +Requires: %{mypython}-django-gravatar2 >= 1.0.6 +Requires: %{mypython}-django-haystack >= 2.8.0 +Requires: %{mypython}-django-mailman3 >= 1.3.7 +Requires: %{mypython}-django-q >= 1.3.9 +Requires: %{mypython}-djangorestframework >= 3.0.0 +Requires: %{mypython}-flufl.lock +Requires: %{mypython}-libsass +Requires: %{mypython}-mailmanclient >= 3.3.2 +Requires: %{mypython}-mistune +Requires: %{mypython}-networkx >= 1.9.1 +Requires: %{mypython}-python-dateutil >= 2.0 +Requires: %{mypython}-pytz >= 2012 +Requires: %{mypython}-robot-detection >= 0.3 +Requires: %{mypython}-xapian-haystack >= 2.1.0 +%if "%{expand:%%%{mypython}_provides}" == "python3" +Provides: python3-%{hyperkitty_pkgname} = %{version}-%{release} +%endif +Obsoletes: python3-%{hyperkitty_pkgname} < %{version}-%{release} +Provides: %{mypython}-%{hyperkitty_pkgname} = %{version}-%{release} +Obsoletes: %{mypython}-%{hyperkitty_pkgname} < %{version}-%{release} + +%description -n %{hyperkitty_pkgname} +A web interface to access GNU Mailman v3 archives. + %package -n %{hyperkitty_pkgname}-web Summary: The webroot for GNU Mailman +Requires: %{hyperkitty_pkgname} Requires: acl Requires: openssl -Requires: python3-HyperKitty Requires: sudo %description -n %{hyperkitty_pkgname}-web @@ -146,7 +171,11 @@ %package -n %{hyperkitty_pkgname}-web-uwsgi Summary: HyperKitty - uwsgi configuration Requires: %{hyperkitty_pkgname}-web -Requires: uwsgi +%if 0%{suse_version} >= 1550 +Requires: %{mypython}-uwsgi-python3 +%else +Requires: uwsgi-python3 +%endif %description -n %{hyperkitty_pkgname}-web-uwsgi A web user interface for GNU Mailman. @@ -168,10 +197,14 @@ %patch3 -p1 %patch4 -p1 %patch5 -p1 +%patch6 -p1 +%patch7 -p1 %build -sed -i 's|^#!/usr/bin/env.*|#!%{_bindir}/python3|' \ +sed -i 's|^#!/usr/bin/env.*|#!%{__mypython}|' \ example_project/manage.py +sed -i 's|/usr/bin/python3|%{__mypython}|' %{SOURCE10} %{SOURCE20} %{SOURCE21} +sed -i 's|python3|%{mypython}|' %{SOURCE12} %python_build @@ -296,11 +329,11 @@ %postun -n %{hyperkitty_pkgname}-web %service_del_postun %{hyperkitty_services} -%files %{python_files} +%files -n %{hyperkitty_pkgname} %doc AUTHORS.txt README.rst example_project doc/*.rst %license COPYING.txt -%{python_sitelib}/hyperkitty -%{python_sitelib}/HyperKitty*.egg-info +%{mypython_sitelib}/hyperkitty +%{mypython_sitelib}/HyperKitty-%{version}*-info %files -n %{hyperkitty_pkgname}-web %doc README.SUSE.md ++++++ fix-django41.patch ++++++ >From 94194e0f5eeacf1be2a88a28bfed62dbc6c5d5a2 Mon Sep 17 00:00:00 2001 From: Daniel Garcia Moreno <daniel.gar...@suse.com> Date: Thu, 6 Oct 2022 12:53:56 +0200 Subject: [PATCH] Fix django4.1 compatibility issues with related fields In Django4.1 a ValueError exception is raised when trying to access to foreign keys for unsaved model instances: https://docs.djangoproject.com/en/4.1/releases/4.1/#reverse-foreign-key-changes-for-unsaved-model-instances This patch ensures that everything is saved before trying to use related models and handles the exception correctly in the Thread model pre_save. --- hyperkitty/models/thread.py | 8 ++++++++ hyperkitty/tests/models/test_email.py | 6 ++++++ 2 files changed, 14 insertions(+) diff --git a/hyperkitty/models/thread.py b/hyperkitty/models/thread.py index b550cdb8..e49954a7 100644 --- a/hyperkitty/models/thread.py +++ b/hyperkitty/models/thread.py @@ -148,10 +148,18 @@ class Thread(models.Model): from .email import Email # circular import if self.starting_email is not None: return + try: self.starting_email = self.emails.get(parent_id__isnull=True) except Email.DoesNotExist: self.starting_email = self.emails.order_by("date").first() + except ValueError: + # If the Thread is not created yet, the self.emails will raise a + # ValueError exception. This happens at creation time because this + # method is called by on_pre_save + # + # https://docs.djangoproject.com/en/4.1/releases/4.1/#reverse-foreign-key-changes-for-unsaved-model-instances + return def on_pre_save(self): self.find_starting_email() diff --git a/hyperkitty/tests/models/test_email.py b/hyperkitty/tests/models/test_email.py index 7bcac390..f194e2b1 100644 --- a/hyperkitty/tests/models/test_email.py +++ b/hyperkitty/tests/models/test_email.py @@ -195,6 +195,9 @@ class EmailTestCase(TestCase): subject="This is a folded\n subject", in_reply_to="<msg1.example.com>\n <msg2.example.com>", content="Dummy message") + sender.save() + mlist.save() + email.save() msg = email.as_message() self.assertEqual(msg["Subject"], "This is a folded subject") @@ -210,6 +213,9 @@ class EmailTestCase(TestCase): mailinglist=mlist, subject="Message subject", content="Dummy message") + sender.save() + mlist.save() + email.save() msg = email.as_message() self.assertEqual(msg['from'], '"Team: J.Q. Doe" <du...@example.com>') -- 2.37.3 ++++++ fix-elasticsearch8.patch ++++++ >From 0e86f9cc40bf05cb819087f1fb0ee56f43968e1b Mon Sep 17 00:00:00 2001 From: Daniel Garcia Moreno <daniel.gar...@suse.com> Date: Thu, 6 Oct 2022 14:01:54 +0200 Subject: [PATCH] Make it compatible with elasticsearch 8.0.0 --- hyperkitty/tests/views/test_search.py | 10 +++++++++- tox.ini | 2 +- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/hyperkitty/tests/views/test_search.py b/hyperkitty/tests/views/test_search.py index ad0e9632..cad76fe6 100644 --- a/hyperkitty/tests/views/test_search.py +++ b/hyperkitty/tests/views/test_search.py @@ -211,10 +211,18 @@ class SearchViewsTestCase(SearchEnabledTestCase): # For elasticsearch backend from elasticsearch import RequestError + from elasticsearch import VERSION + mayor, _minor, _p = VERSION + + search_error = "dummy parsing failure" + if mayor > 7: + class ElasticError: + status = search_error + search_error = ElasticError class CrashingIterator(list): def __len__(self): - raise RequestError(400, "dummy parsing failure", {}) + raise RequestError(400, search_error, {}) query = Mock() with self.settings(HAYSTACK_CONNECTIONS={ ++++++ python-HyperKitty-rpmlintrc ++++++ --- /var/tmp/diff_new_pack.lBibMm/_old 2022-10-12 18:25:12.653742329 +0200 +++ /var/tmp/diff_new_pack.lBibMm/_new 2022-10-12 18:25:12.661742348 +0200 @@ -3,4 +3,5 @@ addFilter("non-standard-uid") addFilter("spurious-executable-perm .*example_project/wsgi.py") addFilter("hidden-file-or-dir .*example_project/logs/.keep") +addFilter("obsolete-not-provided python3-HyperKitty")