git: dcd0ea22bdfd - main - www/py-hyperkitty: [NEW PORT] A web interface to access GNU Mailman v3 archives

From: Älven <alven_at_FreeBSD.org>
Date: Thu, 18 Sep 2025 12:46:08 UTC
The branch main has been updated by alven:

URL: https://cgit.FreeBSD.org/ports/commit/?id=dcd0ea22bdfde414817f63f7a199f878aac7fc51

commit dcd0ea22bdfde414817f63f7a199f878aac7fc51
Author:     Einar Bjarni Halldórsson <einar@isnic.is>
AuthorDate: 2025-09-18 12:27:06 +0000
Commit:     Älven <alven@FreeBSD.org>
CommitDate: 2025-09-18 12:45:25 +0000

    www/py-hyperkitty: [NEW PORT] A web interface to access GNU Mailman v3 archives
    
    Hyperkitty is a web interface to access GNU Mailman v3 archives.
    
    Three other ports are added as dependencies of py-hyperkitty:
    - www/py-django-q2
    - www/py-robot-detection
    - www/py-mailman-hyperkitty
    
    PR:             281463 281464 281465
    Approved by:    yuri@ (Mentor)
    
    Differential Revision: https://reviews.freebsd.org/D52550
---
 www/Makefile                        |  4 ++++
 www/py-django-q2/Makefile           | 21 +++++++++++++++++++
 www/py-django-q2/distinfo           |  3 +++
 www/py-django-q2/pkg-descr          |  6 ++++++
 www/py-hyperkitty/Makefile          | 40 +++++++++++++++++++++++++++++++++++++
 www/py-hyperkitty/distinfo          |  3 +++
 www/py-hyperkitty/pkg-descr         |  2 ++
 www/py-mailman-hyperkitty/Makefile  | 20 +++++++++++++++++++
 www/py-mailman-hyperkitty/distinfo  |  3 +++
 www/py-mailman-hyperkitty/pkg-descr |  4 ++++
 www/py-robot-detection/Makefile     | 18 +++++++++++++++++
 www/py-robot-detection/distinfo     |  3 +++
 www/py-robot-detection/pkg-descr    |  2 ++
 www/py-robot-detection/pkg-message  | 14 +++++++++++++
 14 files changed, 143 insertions(+)

diff --git a/www/Makefile b/www/Makefile
index 75297640015c..00d56aaac882 100644
--- a/www/Makefile
+++ b/www/Makefile
@@ -1656,6 +1656,7 @@
     SUBDIR += py-django-post_office
     SUBDIR += py-django-prometheus
     SUBDIR += py-django-pyscss
+    SUBDIR += py-django-q2
     SUBDIR += py-django-radius
     SUBDIR += py-django-ranged-response
     SUBDIR += py-django-recaptcha
@@ -1827,6 +1828,7 @@
     SUBDIR += py-httpx_gssapi
     SUBDIR += py-hypercorn
     SUBDIR += py-hyperframe
+    SUBDIR += py-hyperkitty
     SUBDIR += py-hyperlink
     SUBDIR += py-inlinestyler
     SUBDIR += py-internetarchive
@@ -1842,6 +1844,7 @@
     SUBDIR += py-libsass
     SUBDIR += py-limits
     SUBDIR += py-livereload
+    SUBDIR += py-mailman-hyperkitty
     SUBDIR += py-mechanicalsoup
     SUBDIR += py-mechanize
     SUBDIR += py-multidict
@@ -1916,6 +1919,7 @@
     SUBDIR += py-rfc3986
     SUBDIR += py-rfc3987
     SUBDIR += py-rfc3987-syntax
+    SUBDIR += py-robot-detection
     SUBDIR += py-rollbar
     SUBDIR += py-routes
     SUBDIR += py-rules
