Date: Thursday, October 21, 2021 @ 19:51:59 Author: dvzrv Revision: 1032061
archrelease: copy trunk to community-staging-any Added: hyperkitty/repos/community-staging-any/ hyperkitty/repos/community-staging-any/PKGBUILD (from rev 1032058, hyperkitty/trunk/PKGBUILD) hyperkitty/repos/community-staging-any/hyperkitty-1.3.2-settings.patch (from rev 1032058, hyperkitty/trunk/hyperkitty-1.3.2-settings.patch) hyperkitty/repos/community-staging-any/hyperkitty-qcluster.service (from rev 1032059, hyperkitty/trunk/hyperkitty-qcluster.service) hyperkitty/repos/community-staging-any/hyperkitty.install (from rev 1032060, hyperkitty/trunk/hyperkitty.install) hyperkitty/repos/community-staging-any/hyperkitty.sysusers (from rev 1032060, hyperkitty/trunk/hyperkitty.sysusers) hyperkitty/repos/community-staging-any/hyperkitty.tmpfiles (from rev 1032060, hyperkitty/trunk/hyperkitty.tmpfiles) hyperkitty/repos/community-staging-any/hyperkitty.uwsgi (from rev 1032060, hyperkitty/trunk/hyperkitty.uwsgi) ---------------------------------+ PKGBUILD | 112 ++++++++++++++++++++++++++++++++++++++ hyperkitty-1.3.2-settings.patch | 85 ++++++++++++++++++++++++++++ hyperkitty-qcluster.service | 38 ++++++++++++ hyperkitty.install | 10 +++ hyperkitty.sysusers | 1 hyperkitty.tmpfiles | 8 ++ hyperkitty.uwsgi | 25 ++++++++ 7 files changed, 279 insertions(+) Copied: hyperkitty/repos/community-staging-any/PKGBUILD (from rev 1032058, hyperkitty/trunk/PKGBUILD) =================================================================== --- community-staging-any/PKGBUILD (rev 0) +++ community-staging-any/PKGBUILD 2021-10-21 19:51:59 UTC (rev 1032061) @@ -0,0 +1,112 @@ +# Maintainer: David Runge <dv...@archlinux.org> + +_name=HyperKitty +pkgname=hyperkitty +pkgver=1.3.5 +pkgrel=1 +pkgdesc="A web interface to access GNU Mailman v3 archives" +arch=('any') +url="https://gitlab.com/mailman/hyperkitty" +license=('GPL3') +depends=('python-dateutil' 'python-django' 'python-django-compressor' +'python-django-extensions' 'python-django-gravatar' 'python-django-haystack' +'python-django-mailman3' 'python-django-q' 'python-django-rest-framework' +'python-flufl-lock' 'python-mailmanclient' 'python-mistune' 'python-networkx' +'python-pytz' 'python-robot-detection' 'python-whoosh' 'sassc') +makedepends=('python-isort' 'python-setuptools') +checkdepends=('python-beautifulsoup4' 'python-django-debug-toolbar' +'python-elasticsearch' 'python-lxml' 'python-mock' 'python-pytest' +'python-whoosh') +optdepends=('python-elasticsearch: for using elasticsearch as search backend' + 'python-xapian-haystack: for using xapian as search backend' + 'uwsgi-plugin-python: for running inside uwsgi' + 'ruby-sassc: alternative to sassc') +backup=("etc/uwsgi/${pkgname}.ini" + "etc/webapps/${pkgname}/settings_local.py" + "etc/webapps/${pkgname}/urls.py" +) +install="${pkgname}.install" +source=("https://files.pythonhosted.org/packages/source/${_name::1}/${_name}/${_name}-${pkgver}.tar.gz"{,.asc} + "${pkgname}-1.3.2-settings.patch" + "${pkgname}-qcluster.service" + "${pkgname}.sysusers" + "${pkgname}.tmpfiles" + "${pkgname}.uwsgi") +sha512sums=('9e794cd522904369dea5a70489e3ab7fe149680ed13f03e5002f0ad84304cf1de7481c71e302cf46cd9fa244cadca5d0c41767ceb4cee82b7153f052bc1b677d' + 'SKIP' + '452da2c049f0c35d27e15c16af1a6a526de79a6672b6fdaf9a4bcbdfd2110ebf608e8c5a1f5dfc3bb2febc39ecc6e69e2a657c3b2c6e1d2dc2eca2de81125380' + 'a41c938082ceee555143ddb21c3a95835f9832b9aff423142d78d3e52f12500561f80e0ce43c67a4f190065c9d045945741ac71ab3307db1419c4dc0686db09a' + '3267427109b08b8c9336b187381ed14357a07370bdcdfc24da94555020ad0424c5bbebc09e131e981e0540c51db443ffe558209e1bca7c2a1b7b1f602ed0805b' + 'c943d82b8640a513728e3f07fa44c0ddb5a3bb8ec84a3a70990e51287ca01977887f895b901688fc4643d8fcb106d524259a86a51bccaafd77c69b241f1b23ba' + '351f40a6bc1fd1735c883408f9941808e081206927a7c02467e03228243dd156378cac21f851b498702bd4f96fde8e4c80536dbcc6f3c384bf708bed4e988971') +b2sums=('2ef6917425bdf00a5a03383a8f7ff0eb1243557c1189d9afba33b3c1f09db63b40827b0e7f9602964f251197045594d786df13c6cd288c97980967bdf85eba4c' + 'SKIP' + '1eab6221db4adb1a066bde8d6c84a90d3e414d1d30c5cf55a90a4ac58d131f7c4872c85d65e98d91ee0f4cac6f71c47c829993c736617a86be8fec5d831422c8' + 'e8ae1d123e74b0c6984df3e5fff720e03dcbc3f007123718fe845024b42e5c13b7eac4da6bde04a9e1372d446bfa50ac12479730a9092e8396b73434e59663d3' + 'f4e912e75c5127897837d67626ba94a418ec408f0f3a9bcd1767633347e107600cc43825caa5737a84362273a353bf03097879ff5b9065663150f6db4b96238a' + 'e4fd83e38703d8ff9a714b238296e4e12791b8ce0c19446709e5c20b4012ed10b97504cafda66cdbe12e56a9f943c094147b6a02db3bd9c854e609adca38ff01' + '767f334add0dd0e83b27e198415a2ef8ae3c505aa7f37d12138e37a98dc5575e43f83eb665431464ed488a5bf6b8913cd675eb112dc880cf17ff51511a3f07e6') +validpgpkeys=('541EA0448453394FF77A0ECC9D9B2BA061D0A67C') # Abhilash Raj <raj.abhila...@gmail.com> + +prepare() { + mv -v "${_name}-${pkgver}" "$pkgname-$pkgver" + cd "$pkgname-$pkgver" + # setting FHS compliant default paths, remove debug options + patch -Np1 -i "../${pkgname}-1.3.2-settings.patch" + touch settings_local.py +} + +build() { + cd "$pkgname-$pkgver" + python setup.py build +} + +check() { + cd "$pkgname-$pkgver" + export PYTHONPATH="build:${PYTHONPATH}" + python example_project/manage.py test --settings=hyperkitty.tests.settings_test hyperkitty +} + +package() { + cd "$pkgname-$pkgver" + local python_stdlib_basepath="$(python -c "from sysconfig import get_path; print(get_path('stdlib'))")" + python setup.py install --skip-build \ + --optimize=1 \ + --root="${pkgdir}" + # remove example_project from top level site-packages: + # https://gitlab.com/mailman/hyperkitty/issues/279 + rm -rfv "${pkgdir}/${python_stdlib_basepath}/site-packages/example_project" + # doc + install -vDm 644 README.rst -t "${pkgdir}/usr/share/doc/${pkgname}" + # django project + 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}" + # state dir + 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}" + # 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" + # systemd service + install -vDm 644 "../${pkgname}-qcluster.service" \ + -t "${pkgdir}/usr/lib/systemd/system" + # uwsgi + install -vDm 644 "../${pkgname}.uwsgi" "${pkgdir}/etc/uwsgi/${pkgname}.ini" + # tmpfiles.d + 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" +} Copied: hyperkitty/repos/community-staging-any/hyperkitty-1.3.2-settings.patch (from rev 1032058, hyperkitty/trunk/hyperkitty-1.3.2-settings.patch) =================================================================== --- community-staging-any/hyperkitty-1.3.2-settings.patch (rev 0) +++ community-staging-any/hyperkitty-1.3.2-settings.patch 2021-10-21 19:51:59 UTC (rev 1032061) @@ -0,0 +1,85 @@ +diff -ruN a/example_project/settings.py b/example_project/settings.py +--- a/example_project/settings.py 2020-06-01 18:21:21.000000000 +0200 ++++ b/example_project/settings.py 2020-11-07 12:19:48.531767195 +0100 +@@ -75,12 +75,12 @@ + 'allauth.socialaccount.providers.github', + 'allauth.socialaccount.providers.gitlab', + 'allauth.socialaccount.providers.google', +- 'allauth.socialaccount.providers.facebook', ++ # 'allauth.socialaccount.providers.facebook', + 'allauth.socialaccount.providers.twitter', + 'allauth.socialaccount.providers.stackexchange', + + # Dev only dependencies. Do not include in any production site. +- 'debug_toolbar', ++ # 'debug_toolbar', + ) + + +@@ -88,7 +88,7 @@ + 'django.middleware.security.SecurityMiddleware', + 'django.contrib.sessions.middleware.SessionMiddleware', + # NOTE: Do not include DebugToolbarMiddleware in any production site. +- 'debug_toolbar.middleware.DebugToolbarMiddleware', ++ # 'debug_toolbar.middleware.DebugToolbarMiddleware', + 'django.middleware.common.CommonMiddleware', + 'django.middleware.csrf.CsrfViewMiddleware', + 'django.contrib.auth.middleware.AuthenticationMiddleware', +@@ -134,7 +134,7 @@ + # 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 @@ + # 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 = '/var/lib/hyperkitty/static' + + # URL prefix for static files. + # Example: "http://example.com/static/", "http://static.example.com/" +@@ -328,7 +328,8 @@ + # recompiled on each requests. It means running an additional "compress" + # management command after each code upgrade. + # http://django-compressor.readthedocs.io/en/latest/usage/#offline-compression +-# COMPRESS_OFFLINE = True ++COMPRESS_OFFLINE = True ++COMPRESS_ENABLED = True + + # Needed for debug mode + INTERNAL_IPS = ('127.0.0.1',) +@@ -340,7 +341,7 @@ + HAYSTACK_CONNECTIONS = { + 'default': { + 'ENGINE': 'haystack.backends.whoosh_backend.WhooshEngine', +- 'PATH': os.path.join(BASE_DIR, "fulltext_index"), ++ 'PATH': "/var/lib/hyperkitty/fulltext_index", + # You can also use the Xapian engine, it's faster and more accurate, + # but requires another library. + # http://django-haystack.readthedocs.io/en/v2.4.1/installing_search_engines.html#xapian +@@ -395,7 +396,7 @@ + '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', + }, + }, +@@ -444,9 +445,9 @@ + # When DEBUG is True, don't actually send emails to the SMTP server, just store + # them in a directory. This way you won't accidentally spam your mailing-lists + # while you're fiddling with the code. +-if DEBUG == True: ++if DEBUG: + EMAIL_BACKEND = 'django.core.mail.backends.filebased.EmailBackend' +- EMAIL_FILE_PATH = os.path.join(BASE_DIR, 'emails') ++ EMAIL_FILE_PATH = '/var/lib/hyperkitty/emails' + + + # Copied: hyperkitty/repos/community-staging-any/hyperkitty-qcluster.service (from rev 1032059, hyperkitty/trunk/hyperkitty-qcluster.service) =================================================================== --- community-staging-any/hyperkitty-qcluster.service (rev 0) +++ community-staging-any/hyperkitty-qcluster.service 2021-10-21 19:51:59 UTC (rev 1032061) @@ -0,0 +1,38 @@ +[Unit] +Description=HyperKitty async tasks runner +Documentation=https://hyperkitty.readthedocs.io/en/latest/install.html#asynchronous-tasks +After=network.target remote-fs.target + +[Service] +User=hyperkitty +ExecStart=/usr/bin/django-admin qcluster --pythonpath /usr/share/webapps/hyperkitty --settings settings +Restart=always +StandardError=syslog +PrivateTmp=true +ProtectSystem=strict +ProtectHome=true +PrivateDevices=true +ProtectKernelTunables=true +ProtectControlGroups=true +NoNewPrivileges=true +MemoryDenyWriteExecute=true +LockPersonality=true +CapabilityBoundingSet=CAP_NET_BIND_SERVICE +ProtectHostname=true +ProtectKernelLogs=true +ProtectKernelModules=true +RemoveIPC=true +RestrictAddressFamilies=~AF_PACKET +RestrictNamespaces=true +RestrictRealtime=true +RestrictSUIDSGID=true +SystemCallArchitectures=native +SystemCallFilter=@system-service +SystemCallFilter=~@privileged @resources +ReadOnlyPaths=/etc/webapps/hyperkitty +LogsDirectory=hyperkitty +RuntimeDirectory=hyperkitty +StateDirectory=hyperkitty + +[Install] +WantedBy=multi-user.target Copied: hyperkitty/repos/community-staging-any/hyperkitty.install (from rev 1032060, hyperkitty/trunk/hyperkitty.install) =================================================================== --- community-staging-any/hyperkitty.install (rev 0) +++ community-staging-any/hyperkitty.install 2021-10-21 19:51:59 UTC (rev 1032061) @@ -0,0 +1,10 @@ +post_install() { + echo "Run the following to create/migrate the database:" + echo "sudo -u hyperkitty django-admin migrate --pythonpath /usr/share/webapps/hyperkitty/ --settings settings" +} + +post_upgrade() { + echo "Run the following to update static files and compress them:" + echo "sudo -u hyperkitty django-admin collectstatic --pythonpath /usr/share/webapps/hyperkitty --settings settings" + echo "sudo -u hyperkitty django-admin compress --pythonpath /usr/share/webapps/hyperkitty --settings settings" +} Copied: hyperkitty/repos/community-staging-any/hyperkitty.sysusers (from rev 1032060, hyperkitty/trunk/hyperkitty.sysusers) =================================================================== --- community-staging-any/hyperkitty.sysusers (rev 0) +++ community-staging-any/hyperkitty.sysusers 2021-10-21 19:51:59 UTC (rev 1032061) @@ -0,0 +1 @@ +u hyperkitty - "GNU Mailman Archiver" - Copied: hyperkitty/repos/community-staging-any/hyperkitty.tmpfiles (from rev 1032060, hyperkitty/trunk/hyperkitty.tmpfiles) =================================================================== --- community-staging-any/hyperkitty.tmpfiles (rev 0) +++ community-staging-any/hyperkitty.tmpfiles 2021-10-21 19:51:59 UTC (rev 1032061) @@ -0,0 +1,8 @@ +z /etc/webapps/hyperkitty/settings_local.py 0640 root hyperkitty - +z /etc/webapps/hyperkitty/urls.py 0640 root hyperkitty - +d %L/hyperkitty 750 hyperkitty hyperkitty - +d %S/hyperkitty - hyperkitty hyperkitty - +d %S/hyperkitty/data 750 hyperkitty hyperkitty - +d %S/hyperkitty/locale - hyperkitty hyperkitty - +d %S/hyperkitty/static - hyperkitty hyperkitty - +d %t/hyperkitty - hyperkitty hyperkitty - Copied: hyperkitty/repos/community-staging-any/hyperkitty.uwsgi (from rev 1032060, hyperkitty/trunk/hyperkitty.uwsgi) =================================================================== --- community-staging-any/hyperkitty.uwsgi (rev 0) +++ community-staging-any/hyperkitty.uwsgi 2021-10-21 19:51:59 UTC (rev 1032061) @@ -0,0 +1,25 @@ +[uwsgi] +procname-master = hyperkitty +master = true +plugins = python +socket = /run/hyperkitty/%n.sock +stats = /run/hyperkitty/%n-stats.sock +uid = hyperkitty +gid = hyperkitty +processes = 10 +cheaper = 2 +cheaper-step = 1 +idle = 120 +die-on-idle = true +chdir = /usr/share/webapps/hyperkitty +module = wsgi +home = / +touch-reload = %p +vacuum = true +cron2 = minute=0,hour=0,day=0,week=0,month=0,unique=1 /usr/bin/django-admin runjobs yearly --pythonpath /usr/share/webapps/hyperkitty --settings settings +cron2 = minute=0,hour=0,day=0,week=0,unique=1 /usr/bin/django-admin runjobs monthly --pythonpath /usr/share/webapps/hyperkitty --settings settings +cron2 = minute=0,hour=0,day=0,unique=1 /usr/bin/django-admin runjobs weekly --pythonpath /usr/share/webapps/hyperkitty --settings settings +cron2 = minute=0,hour=0,unique=1 django-admin runjobs daily --pythonpath /usr/share/webapps/hyperkitty --settings settings +cron2 = minute=0,unique=1 /usr/bin/django-admin runjobs hourly --pythonpath /usr/share/webapps/hyperkitty --settings settings +cron2 = minute=-15,unique=1 /usr/bin/django-admin runjobs quarter_hourly --pythonpath /usr/share/webapps/hyperkitty --settings settings +cron2 = unique=1 /usr/bin/django-admin runjobs minutely --pythonpath /usr/share/webapps/hyperkitty --settings settings