Hello community, here is the log from the commit of package python-HyperKitty for openSUSE:Factory checked in at 2020-12-16 11:00:57 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-HyperKitty (Old) and /work/SRC/openSUSE:Factory/.python-HyperKitty.new.2328 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-HyperKitty" Wed Dec 16 11:00:57 2020 rev:5 rq:856030 version:1.3.3 Changes: -------- --- /work/SRC/openSUSE:Factory/python-HyperKitty/python-HyperKitty.changes 2020-08-04 20:23:28.525009730 +0200 +++ /work/SRC/openSUSE:Factory/.python-HyperKitty.new.2328/python-HyperKitty.changes 2020-12-16 11:00:59.023599140 +0100 @@ -1,0 +2,17 @@ +Sun Dec 13 11:16:18 UTC 2020 - Andreas Schneider <a...@cryptomilk.org> + +- Added hyperkitty-qcluster.service +- Added hyperkitty-runjob.service and hyperkitty-runjob.timer + +------------------------------------------------------------------- +Sat Dec 12 19:43:44 UTC 2020 - Andreas Schneider <a...@cryptomilk.org> + +- Create a HyperKitty-web package with webroot files +- Create a HyperKitty-web-uwsgi with uwsgi configuration +- Added hyperkitty-settings.patch + * Sets the FHS default paths +- Added hyperkitty-fix-tests.patch + * Make migration compatible with django >= 3.1 +- Added rpmlint config + +------------------------------------------------------------------- New: ---- README.SUSE.md hyperkitty-fix-tests.patch hyperkitty-manage.sh hyperkitty-permissions.sh hyperkitty-qcluster.service hyperkitty-runjob.service hyperkitty-runjob.timer hyperkitty-settings.patch hyperkitty.uwsgi python-HyperKitty-rpmlintrc ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-HyperKitty.spec ++++++ --- /var/tmp/diff_new_pack.GNLQc7/_old 2020-12-16 11:01:00.079600178 +0100 +++ /var/tmp/diff_new_pack.GNLQc7/_new 2020-12-16 11:01:00.083600181 +0100 @@ -16,6 +16,21 @@ # +%global webapps_dir /srv/www/webapps + +%global hyperkitty_pkgname HyperKitty + +%global hyperkitty_basedir %{webapps_dir}/mailman/hyperkitty +%global hyperkitty_localedir %{hyperkitty_basedir}/locale +%global hyperkitty_staticdir %{hyperkitty_basedir}/static + +%global hyperkitty_etcdir %{_sysconfdir}/hyperkitty +%global hyperkitty_libdir %{_localstatedir}/lib/hyperkitty +%global hyperkitty_logdir %{_localstatedir}/log/hyperkitty +%global hyperkitty_datadir %{hyperkitty_libdir}/data + +%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 + %{?!python_module:%define python_module() python-%{**} python3-%{**}} %define skip_python2 1 Name: python-HyperKitty @@ -24,13 +39,37 @@ Summary: A web interface to access GNU Mailman v3 archives License: GPL-3.0-only URL: https://gitlab.com/mailman/hyperkitty -Source: https://files.pythonhosted.org/packages/source/H/HyperKitty/HyperKitty-%{version}.tar.gz +# +Source0: https://files.pythonhosted.org/packages/source/H/HyperKitty/HyperKitty-%{version}.tar.gz +Source1: python-HyperKitty-rpmlintrc +# +Source10: hyperkitty-manage.sh +Source11: hyperkitty-permissions.sh +Source12: hyperkitty.uwsgi +# +Source20: hyperkitty-qcluster.service +Source21: hyperkitty-runjob.service +Source22: hyperkitty-runjob.timer +# +Source30: README.SUSE.md +# +Patch0: hyperkitty-settings.patch +# Make migration compatible with django >= 3.1 +# https://gitlab.com/mailman/hyperkitty/-/commit/0e46371f0f2aab8618aa2852ea6f63c245e16927.patch +Patch1: hyperkitty-fix-tests.patch +# +BuildRequires: %{python_module django-debug-toolbar >= 2.2} BuildRequires: %{python_module isort} +BuildRequires: %{python_module libsass} BuildRequires: %{python_module setuptools} +BuildRequires: acl BuildRequires: fdupes +BuildRequires: openssl BuildRequires: python-rpm-macros +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 @@ -44,6 +83,7 @@ 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 # SECTION test requirements BuildRequires: %{python_module Django >= 1.11} @@ -72,24 +112,182 @@ %description A web interface to access GNU Mailman v3 archives. +%package -n %{hyperkitty_pkgname}-web +Summary: The webroot for GNU Mailman +Requires: acl +Requires: openssl +Requires: python3-HyperKitty +Requires: sudo + +%description -n %{hyperkitty_pkgname}-web +A web user interface for GNU Mailman. + +This package holds the web interface. + +%package -n %{hyperkitty_pkgname}-web-uwsgi +Summary: HyperKitty - uwsgi configuration +Requires: %{hyperkitty_pkgname}-web +Requires: uwsgi + +%description -n %{hyperkitty_pkgname}-web-uwsgi +A web user interface for GNU Mailman. + +This package holds the uwsgi configuration. + %prep -%setup -q -n HyperKitty-%{version} +%autosetup -p1 -n HyperKitty-%{version} +cp %{SOURCE30} . +touch settings_local.py %build +sed -i 's|^#!/usr/bin/env.*|#!%{_bindir}/python3|' \ + example_project/manage.py + %python_build %install %python_install %python_expand %fdupes %{buildroot}%{$python_sitelib} +install -d -m 0750 \ + %{buildroot}%{hyperkitty_etcdir} \ + %{buildroot}%{hyperkitty_libdir} \ + %{buildroot}%{hyperkitty_datadir} \ + %{buildroot}%{hyperkitty_datadir}/attachments \ + %{buildroot}%{hyperkitty_logdir} + +install -d -m 0755 \ + %{buildroot}%{hyperkitty_basedir} \ + %{buildroot}%{hyperkitty_localedir} \ + %{buildroot}%{hyperkitty_staticdir} \ + %{buildroot}%{_unitdir} + +cp -a example_project/* %{buildroot}%{hyperkitty_basedir} +chmod -x %{buildroot}%{hyperkitty_basedir}/wsgi.py + +for f in \ + README.rst \ + apache.conf \ + crontab \ + qcluster.service \ + ; do + rm -f %{buildroot}%{hyperkitty_basedir}/$f +done +%python_expand rm -rf %{buildroot}%{$python_sitelib}/example_project + +# Create an empty settings_local.py. This will be filled with a SECRET_KEY in post +install -m 0644 settings_local.py %{buildroot}%{hyperkitty_etcdir}/settings_local.py + +ln -svf %{hyperkitty_etcdir}/settings_local.py \ + %{buildroot}/%{hyperkitty_basedir}/settings_local.py + +%fdupes %{buildroot}%{hyperkitty_basedir} + +# Manage script +install -d -m 0755 %{buildroot}%{_sbindir} +install -m 0750 %{SOURCE10} %{buildroot}%{_sbindir}/hyperkitty-manage +install -m 0750 %{SOURCE11} %{buildroot}%{_sbindir}/hyperkitty-fix-permissions + +install -d -m 0755 %{buildroot}%{_sysconfdir}/uwsgi/vassals +install -m 0644 %{SOURCE12} %{buildroot}%{_sysconfdir}/uwsgi/vassals/hyperkitty.ini + +install -m 0644 %{SOURCE20} %{buildroot}%{_unitdir}/hyperkitty-qcluster.service +ln -s /sbin/service %{buildroot}%{_sbindir}/rchyperkitty-qcluster + +for job in \ + minutely \ + quarter-hourly \ + hourly \ + daily \ + weekly \ + monthly \ + yearly \ + ; do + install -m 0644 %{SOURCE21} %{buildroot}%{_unitdir}/hyperkitty-runjob-${job}.service + sed -i "s/@HYPERKITTY_RUNJOB@/${job}/g" %{buildroot}%{_unitdir}/hyperkitty-runjob-${job}.service + ln -s /sbin/service %{buildroot}%{_sbindir}/rchyperkitty-runjob-${job} + + install -m 0644 %{SOURCE22} %{buildroot}%{_unitdir}/hyperkitty-runjob-${job}.timer + + hyperkitty_runjob_calendar="OnCalendar=${job}" + hyperkitty_runjob_delay="RandomizedDelaySec=15m" + hyperkitty_runjob_name="${job}" + + if [ "${job}" = "minutely" ]; then + hyperkitty_runjob_delay="RandomizedDelaySec=15s" + elif [ "${job}" = "quarter-hourly" ]; then + hyperkitty_runjob_timer="OnCalendar=quaterly" + hyperkitty_runjob_delay="RandomizedDelaySec=2m" + # The real jobname is with an underscore + hyperkitty_runjob_name="quarter_hourly" + fi + sed -i "s/@HYPERKITTY_RUNJOB_CALENDAR@/${hyperkitty_runjob_calendar}/g" %{buildroot}%{_unitdir}/hyperkitty-runjob-${job}.timer + sed -i "s/@HYPERKITTY_RUNJOB_DELAY@/${hyperkitty_runjob_delay}/g" %{buildroot}%{_unitdir}/hyperkitty-runjob-${job}.timer + sed -i "s/@HYPERKITTY_RUNJOB@/${hyperkitty_runjob_name}/g" %{buildroot}%{_unitdir}/hyperkitty-runjob-${job}.timer +done + %check export DJANGO_SETTINGS_MODULE="hyperkitty.tests.settings_test" export PYTHONPATH='.' %python_exec example_project/manage.py test +%pre -n %{hyperkitty_pkgname}-web +/usr/sbin/groupadd -r hyperkitty &>/dev/null || : +/usr/sbin/useradd -g hyperkitty -s /bin/false -r -c "HyperKitty" -d %{hyperkitty_basedir} hyperkitty &>/dev/null || : + +/usr/sbin/groupadd -r hyperkitty-admin &>/dev/null || : +/usr/sbin/useradd -g hyperkitty-admin -s /bin/bash -r -c "HyperKitty Admin" -d %{hyperkitty_basedir} hyperkitty-admin &>/dev/null || : + +%service_add_pre %{hyperkitty_services} + +%post -n %{hyperkitty_pkgname}-web +%{_sbindir}/hyperkitty-fix-permissions +# We need a SECRET_KEY for manage to work +if ! grep -q "^SECRET_KEY.*" %{hyperkitty_etcdir}/settings_local.py; then + echo "SECRET_KEY='$(openssl rand -base64 48)'" >> %{hyperkitty_etcdir}/settings_local.py +fi +%{_sbindir}/hyperkitty-manage migrate --pythonpath /srv/www/webapps/mailman/hyperkitty/ --settings settings +%{_sbindir}/hyperkitty-manage collectstatic --pythonpath /srv/www/webapps/mailman/hyperkitty/ --settings settings --clear --noinput +%{_sbindir}/hyperkitty-manage compress --pythonpath /srv/www/webapps/mailman/hyperkitty/ --settings settings --force + +%service_add_post %{hyperkitty_services} + +%preun -n %{hyperkitty_pkgname}-web +%service_del_preun %{hyperkitty_services} + +%postun -n %{hyperkitty_pkgname}-web +%service_del_postun %{hyperkitty_services} + %files %{python_files} %doc AUTHORS.txt README.rst example_project doc/*.rst %license COPYING.txt -%{python_sitelib}/* +%{python_sitelib}/hyperkitty +%{python_sitelib}/HyperKitty*.egg-info + +%files -n %{hyperkitty_pkgname}-web +%doc README.SUSE.md +%{_sbindir}/hyperkitty-manage +%{_sbindir}/hyperkitty-fix-permissions +%{_sbindir}/rchyperkitty-qcluster +%{_sbindir}/rchyperkitty-runjob-* +%dir %{webapps_dir} +%dir %{webapps_dir}/mailman +%{_unitdir}/hyperkitty-qcluster.service +%{_unitdir}/hyperkitty-runjob-*.service +%{_unitdir}/hyperkitty-runjob-*.timer + +%defattr(-,hyperkitty-admin,hyperkitty) +%{hyperkitty_basedir} + +%attr(750,hyperkitty-admin,hyperkitty) %dir %{hyperkitty_etcdir} +%attr(640,hyperkitty-admin,hyperkitty) %config(noreplace) %{hyperkitty_etcdir}/settings_local.py +%attr(750,hyperkitty-admin,hyperkitty) %dir %{hyperkitty_libdir} +%attr(750,hyperkitty-admin,hyperkitty) %dir %{hyperkitty_datadir} +%attr(750,hyperkitty-admin,hyperkitty) %dir %{hyperkitty_logdir} + +%files -n %{hyperkitty_pkgname}-web-uwsgi +%dir %{_sysconfdir}/uwsgi +%dir %{_sysconfdir}/uwsgi/vassals +%config (noreplace) %{_sysconfdir}/uwsgi/vassals/hyperkitty.ini %changelog ++++++ README.SUSE.md ++++++ HyperKitty ========== ## Configuration The web application is configured in `/etc/hyperkitty/settings_local.py` which is included by the default configuration in /srv/www/webapps/mailman/hyperkitty/settings.py. 1. Optional: Change the default secret for the application: We already created one, but feel free to replace with a stronger alternative. `/etc/hyperkitty/settings_local.py`: SECRET_KEY = 'something-very-secret' 2. Make sure to disable debugging when running in production: `/etc/hyperkitty/settings_local.py`: DEBUG = False 3. Add a valid email configuration `/etc/postorius/settings_local.py`: EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' EMAIL_HOST = 'localhost' EMAIL_PORT = 25 EMAIL_HOST_USER = <username> EMAIL_HOST_PASSWORD = <password> 4. The valid hosts or domain names for the application need to be defined: `/srv/www/webapps/mailman/postorius/settings_local.py`: ALLOWED_HOSTS = [ 'localhost', 'lists.example.com' ] 5. To connect with a running mailman instance's REST API, configuration options have to be added to hyperkitty's configuration. `/etc/hyperkitty/settings_local.py`: MAILMAN_REST_API_URL = 'http://localhost:8001' MAILMAN_REST_API_USER = 'rest_admin' MAILMAN_REST_API_PASS = 'rest_admin_password' 6. To configure the archive integration with a mailman instance first setup the integration with hyperkitty on mailman's side and then configure hyperkitty to accept those connections: `/etc/hyperkitty/settings_local.py`: MAILMAN_ARCHIVER_KEY = 'SecretArchiverAPIKey' MAILMAN_ARCHIVER_FROM = ('127.0.0.1', '::1') 7. Setup the database (optionally configure e.g. postgres first, default: sqlite3) hyperkitty-manage migrate 8. Populate the database with default data (when setting up for the first time): hyperkitty-manage loaddata 9. Create admin user hyperkitty-manage createsuperuser 10. Enable HyperKitty async tasks runner systemctl enable --now hyperkitty-qcluster.service 11. Enable HyperKitty runjob timers systemctl enable hyperkitty-runjob-minutely.service systemctl enable hyperkitty-runjob-quarter-hourly.service systemctl enable hyperkitty-runjob-hourly.service systemctl enable hyperkitty-runjob-daily.service systemctl enable hyperkitty-runjob-weekly.service systemctl enable hyperkitty-runjob-monthly.service systemctl enable hyperkitty-runjob-yearly.service ## Apache2 To configure hyperkitty with Apache and uwsgi, just add the follwing lines to a vhost: ProxyPassMatch ^/static ! ProxyPass / unix:/run/uwsgi/uwsgi-hyperkitty.sock|uwsgi://localhost/ <Directory /srv/www/webapps/mailman/hyperkitty> Require all granted </Directory> ## Xapian search backend Hyperkitty can make use of a Xapian based search backend. `/etc/hyperkitty/settings_local.py`: HAYSTACK_CONNECTIONS = { 'default': { 'ENGINE': 'xapian_backend.XapianEngine', 'PATH': "/var/lib/hyperkitty/data/xapian_index", }, } Make sure to create the search index for all lists afterwards. hyperkitty-manage update_index ++++++ hyperkitty-fix-tests.patch ++++++ From 0e46371f0f2aab8618aa2852ea6f63c245e16927 Mon Sep 17 00:00:00 2001 From: David Runge <d...@sleepmap.de> Date: Sat, 7 Nov 2020 01:14:04 +0000 Subject: [PATCH] Make migration compatible with django >= 3.1 hyperkitty/migrations/0013_mailinglist_id_1.py: With django >= 3.1 the state.models.fields are represented as dicts, while with django < 3.1 they are represented as lists. Accomodate both use-cases by checking the type of the fields before trying to add to them. Fixes #329 --- .../migrations/0013_mailinglist_id_1.py | 33 ++++++++++-- setup.py | 2 +- tox.ini | 5 +- 4 files changed, 62 insertions(+), 28 deletions(-) diff --git a/hyperkitty/migrations/0013_mailinglist_id_1.py b/hyperkitty/migrations/0013_mailinglist_id_1.py index f460daf9..d55afed5 100644 --- a/hyperkitty/migrations/0013_mailinglist_id_1.py +++ b/hyperkitty/migrations/0013_mailinglist_id_1.py @@ -16,10 +16,35 @@ class MailingListPrimaryKey(migrations.AlterField): ) def state_forwards(self, app_label, state): - state.models[app_label, self.model_name_lower].fields.insert(0, ( - "id", models.AutoField( - name="id", auto_created=True, primary_key=True, serialize=False, - verbose_name='ID'))) + # django < 3.1 + if type(state.models[app_label, self.model_name_lower].fields) is list: + state.models[app_label, self.model_name_lower].fields.insert( + 0, + ( + "id", + models.AutoField( + name="id", + auto_created=True, + primary_key=True, + serialize=False, + verbose_name='ID' + ) + ) + ) + # django >= 3.1 + else: + state.models[app_label, self.model_name_lower].fields.update( + { + "id": + models.AutoField( + name="id", + auto_created=True, + primary_key=True, + serialize=False, + verbose_name='ID', + ) + } + ) super(MailingListPrimaryKey, self).state_forwards(app_label, state) def database_forwards(self, app_label, schema_editor, from_state, to_state): diff --git a/setup.py b/setup.py index cb058659..0968c676 100755 --- a/setup.py +++ b/setup.py @@ -37,7 +37,7 @@ with open('hyperkitty/__init__.py') as fp: # Requirements REQUIRES = [ - "Django>=2.0,<3.1", + "Django>=2.2,<3.2", "django_mailman3>=1.3.3", "django-gravatar2>=1.0.6", "djangorestframework>=3.0.0", -- GitLab ++++++ hyperkitty-manage.sh ++++++ #!/bin/bash sudo -u hyperkitty-admin /usr/bin/python3 /srv/www/webapps/mailman/hyperkitty/manage.py "$@" ++++++ hyperkitty-permissions.sh ++++++ #!/bin/sh LOG_DIR="/var/log/hyperkitty" LIB_DIR="/var/lib/hyperkitty" DATA_DIR="$LIB_DIR/data/" setfacl -R --no-mask -m u:hyperkitty-admin:rwX ${DATA_DIR} setfacl -R -d --no-mask -m u:hyperkitty-admin:rwX ${DATA_DIR} chown hyperkitty-admin:hyperkitty-admin ${LIB_DIR} chmod u=rwX,g=rwX,o= ${LIB_DIR} chown -R hyperkitty:hyperkitty ${DATA_DIR} chmod -R u=rwX,g=rwX,o= ${DATA_DIR} chown hyperkitty:hyperkitty ${DATA_DIR}/hyperkitty.db 2>/dev/null chmod u=rwX,g=rwX,o= ${DATA_DIR}/hyperkitty.db 2>/dev/null setfacl -R --no-mask -m u:hyperkitty:rwX ${DATA_DIR} setfacl -R -d --no-mask -m u:hyperkitty:rwX ${DATA_DIR} setfacl -R --no-mask -m u:hyperkitty-admin:rwX ${DATA_DIR} setfacl -R -d --no-mask -m u:hyperkitty-admin:rwX ${DATA_DIR} chown hyperkitty-admin:hyperkitty-admin ${LOG_DIR} chmod u=rwX,g=rwX,o= ${LOG_DIR} chown hyperkitty-admin:hyperkitty-admin ${LOG_DIR}/hyperkitty.log 2>/dev/null chmod u=rwX,g=rwX,o= ${LOG_DIR}/hyperkitty.log 2>/dev/null setfacl -R --no-mask -m u:hyperkitty:rwX ${LOG_DIR} setfacl -R -d --no-mask -m u:hyperkitty:rwX ${LOG_DIR} setfacl -R --no-mask -m u:hyperkitty-admin:rwX ${LOG_DIR} setfacl -R -d --no-mask -m u:hyperkitty-admin:rwX ${LOG_DIR} ++++++ hyperkitty-qcluster.service ++++++ [Unit] Description=HyperKitty async tasks runner After=network.target remote-fs.target [Service] ExecStart=/usr/bin/python3 /srv/www/webapps/mailman/hyperkitty/manage.py qcluster --pythonpath /srv/www/webapps/mailman/hyperkitty/ --settings settings User=hyperkitty Restart=always [Install] WantedBy=multi-user.target ++++++ hyperkitty-runjob.service ++++++ [Unit] Description=HyperKitty runjob @HYPERKITTY_RUNJOB@ [Service] Type=oneshot ExecStart=/usr/bin/python3 /srv/www/webapps/mailman/hyperkitty/manage.py runjob @HYPERKITTY_RUNJOB@ --pythonpath /srv/www/webapps/mailman/hyperkitty/ --settings settings User=hyperkitty-admin Group=hyperkitty-admin ++++++ hyperkitty-runjob.timer ++++++ [Unit] Description=HyperKitty runjob @HYPERKITTY_RUNJOB@ [Timer] @HYPERKITTY_RUNJOB_CALENDAR@ @HYPERKITTY_RUNJOB_DELAY@ Persistent=true [Install] WantedBy=basic.target ++++++ hyperkitty-settings.patch ++++++ Index: HyperKitty-1.3.3/example_project/settings.py =================================================================== --- HyperKitty-1.3.3.orig/example_project/settings.py +++ HyperKitty-1.3.3/example_project/settings.py @@ -134,7 +134,7 @@ DATABASES = { # Use 'sqlite3', 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'. 'ENGINE': 'django.db.backends.sqlite3', # DB name or path to database file if using sqlite3. - 'NAME': os.path.join(BASE_DIR, 'hyperkitty.db'), + 'NAME': '/var/lib/hyperkitty/data/hyperkitty.db', # The following settings are not used with sqlite3: 'USER': 'hyperkitty', 'PASSWORD': 'hkpass', @@ -202,7 +202,7 @@ USE_TZ = True # Don't put anything in this directory yourself; store your static files # in apps' "static/" subdirectories and in STATICFILES_DIRS. # Example: "/var/www/example.com/static/" -STATIC_ROOT = os.path.join(BASE_DIR, 'static') +STATIC_ROOT = '/srv/www/webapps/mailman/hyperkitty/static' # URL prefix for static files. # Example: "http://example.com/static/", "http://static.example.com/" @@ -395,7 +395,7 @@ LOGGING = { 'level': 'INFO', #'class': 'logging.handlers.RotatingFileHandler', 'class': 'logging.handlers.WatchedFileHandler', - 'filename': os.path.join(BASE_DIR, 'hyperkitty.log'), + 'filename': '/var/log/hyperkitty/hyperkitty.log', 'formatter': 'verbose', }, }, ++++++ hyperkitty.uwsgi ++++++ [uwsgi] #plugin = apparmor #apparmor-hat = hyperkitty uid = hyperkitty gid = hyperkitty processes = 1 threads = 25 socket = /run/uwsgi/uwsgi-hyperkitty.sock chmod-socket = 660 chown-socket = wwwrun:www plugin = python3 chdir = /srv/www/webapps/mailman/hyperkitty module = wsgi ++++++ python-HyperKitty-rpmlintrc ++++++ addFilter("zero-length") addFilter("non-standard-gid") addFilter("non-standard-uid") _______________________________________________ openSUSE Commits mailing list -- commit@lists.opensuse.org To unsubscribe, email commit-le...@lists.opensuse.org List Netiquette: https://en.opensuse.org/openSUSE:Mailing_list_netiquette List Archives: https://lists.opensuse.org/archives/list/commit@lists.opensuse.org