diff --git a/www/py-django-q2/Makefile b/www/py-django-q2/Makefile
new file mode 100644
index 000000000000..23aa84dbd968
--- /dev/null
+++ b/www/py-django-q2/Makefile
@@ -0,0 +1,21 @@
+PORTNAME=	django-q2
+DISTVERSION=	1.8.0
+CATEGORIES=	www python
+MASTER_SITES=	PYPI
+PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}
+DISTNAME=	django_q2-${DISTVERSION}
+
+MAINTAINER=	einar@isnic.is
+COMMENT=	Multiprocessing distributed task queue for Django
+WWW=		https://django-q2.readthedocs.io/
+
+LICENSE=	MIT
+
+BUILD_DEPENDS=	${PYTHON_PKGNAMEPREFIX}poetry-core>=1.0.0:devel/py-poetry-core@${PY_FLAVOR}
+RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}django42>=2.2:www/py-django42@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}django-picklefield>=3.1:www/py-django-picklefield@${PY_FLAVOR}
+
+USES=		python
+USE_PYTHON=	autoplist pep517
+
+.include <bsd.port.mk>
diff --git a/www/py-django-q2/distinfo b/www/py-django-q2/distinfo
new file mode 100644
index 000000000000..6bd990797219
--- /dev/null
+++ b/www/py-django-q2/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1745593090
+SHA256 (django_q2-1.8.0.tar.gz) = e86b9625c0ce57a5ae31ca8fd7e798d63b9ef91a227c52f8b47536ba50b2b284
+SIZE (django_q2-1.8.0.tar.gz) = 77161
diff --git a/www/py-django-q2/pkg-descr b/www/py-django-q2/pkg-descr
new file mode 100644
index 000000000000..4bbec8bf6b5b
--- /dev/null
+++ b/www/py-django-q2/pkg-descr
@@ -0,0 +1,6 @@
+A multiprocessing distributed task queue for Django
+
+Django Q2 is a fork of Django Q. Big thanks to Ilan Steemers for starting this
+project. Unfortunately, development has stalled since June 2021. Django Q2 is
+the new updated version of Django Q, with dependencies updates, docs updates and
+several bug fixes.
diff --git a/www/py-hyperkitty/Makefile b/www/py-hyperkitty/Makefile
new file mode 100644
index 000000000000..4e13ee659e9a
--- /dev/null
+++ b/www/py-hyperkitty/Makefile
@@ -0,0 +1,40 @@
+PORTNAME=	hyperkitty
+PORTVERSION=	1.3.12
+CATEGORIES=	www python
+MASTER_SITES=	PYPI
+PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}
+
+MAINTAINER=	einar@isnic.is
+COMMENT=	Web interface to access GNU Mailman v3 archives
+WWW=		https://gitlab.com/mailman/hyperkitty
+
+LICENSE=	GPLv3
+
+BUILD_DEPENDS=	${PYTHON_PKGNAMEPREFIX}pdm-backend>0:devel/py-pdm-backend@${PY_FLAVOR}
+RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}django_compressor>=1.3:www/py-django_compressor@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}django-extensions>=1.3.7:www/py-django-extensions@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}django-gravatar2>=1.0.6:www/py-django-gravatar2@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}django-haystack>=2.8.0:www/py-django-haystack@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}django-q2>=1.0.0:www/py-django-q2@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}django42>=4.2:www/py-django42@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}django-mailman3>=1.3.13:mail/py-django-mailman3@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}djangorestframework>=3.0.0:www/py-djangorestframework@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}flufl.lock>=4.0:devel/py-flufl.lock@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}mailmanclient>=3.3.3:mail/py-mailmanclient@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}mistune>=3.0:textproc/py-mistune@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}networkx>=2.0:math/py-networkx@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}python-dateutil>=2.0:devel/py-python-dateutil@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}robot-detection>=0.3:www/py-robot-detection@${PY_FLAVOR}
+
+USES=		python shebangfix
+USE_PYTHON=	autoplist concurrent pep517
+
+SHEBANG_FILES=	hyperkitty/contrib/check_hk_import \
+		hyperkitty/contrib/cleanarch3
+
+NO_ARCH=	yes
+
+post-extract:
+	${RM} -rf ${WRKSRC}/example_project
+
+.include <bsd.port.mk>
diff --git a/www/py-hyperkitty/distinfo b/www/py-hyperkitty/distinfo
new file mode 100644
index 000000000000..91a628d9d05e
--- /dev/null
+++ b/www/py-hyperkitty/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1726946483
+SHA256 (hyperkitty-1.3.12.tar.gz) = deb582937ec5bc9ea9c1d5d86bfb76a4da429b60e1fea6fd6964e7c667cf161d
+SIZE (hyperkitty-1.3.12.tar.gz) = 2231630
diff --git a/www/py-hyperkitty/pkg-descr b/www/py-hyperkitty/pkg-descr
new file mode 100644
index 000000000000..403ba13110fa
--- /dev/null
+++ b/www/py-hyperkitty/pkg-descr
@@ -0,0 +1,2 @@
+HyperKitty is an open source Django application under development. It aims to
+provide a web interface to access GNU Mailman v3 archives.
diff --git a/www/py-mailman-hyperkitty/Makefile b/www/py-mailman-hyperkitty/Makefile
new file mode 100644
index 000000000000..b8b38bf1dc71
--- /dev/null
+++ b/www/py-mailman-hyperkitty/Makefile
@@ -0,0 +1,20 @@
+PORTNAME=	mailman-hyperkitty
+PORTVERSION=	1.2.1
+CATEGORIES=	www python
+MASTER_SITES=	PYPI
+PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}
+
+MAINTAINER=	einar@isnic.is
+COMMENT=	Mailman archiver plugin for HyperKitty
+WWW=		https://gitlab.com/mailman/mailman-hyperkitty/
+
+LICENSE=	GPLv3
+
+RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}mailman>0:mail/mailman3@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}requests>0:www/py-requests@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}zope.interface>0:devel/py-zope.interface@${PY_FLAVOR}
+
+USES=		python
+USE_PYTHON=	autoplist distutils
+
+.include <bsd.port.mk>
diff --git a/www/py-mailman-hyperkitty/distinfo b/www/py-mailman-hyperkitty/distinfo
new file mode 100644
index 000000000000..ab751a9b85cf
--- /dev/null
+++ b/www/py-mailman-hyperkitty/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1725376430
+SHA256 (mailman-hyperkitty-1.2.1.tar.gz) = f8d69dfbc6ccb582896d40a9a69457aa1075cdd6efbc55d34c797024b40bcc38
+SIZE (mailman-hyperkitty-1.2.1.tar.gz) = 22197
diff --git a/www/py-mailman-hyperkitty/pkg-descr b/www/py-mailman-hyperkitty/pkg-descr
new file mode 100644
index 000000000000..0538aa686b71
--- /dev/null
+++ b/www/py-mailman-hyperkitty/pkg-descr
@@ -0,0 +1,4 @@
+Mailman archiver plugin for HyperKitty
+
+This module contains a Mailman archiver plugin which sends emails to HyperKitty,
+the web archiver.
diff --git a/www/py-robot-detection/Makefile b/www/py-robot-detection/Makefile
new file mode 100644
index 000000000000..1d225251a46d
--- /dev/null
+++ b/www/py-robot-detection/Makefile
@@ -0,0 +1,18 @@
+PORTNAME=	robot-detection
+DISTVERSION=	0.4
+CATEGORIES=	www python
+MASTER_SITES=	PYPI
+PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}
+
+MAINTAINER=	einar@isnic.is
+COMMENT=	Detect if a HTTP User-Agent header is likely to be a bot
+WWW=		https://github.com/amandasaurus/robot-detection
+
+LICENSE=	GPLv3+
+
+USES=		python
+USE_PYTHON=	autoplist distutils
+
+RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}six>0:devel/py-six@${PY_FLAVOR}
+
+.include <bsd.port.mk>
diff --git a/www/py-robot-detection/distinfo b/www/py-robot-detection/distinfo
new file mode 100644
index 000000000000..7699a29a34e2
--- /dev/null
+++ b/www/py-robot-detection/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1725370739
+SHA256 (robot-detection-0.4.tar.gz) = 3d8fb72ca47164b8ce55e33bdda93742f62c348def7d3cc3b42b0ceb4795a2f5
+SIZE (robot-detection-0.4.tar.gz) = 6387
diff --git a/www/py-robot-detection/pkg-descr b/www/py-robot-detection/pkg-descr
new file mode 100644
index 000000000000..fd974991a39b
--- /dev/null
+++ b/www/py-robot-detection/pkg-descr
@@ -0,0 +1,2 @@
+Library for detecting if a HTTP User Agent header is likely to be a bot.
+It uses the list of registered robots from https://www.robotstxt.org/.
diff --git a/www/py-robot-detection/pkg-message b/www/py-robot-detection/pkg-message
new file mode 100644
index 000000000000..e3e1aed11a1a
--- /dev/null
+++ b/www/py-robot-detection/pkg-message
@@ -0,0 +1,14 @@
+[
+{ type: install
+  message: <<EOM
+You can download a new version of the Robot Database from https://www.robotstxt.org/db/all.txt.
+
+Download the database dump, and run the file robot_detection.py with the file as first argument.
+
+	$ fetch https://www.robotstxt.org/db/all.txt
+	$ python robot_detection.py all.txt
+
+If the database has changed, it'll print out the new version of robot_useragents variable that you need to put into the source code.
+EOM
+}
+]