summaryrefslogtreecommitdiff
path: root/www
diff options
context:
space:
mode:
Diffstat (limited to 'www')
-rw-r--r--www/Makefile23
-rw-r--r--www/authelia/Makefile2
-rw-r--r--www/filebrowser/Makefile5
-rw-r--r--www/filebrowser/distinfo14
-rw-r--r--www/forgejo/Makefile7
-rw-r--r--www/forgejo/distinfo6
-rw-r--r--www/forgejo/files/app.ini.sample.in5
-rw-r--r--www/forgejo/files/forgejo.in3
-rw-r--r--www/forgejo/files/patch-pam115
-rw-r--r--www/gitea/Makefile14
-rw-r--r--www/gitea/distinfo6
-rw-r--r--www/gitea/pkg-plist1
-rw-r--r--www/pocket-id/Makefile39
-rw-r--r--www/pocket-id/distinfo7
-rw-r--r--www/pocket-id/files/pkg-message.in17
-rw-r--r--www/pocket-id/files/pocket-id.in36
-rw-r--r--www/pocket-id/pkg-descr13
-rw-r--r--www/py-cherrypy/Makefile9
-rw-r--r--www/py-cherrypy/distinfo6
-rw-r--r--www/py-dj52-channels/Makefile25
-rw-r--r--www/py-dj52-channels/distinfo3
-rw-r--r--www/py-dj52-channels/pkg-descr4
-rw-r--r--www/py-dj52-django-auth-ldap/Makefile40
-rw-r--r--www/py-dj52-django-auth-ldap/distinfo3
-rw-r--r--www/py-dj52-django-auth-ldap/files/patch-docs_conf.py20
-rw-r--r--www/py-dj52-django-auth-ldap/pkg-descr4
-rw-r--r--www/py-dj52-django-choices-field/Makefile24
-rw-r--r--www/py-dj52-django-choices-field/distinfo3
-rw-r--r--www/py-dj52-django-choices-field/pkg-descr2
-rw-r--r--www/py-dj52-django-cors-headers/Makefile26
-rw-r--r--www/py-dj52-django-cors-headers/distinfo3
-rw-r--r--www/py-dj52-django-cors-headers/pkg-descr2
-rw-r--r--www/py-dj52-django-debug-toolbar/Makefile27
-rw-r--r--www/py-dj52-django-debug-toolbar/distinfo3
-rw-r--r--www/py-dj52-django-debug-toolbar/pkg-descr3
-rw-r--r--www/py-dj52-django-filter/Makefile25
-rw-r--r--www/py-dj52-django-filter/distinfo3
-rw-r--r--www/py-dj52-django-filter/pkg-descr2
-rw-r--r--www/py-dj52-django-htmx/Makefile27
-rw-r--r--www/py-dj52-django-htmx/distinfo3
-rw-r--r--www/py-dj52-django-htmx/pkg-descr3
-rw-r--r--www/py-dj52-django-js-asset/Makefile25
-rw-r--r--www/py-dj52-django-js-asset/distinfo3
-rw-r--r--www/py-dj52-django-js-asset/pkg-descr2
-rw-r--r--www/py-dj52-django-mptt/Makefile26
-rw-r--r--www/py-dj52-django-mptt/distinfo3
-rw-r--r--www/py-dj52-django-mptt/pkg-descr2
-rw-r--r--www/py-dj52-django-prometheus/Makefile38
-rw-r--r--www/py-dj52-django-prometheus/distinfo3
-rw-r--r--www/py-dj52-django-prometheus/files/patch-pyproject.toml11
-rw-r--r--www/py-dj52-django-prometheus/files/patch-setup.py13
-rw-r--r--www/py-dj52-django-prometheus/pkg-descr14
-rw-r--r--www/py-dj52-django-redis/Makefile36
-rw-r--r--www/py-dj52-django-redis/distinfo3
-rw-r--r--www/py-dj52-django-redis/pkg-descr15
-rw-r--r--www/py-dj52-django-rich/Makefile27
-rw-r--r--www/py-dj52-django-rich/distinfo3
-rw-r--r--www/py-dj52-django-rich/pkg-descr11
-rw-r--r--www/py-dj52-django-storages/Makefile44
-rw-r--r--www/py-dj52-django-storages/distinfo3
-rw-r--r--www/py-dj52-django-storages/pkg-descr2
-rw-r--r--www/py-dj52-django-tables2/Makefile30
-rw-r--r--www/py-dj52-django-tables2/distinfo3
-rw-r--r--www/py-dj52-django-tables2/pkg-descr3
-rw-r--r--www/py-dj52-django-taggit/Makefile26
-rw-r--r--www/py-dj52-django-taggit/distinfo3
-rw-r--r--www/py-dj52-django-taggit/pkg-descr1
-rw-r--r--www/py-dj52-django-timezone-field/Makefile25
-rw-r--r--www/py-dj52-django-timezone-field/distinfo3
-rw-r--r--www/py-dj52-django-timezone-field/pkg-descr2
-rw-r--r--www/py-dj52-djangorestframework/Makefile25
-rw-r--r--www/py-dj52-djangorestframework/distinfo3
-rw-r--r--www/py-dj52-djangorestframework/pkg-descr15
-rw-r--r--www/py-dj52-drf-spectacular-sidecar/Makefile26
-rw-r--r--www/py-dj52-drf-spectacular-sidecar/distinfo3
-rw-r--r--www/py-dj52-drf-spectacular-sidecar/pkg-descr5
-rw-r--r--www/py-dj52-drf-spectacular/Makefile35
-rw-r--r--www/py-dj52-drf-spectacular/distinfo3
-rw-r--r--www/py-dj52-drf-spectacular/pkg-descr24
-rw-r--r--www/py-dj52-social-auth-app-django/Makefile34
-rw-r--r--www/py-dj52-social-auth-app-django/distinfo3
-rw-r--r--www/py-dj52-social-auth-app-django/pkg-descr6
-rw-r--r--www/py-dj52-strawberry-graphql-django/Makefile37
-rw-r--r--www/py-dj52-strawberry-graphql-django/distinfo3
-rw-r--r--www/py-dj52-strawberry-graphql-django/pkg-descr15
-rw-r--r--www/py-django-storages/Makefile5
-rw-r--r--www/py-django-storages/distinfo6
-rw-r--r--www/py-freenit/Makefile12
-rw-r--r--www/py-freenit/distinfo6
-rw-r--r--www/shiori/Makefile3
-rw-r--r--www/shiori/distinfo10
-rw-r--r--www/sitecopy/Makefile2
-rw-r--r--www/squid/Makefile21
-rw-r--r--www/squid/distinfo6
-rw-r--r--www/squid/files/patch-configure34
-rw-r--r--www/squid/files/patch-src_cf.data.pre (renamed from www/squid/files/patch-src-cf.data.pre)4
-rw-r--r--www/squid/files/squid.in17
-rw-r--r--www/tinyauth/Makefile49
-rw-r--r--www/tinyauth/distinfo7
-rw-r--r--www/tinyauth/files/pkg-message.in17
-rw-r--r--www/tinyauth/files/tinyauth.in35
-rw-r--r--www/tinyauth/pkg-descr4
102 files changed, 1218 insertions, 220 deletions
diff --git a/www/Makefile b/www/Makefile
index 8339058aecc5..b91c7a31dd0d 100644
--- a/www/Makefile
+++ b/www/Makefile
@@ -1453,6 +1453,7 @@
SUBDIR += plasma6-plasma-browser-integration
SUBDIR += pmwiki
SUBDIR += pnews
+ SUBDIR += pocket-id
SUBDIR += podcastamatic
SUBDIR += pomerium
SUBDIR += pound
@@ -1549,6 +1550,27 @@
SUBDIR += py-dj51-drf-writable-nested
SUBDIR += py-dj51-social-auth-app-django
SUBDIR += py-dj51-strawberry-graphql-django
+ SUBDIR += py-dj52-channels
+ SUBDIR += py-dj52-django-auth-ldap
+ SUBDIR += py-dj52-django-choices-field
+ SUBDIR += py-dj52-django-cors-headers
+ SUBDIR += py-dj52-django-debug-toolbar
+ SUBDIR += py-dj52-django-filter
+ SUBDIR += py-dj52-django-htmx
+ SUBDIR += py-dj52-django-js-asset
+ SUBDIR += py-dj52-django-mptt
+ SUBDIR += py-dj52-django-prometheus
+ SUBDIR += py-dj52-django-redis
+ SUBDIR += py-dj52-django-rich
+ SUBDIR += py-dj52-django-storages
+ SUBDIR += py-dj52-django-tables2
+ SUBDIR += py-dj52-django-taggit
+ SUBDIR += py-dj52-django-timezone-field
+ SUBDIR += py-dj52-djangorestframework
+ SUBDIR += py-dj52-drf-spectacular
+ SUBDIR += py-dj52-drf-spectacular-sidecar
+ SUBDIR += py-dj52-social-auth-app-django
+ SUBDIR += py-dj52-strawberry-graphql-django
SUBDIR += py-django-admin-rangefilter
SUBDIR += py-django-advanced-filters
SUBDIR += py-django-allauth
@@ -2500,6 +2522,7 @@
SUBDIR += tidy
SUBDIR += tidy-html5
SUBDIR += tikiwiki
+ SUBDIR += tinyauth
SUBDIR += tinymce
SUBDIR += tinyproxy
SUBDIR += tivoka
diff --git a/www/authelia/Makefile b/www/authelia/Makefile
index 728ad37775c8..f7138fa0cd90 100644
--- a/www/authelia/Makefile
+++ b/www/authelia/Makefile
@@ -8,7 +8,7 @@ DISTFILES= authelia-${DISTVERSIONFULL}-public_html${EXTRACT_SUFX}:public_html #
MAINTAINER= yuri@FreeBSD.org
COMMENT= Single sign-on multi-factor portal for web apps
-WWW= https://www.authelia.com/docs/
+WWW= https://www.authelia.com/
LICENSE= APACHE20
LICENSE_FILE= ${WRKSRC}/LICENSE
diff --git a/www/filebrowser/Makefile b/www/filebrowser/Makefile
index 58eefc1b7d46..c86880db65be 100644
--- a/www/filebrowser/Makefile
+++ b/www/filebrowser/Makefile
@@ -1,7 +1,6 @@
PORTNAME= filebrowser
DISTVERSIONPREFIX= v
-DISTVERSION= 2.32.0
-PORTREVISION= 1
+DISTVERSION= 2.33.0
CATEGORIES= www
MASTER_SITES= LOCAL/dtxdf/${PORTNAME}/
DISTFILES= ${PORTNAME}-${DISTVERSION}.frontend${EXTRACT_SUFX}
@@ -34,7 +33,7 @@ PLIST_SUB= GROUP=${GROUPS:[1]} \
# Run 'git checkout ${DISTVERSIONPREFIX}${DISTVERSION} && git rev-parse HEAD'
# in the File Browser repository to get the value of GITID.
-GITID= 3d6c5152fe22a4a47783253a3506a2930b7b6be3
+GITID= e9bb3dc243eb64b2a7da1bd17feb26bd83e06216
FILEBROWSER_USER= ${PORTNAME}
FILEBROWSER_GROUP= ${FILEBROWSER_USER}
diff --git a/www/filebrowser/distinfo b/www/filebrowser/distinfo
index c5f63b723742..d1d34e3bbb2e 100644
--- a/www/filebrowser/distinfo
+++ b/www/filebrowser/distinfo
@@ -1,7 +1,7 @@
-TIMESTAMP = 1749425548
-SHA256 (go/www_filebrowser/filebrowser-filebrowser-v2.32.0_GH0/filebrowser-2.32.0.frontend.tar.gz) = 23bbc7ed38c938c4898f7c32ee723e3b43b9da31376b94b1950368675d67b073
-SIZE (go/www_filebrowser/filebrowser-filebrowser-v2.32.0_GH0/filebrowser-2.32.0.frontend.tar.gz) = 2285999
-SHA256 (go/www_filebrowser/filebrowser-filebrowser-v2.32.0_GH0/go.mod) = cf1d0745e69a807fc30e7a90b7c25817bdd0480d0606d6ade04af3eb9fbc3a19
-SIZE (go/www_filebrowser/filebrowser-filebrowser-v2.32.0_GH0/go.mod) = 3047
-SHA256 (go/www_filebrowser/filebrowser-filebrowser-v2.32.0_GH0/filebrowser-filebrowser-v2.32.0_GH0.tar.gz) = 61e9de6b2d396614f45be477e5bb5aad189e7bb1155a3f88800e02421bd6cc2b
-SIZE (go/www_filebrowser/filebrowser-filebrowser-v2.32.0_GH0/filebrowser-filebrowser-v2.32.0_GH0.tar.gz) = 3817831
+TIMESTAMP = 1750457619
+SHA256 (go/www_filebrowser/filebrowser-filebrowser-v2.33.0_GH0/filebrowser-2.33.0.frontend.tar.gz) = c9c248a907ca8f4f57e45af639fc9ba55bd173864494a87c8c58dc35543ea0bd
+SIZE (go/www_filebrowser/filebrowser-filebrowser-v2.33.0_GH0/filebrowser-2.33.0.frontend.tar.gz) = 2296094
+SHA256 (go/www_filebrowser/filebrowser-filebrowser-v2.33.0_GH0/go.mod) = 4eea2de6124a6eb2615ddf55b56dfa291dc0f9b2fd40f12c277164e60b612a7c
+SIZE (go/www_filebrowser/filebrowser-filebrowser-v2.33.0_GH0/go.mod) = 2796
+SHA256 (go/www_filebrowser/filebrowser-filebrowser-v2.33.0_GH0/filebrowser-filebrowser-v2.33.0_GH0.tar.gz) = ade96494e7a9e6381feec8b3bb3729287ca3bc449298ab63022a83be0f73ccba
+SIZE (go/www_filebrowser/filebrowser-filebrowser-v2.33.0_GH0/filebrowser-filebrowser-v2.33.0_GH0.tar.gz) = 4324098
diff --git a/www/forgejo/Makefile b/www/forgejo/Makefile
index ffc9ae4c1ee5..a54af4448ce2 100644
--- a/www/forgejo/Makefile
+++ b/www/forgejo/Makefile
@@ -1,7 +1,6 @@
PORTNAME= forgejo
DISTVERSIONPREFIX= v
-DISTVERSION= 11.0.1
-PORTREVISION= 1
+DISTVERSION= 11.0.2
CATEGORIES= www
MASTER_SITES= https://codeberg.org/forgejo/forgejo/releases/download/${DISTVERSIONPREFIX}${DISTVERSION}/
DISTNAME= forgejo-src-${DISTVERSION}
@@ -56,8 +55,8 @@ DAEMONARGS= -f
SUB_LIST+= DAEMONARGS="${DAEMONARGS}"
SSP_UNSAFE= true
-LDFLAGS+= "'-X "code.gitea.io/gitea/modules/setting.CustomPath=${PREFIX}/etc/forgejo"'"
-LDFLAGS+= "'-X "code.gitea.io/gitea/modules/setting.AppWorkPath=${PREFIX}/share/forgejo"'"
+LDFLAGS+= "'-X "forgejo.org/modules/setting.CustomPath=${PREFIX}/etc/forgejo"'" \
+ "'-X "forgejo.org/modules/setting.AppWorkPath=${PREFIX}/share/forgejo"'"
MAKE_ARGS= GOPATH=${WRKDIR} \
TAGS="${GO_TAGS}" \
GOFLAGS="-buildvcs=false"
diff --git a/www/forgejo/distinfo b/www/forgejo/distinfo
index 0e31c7002884..bc1a84164f32 100644
--- a/www/forgejo/distinfo
+++ b/www/forgejo/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1746741570
-SHA256 (forgejo-src-11.0.1.tar.gz) = b8ae645099821e978d096888d17d7e969b05b2b7576ae1d0f4850238305fedd6
-SIZE (forgejo-src-11.0.1.tar.gz) = 55352620
+TIMESTAMP = 1750496838
+SHA256 (forgejo-src-11.0.2.tar.gz) = de6646704769ae69e80feeb8aef0ae6fffad84602fc2d003a49c903e36f9d06d
+SIZE (forgejo-src-11.0.2.tar.gz) = 55477978
diff --git a/www/forgejo/files/app.ini.sample.in b/www/forgejo/files/app.ini.sample.in
index d625a9ebabab..b54e756578be 100644
--- a/www/forgejo/files/app.ini.sample.in
+++ b/www/forgejo/files/app.ini.sample.in
@@ -11,8 +11,9 @@
# choosing, INTERNAL_TOKEN is a 64-byte random number in BASE64 encoding,
# JWT_SECRET is a 32-byte random number in BASE64 encoding.
#
-# You can generate the token using for example:
-# openssl rand -base64 64
+# You can generate appropriate values using:
+# gitea generate secret [INTERNAL_TOKEN|JWT_SECRET|LFS_JWT_SECRET|SECRET_KEY]
+# and then copy that output to the appropriate place in this file.
#
# You can let Forgejo add these to the config for you; you need to make
# app.ini writeable by the git user.
diff --git a/www/forgejo/files/forgejo.in b/www/forgejo/files/forgejo.in
index 2879239c7d68..026fed82b0b2 100644
--- a/www/forgejo/files/forgejo.in
+++ b/www/forgejo/files/forgejo.in
@@ -52,7 +52,8 @@ forgejo_start() {
forgejo_prestart() {
if checkyesno forgejo_configcheck_enable; then
- if su -m ${forgejo_user} -c "%%PREFIX%%/sbin/${name} doctor check >/dev/null"; then
+ if su -m ${forgejo_user} -c "FORGEJO_CUSTOM=${forgejo_custom} \
+ %%PREFIX%%/sbin/${name} doctor check >/dev/null"; then
else
echo "cannot start ${name} because of configuration errors. Run" >&2
echo " su -m git -c '${name} doctor check'" >&2
diff --git a/www/forgejo/files/patch-pam b/www/forgejo/files/patch-pam
deleted file mode 100644
index 78e5366e887b..000000000000
--- a/www/forgejo/files/patch-pam
+++ /dev/null
@@ -1,115 +0,0 @@
---- vendor/github.com/msteinert/pam/v2/errors.go.orig 2025-05-02 07:02:58 UTC
-+++ vendor/github.com/msteinert/pam/v2/errors.go
-@@ -77,15 +77,6 @@ const (
- ErrAuthtokExpired Error = C.PAM_AUTHTOK_EXPIRED
- // ErrModuleUnknown indicates a module is not known.
- ErrModuleUnknown Error = C.PAM_MODULE_UNKNOWN
-- // ErrBadItem indicates a bad item passed to pam_*_item().
-- ErrBadItem Error = C.PAM_BAD_ITEM
-- // ErrConvAgain indicates a conversation function is event driven and data
-- // is not available yet.
-- ErrConvAgain Error = C.PAM_CONV_AGAIN
-- // ErrIncomplete indicates to please call this function again to complete
-- // authentication stack. Before calling again, verify that conversation
-- // is completed.
-- ErrIncomplete Error = C.PAM_INCOMPLETE
- )
-
- // Error returns the error message for the given status.
---- vendor/github.com/msteinert/pam/v2/errors_linux.go.orig 1970-01-01 00:00:00 UTC
-+++ vendor/github.com/msteinert/pam/v2/errors_linux.go
-@@ -0,0 +1,21 @@
-+//go:build linux
-+
-+package pam
-+
-+/*
-+#include <security/pam_appl.h>
-+*/
-+import "C"
-+
-+// Pam Return types
-+const (
-+ // ErrBadItem indicates a bad item passed to pam_*_item().
-+ ErrBadItem Error = C.PAM_BAD_ITEM
-+ // ErrConvAgain indicates a conversation function is event driven and data
-+ // is not available yet.
-+ ErrConvAgain Error = C.PAM_CONV_AGAIN
-+ // ErrIncomplete indicates to please call this function again to complete
-+ // authentication stack. Before calling again, verify that conversation
-+ // is completed.
-+ ErrIncomplete Error = C.PAM_INCOMPLETE
-+)
---- vendor/github.com/msteinert/pam/v2/transaction.c.orig 2025-05-02 07:02:58 UTC
-+++ vendor/github.com/msteinert/pam/v2/transaction.c
-@@ -47,15 +47,30 @@ void init_pam_conv(struct pam_conv *conv, uintptr_t ap
- conv->appdata_ptr = (void *)appdata;
- }
-
-+#ifdef OPENPAM
-+int pam_start_confdir(const char *service_name, const char *user, const struct pam_conv *pam_conversation,
-+ const char *confdir, pam_handle_t **pamh)
-+{
-+ if (pamh != NULL)
-+ *pamh = NULL;
-+
-+ return PAM_SYSTEM_ERR;
-+}
-+#else
- // pam_start_confdir is a recent PAM api to declare a confdir (mostly for
- // tests) weaken the linking dependency to detect if it’s present.
- int pam_start_confdir(const char *service_name, const char *user, const struct pam_conv *pam_conversation,
- const char *confdir, pam_handle_t **pamh) __attribute__((weak));
-+#endif
-
- int check_pam_start_confdir(void)
- {
-+#ifdef OPENPAM
-+ return 1;
-+#else
- if (pam_start_confdir == NULL)
- return 1;
-
- return 0;
-+#endif
- }
---- vendor/github.com/msteinert/pam/v2/transaction.go.orig 2025-05-02 07:02:58 UTC
-+++ vendor/github.com/msteinert/pam/v2/transaction.go
-@@ -257,14 +257,6 @@ const (
- Ruser Item = C.PAM_RUSER
- // UserPrompt is the string use to prompt for a username.
- UserPrompt Item = C.PAM_USER_PROMPT
-- // FailDelay is the app supplied function to override failure delays.
-- FailDelay Item = C.PAM_FAIL_DELAY
-- // Xdisplay is the X display name
-- Xdisplay Item = C.PAM_XDISPLAY
-- // Xauthdata is the X server authentication data.
-- Xauthdata Item = C.PAM_XAUTHDATA
-- // AuthtokType is the type for pam_get_authtok
-- AuthtokType Item = C.PAM_AUTHTOK_TYPE
- )
-
- // SetItem sets a PAM information item.
---- vendor/github.com/msteinert/pam/v2/transaction_linux.go.orig 1970-01-01 00:00:00 UTC
-+++ vendor/github.com/msteinert/pam/v2/transaction_linux.go
-@@ -0,0 +1,20 @@
-+//go:build linux
-+
-+package pam
-+
-+/*
-+#include <security/pam_appl.h>
-+*/
-+import "C"
-+
-+// PAM Item types.
-+const (
-+ // FailDelay is the app supplied function to override failure delays.
-+ FailDelay Item = C.PAM_FAIL_DELAY
-+ // Xdisplay is the X display name
-+ Xdisplay Item = C.PAM_XDISPLAY
-+ // Xauthdata is the X server authentication data.
-+ Xauthdata Item = C.PAM_XAUTHDATA
-+ // AuthtokType is the type for pam_get_authtok
-+ AuthtokType Item = C.PAM_AUTHTOK_TYPE
-+)
diff --git a/www/gitea/Makefile b/www/gitea/Makefile
index 37cb50915293..b378c3cc68f3 100644
--- a/www/gitea/Makefile
+++ b/www/gitea/Makefile
@@ -1,7 +1,6 @@
PORTNAME= gitea
DISTVERSIONPREFIX= v
-DISTVERSION= 1.23.8
-PORTREVISION= 1
+DISTVERSION= 1.24.2
CATEGORIES= www
MASTER_SITES= https://github.com/go-gitea/gitea/releases/download/${DISTVERSIONPREFIX}${DISTVERSION}/ \
https://dl.gitea.io/gitea/${DISTVERSION}/
@@ -68,13 +67,14 @@ do-install:
# Go binary is statically linked and cannot be stripped, so use
# INSTALL_SCRIPT.
${INSTALL_SCRIPT} ${WRKSRC}/gitea ${STAGEDIR}${PREFIX}/sbin
- @${MKDIR} ${STAGEDIR}${ETCDIR}/conf
+ ${MKDIR} ${STAGEDIR}${ETCDIR}/conf \
+ ${STAGEDIR}${DATADIR} \
+ ${STAGEDIR}/var/db/gitea \
+ ${STAGEDIR}/var/db/gitea/data \
+ ${STAGEDIR}/var/db/gitea/gitea-repositories \
+ ${STAGEDIR}/var/log/gitea
${INSTALL_DATA} ${WRKDIR}/app.ini.sample ${STAGEDIR}${ETCDIR}/conf/app.ini.sample
${INSTALL_DATA} ${WRKSRC}/custom/conf/app.example.ini ${STAGEDIR}${ETCDIR}/conf/app.ini.defaults
- ${MKDIR} ${STAGEDIR}${DATADIR}
- ${MKDIR} ${STAGEDIR}/var/db/gitea
- ${MKDIR} ${STAGEDIR}/var/db/gitea/gitea-repositories
- ${MKDIR} ${STAGEDIR}/var/log/gitea
do-install-BINDATA-off:
cd ${WRKSRC} && ${COPYTREE_SHARE} "options public templates" ${STAGEDIR}${DATADIR}
diff --git a/www/gitea/distinfo b/www/gitea/distinfo
index cff6db15cdc5..e0a6d99a3873 100644
--- a/www/gitea/distinfo
+++ b/www/gitea/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1747455860
-SHA256 (gitea-src-1.23.8.tar.gz) = 0ff96c1b7cc0960b5b9d34bd978cedc0f856a168654838bdef3551621f049717
-SIZE (gitea-src-1.23.8.tar.gz) = 55482190
+TIMESTAMP = 1750493495
+SHA256 (gitea-src-1.24.2.tar.gz) = 1015496a01a95821faaefce1d422ecdd98f62bc609efbeb43608772612ceeeff
+SIZE (gitea-src-1.24.2.tar.gz) = 51769357
diff --git a/www/gitea/pkg-plist b/www/gitea/pkg-plist
index acab89e7b63f..e7dfdadde2ad 100644
--- a/www/gitea/pkg-plist
+++ b/www/gitea/pkg-plist
@@ -2,5 +2,6 @@
%%ETCDIR%%/conf/app.ini.defaults
sbin/gitea
@dir(git,git,755) /var/db/gitea
+@dir(git,git,755) /var/db/gitea/data
@dir(git,git,755) /var/db/gitea/gitea-repositories
@dir(git,git,755) /var/log/gitea
diff --git a/www/pocket-id/Makefile b/www/pocket-id/Makefile
new file mode 100644
index 000000000000..641ca2d03c15
--- /dev/null
+++ b/www/pocket-id/Makefile
@@ -0,0 +1,39 @@
+PORTNAME= pocket-id
+DISTVERSIONPREFIX= v
+DISTVERSION= 1.4.0
+CATEGORIES= www
+MASTER_SITES= LOCAL/dtxdf/${PORTNAME}/
+DISTFILES= ${PORTNAME}-${DISTVERSION}.frontend${EXTRACT_SUFX}
+
+MAINTAINER= dtxdf@FreeBSD.org
+COMMENT= OIDC provider that allows users to authenticate with their passkeys
+WWW= https://pocket-id.org
+
+LICENSE= BSD2CLAUSE
+
+USES= go:modules
+USE_GITHUB= yes
+USE_RC_SUBR= ${PORTNAME}
+
+GO_MOD_DIST= github
+GO_MODULE= https://github.com/pocket-id/${PORTNAME}
+GO_TARGET= ./cmd:${PORTNAME}
+GO_BUILDFLAGS= -ldflags "-X github.com/pocket-id/pocket-id/backend/internal/common.Version=${DISTVERSION} -buildid=${DISTVERSION}"
+
+SUB_FILES= pkg-message
+SUB_LIST= USER=${USERS:[1]}
+
+WRKSRC_SUBDIR= backend
+
+USERS= ${POCKET_ID_USER}
+GROUPS= ${POCKET_ID_GROUP}
+
+PLIST_FILES= bin/${PORTNAME}
+
+POCKET_ID_USER= ${PORTNAME}
+POCKET_ID_GROUP= ${POCKET_ID_USER}
+
+pre-build:
+ @cd ${WRKDIR}/pocket-id-frontend && ${COPYTREE_SHARE} . ${WRKSRC}/frontend/dist
+
+.include <bsd.port.mk>
diff --git a/www/pocket-id/distinfo b/www/pocket-id/distinfo
new file mode 100644
index 000000000000..dea750785956
--- /dev/null
+++ b/www/pocket-id/distinfo
@@ -0,0 +1,7 @@
+TIMESTAMP = 1750475934
+SHA256 (go/www_pocket-id/pocket-id-pocket-id-v1.4.0_GH0/pocket-id-1.4.0.frontend.tar.gz) = 28d9a1e390d4caa1d210fb1cd36c2f2839d89e82905e88953847b18a25aeb44d
+SIZE (go/www_pocket-id/pocket-id-pocket-id-v1.4.0_GH0/pocket-id-1.4.0.frontend.tar.gz) = 940695
+SHA256 (go/www_pocket-id/pocket-id-pocket-id-v1.4.0_GH0/go.mod) = 746b88f292ef6becb08abe2aa09185c44bf44d7679e281534821b0d8cfc4828c
+SIZE (go/www_pocket-id/pocket-id-pocket-id-v1.4.0_GH0/go.mod) = 6612
+SHA256 (go/www_pocket-id/pocket-id-pocket-id-v1.4.0_GH0/pocket-id-pocket-id-v1.4.0_GH0.tar.gz) = ad76903ab02cd739fb3171df8d18a3192b131dc55dd52fe223634c79d9d82f53
+SIZE (go/www_pocket-id/pocket-id-pocket-id-v1.4.0_GH0/pocket-id-pocket-id-v1.4.0_GH0.tar.gz) = 5506002
diff --git a/www/pocket-id/files/pkg-message.in b/www/pocket-id/files/pkg-message.in
new file mode 100644
index 000000000000..f97cc825952b
--- /dev/null
+++ b/www/pocket-id/files/pkg-message.in
@@ -0,0 +1,17 @@
+[
+{ type: install
+ message: <<EOM
+Pocket ID is installed
+
+1) Configure it in %%PREFIX%%/etc/pocket-id.env
+
+2) Enable it with
+
+ sysrc pocket_id_enable=YES
+
+3) Start it with
+
+ service pocket-id start
+EOM
+}
+]
diff --git a/www/pocket-id/files/pocket-id.in b/www/pocket-id/files/pocket-id.in
new file mode 100644
index 000000000000..04a26a82a74e
--- /dev/null
+++ b/www/pocket-id/files/pocket-id.in
@@ -0,0 +1,36 @@
+#!/bin/sh
+
+# PROVIDE: pocket_id
+# REQUIRE: LOGIN
+# KEYWORD: shutdown
+#
+# Configuration settings for pocket-id in /etc/rc.conf
+#
+# pocket_id_enable (bool): Enable pocket-id. (Default=NO)
+# pocket_id_env_file (str): Path containing the environment variables
+# to be used by pocket-id. (Default: /usr/local/etc/pocket-id.env)
+# pocket_id_logfile (str): Log file used to store the pocket-id's output. (Default: /var/log/pocket-id.log)
+# pocket_id_pidfile (str): File used by pocket-id to store the process ID. (Default: /var/run/pocket-id.pid)
+# pocket_id_runas (str): User to run pocket-id as. (Default: %%USER%%)
+
+. /etc/rc.subr
+
+name="pocket_id"
+desc="OIDC provider that allows users to authenticate with their passkeys"
+rcvar="pocket_id_enable"
+
+load_rc_config $name
+
+: ${pocket_id_enable:="NO"}
+: ${pocket_id_env_file:="/usr/local/etc/pocket-id.env"}
+: ${pocket_id_logfile:="/var/log/pocket-id.log"}
+: ${pocket_id_pidfile:="/var/run/pocket-id.pid"}
+: ${pocket_id_runas:="%%USER%%"}
+
+pocket_id_chdir="/var/db/pocket-id"
+pidfile="${pocket_id_pidfile}"
+procname="/usr/local/bin/pocket-id"
+command="/usr/sbin/daemon"
+command_args="-o '${pocket_id_logfile}' -p '${pidfile}' -u '${pocket_id_runas}' -t '${desc}' -- '${procname}'"
+
+run_rc_command "$1"
diff --git a/www/pocket-id/pkg-descr b/www/pocket-id/pkg-descr
new file mode 100644
index 000000000000..904737283fae
--- /dev/null
+++ b/www/pocket-id/pkg-descr
@@ -0,0 +1,13 @@
+Pocket ID is a simple OIDC provider that allows users to authenticate
+with their passkeys to your services.
+
+The goal of Pocket ID is to be a simple and easy-to-use. There are
+other self-hosted OIDC providers like Keycloak or ORY Hydra but
+they are often too complex for simple use cases.
+
+Additionally, what makes Pocket ID special is that it only supports
+passkey authentication, which means you don't need a password. Some
+people might not like this idea at first, but I believe passkeys
+are the future, and once you try them, you'll love them. For example,
+you can now use a physical Yubikey to sign in to all your self-hosted
+services easily and securely
diff --git a/www/py-cherrypy/Makefile b/www/py-cherrypy/Makefile
index d66058448b15..4af95a0c9653 100644
--- a/www/py-cherrypy/Makefile
+++ b/www/py-cherrypy/Makefile
@@ -1,14 +1,12 @@
PORTNAME= cherrypy
-PORTVERSION= 18.8.0
-PORTREVISION= 2
+PORTVERSION= 18.10.0
CATEGORIES= www python
MASTER_SITES= PYPI
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
-DISTNAME= CherryPy-${PORTVERSION}
MAINTAINER= nivit@FreeBSD.org
COMMENT= Pythonic, object-oriented web development framework
-WWW= http://www.cherrypy.org/
+WWW= https://www.cherrypy.dev/
LICENSE= BSD3CLAUSE
@@ -20,8 +18,7 @@ RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}cheroot>=8.2.1:www/py-cheroot@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}portend>=2.1.1:net/py-portend@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}six>=1.11.0:devel/py-six@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}zc.lockfile>0:devel/py-zc.lockfile@${PY_FLAVOR}
-TEST_DEPENDS= ${PYTHON_PKGNAMEPREFIX}codecov>=2.1.13:devel/py-codecov@${PY_FLAVOR} \
- ${PYTHON_PKGNAMEPREFIX}coverage>=7.2.2:devel/py-coverage@${PY_FLAVOR} \
+TEST_DEPENDS= ${PYTHON_PKGNAMEPREFIX}coverage>=7.2.2:devel/py-coverage@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}objgraph>=3.5.0:devel/py-objgraph@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}path.py>0:devel/py-path.py@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}pytest-cov>=2.9.0:devel/py-pytest-cov@${PY_FLAVOR} \
diff --git a/www/py-cherrypy/distinfo b/www/py-cherrypy/distinfo
index cb3dafdf9fae..c97e7ef88971 100644
--- a/www/py-cherrypy/distinfo
+++ b/www/py-cherrypy/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1686603836
-SHA256 (CherryPy-18.8.0.tar.gz) = 9b48cfba8a2f16d5b6419cc657e6d51db005ba35c5e3824e4728bb03bbc7ef9b
-SIZE (CherryPy-18.8.0.tar.gz) = 622679
+TIMESTAMP = 1750497658
+SHA256 (cherrypy-18.10.0.tar.gz) = 6c70e78ee11300e8b21c0767c542ae6b102a49cac5cfd4e3e313d7bb907c5891
+SIZE (cherrypy-18.10.0.tar.gz) = 633708
diff --git a/www/py-dj52-channels/Makefile b/www/py-dj52-channels/Makefile
new file mode 100644
index 000000000000..e8f8ced587d3
--- /dev/null
+++ b/www/py-dj52-channels/Makefile
@@ -0,0 +1,25 @@
+PORTNAME= channels
+PORTVERSION= 4.2.0
+CATEGORIES= www python
+MASTER_SITES= PYPI
+PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}dj52-
+
+MAINTAINER= sunpoet@FreeBSD.org
+COMMENT= Brings async, event-driven capabilities to Django
+WWW= https://channels.readthedocs.io/en/latest/ \
+ https://github.com/django/channels
+
+LICENSE= BSD3CLAUSE
+LICENSE_FILE= ${WRKSRC}/LICENSE
+
+BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}setuptools>=0:devel/py-setuptools@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}wheel>=0:devel/py-wheel@${PY_FLAVOR}
+RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}asgiref>=3.6.0<4:www/py-asgiref@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}django52>=4.2:www/py-django52@${PY_FLAVOR}
+
+USES= python:3.10+
+USE_PYTHON= autoplist concurrent pep517
+
+NO_ARCH= yes
+
+.include <bsd.port.mk>
diff --git a/www/py-dj52-channels/distinfo b/www/py-dj52-channels/distinfo
new file mode 100644
index 000000000000..cfa8d2a5103d
--- /dev/null
+++ b/www/py-dj52-channels/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1732202562
+SHA256 (channels-4.2.0.tar.gz) = d9e707487431ba5dbce9af982970dab3b0efd786580fadb99e45dca5e39fdd59
+SIZE (channels-4.2.0.tar.gz) = 26554
diff --git a/www/py-dj52-channels/pkg-descr b/www/py-dj52-channels/pkg-descr
new file mode 100644
index 000000000000..01296180bc27
--- /dev/null
+++ b/www/py-dj52-channels/pkg-descr
@@ -0,0 +1,4 @@
+Channels augments Django to bring WebSocket, long-poll HTTP, task offloading and
+other async support to your code, using familiar Django design patterns and a
+flexible underlying framework that lets you not only customize behaviours but
+also write support for your own protocols and needs.
diff --git a/www/py-dj52-django-auth-ldap/Makefile b/www/py-dj52-django-auth-ldap/Makefile
new file mode 100644
index 000000000000..2ddf3b629a3a
--- /dev/null
+++ b/www/py-dj52-django-auth-ldap/Makefile
@@ -0,0 +1,40 @@
+PORTNAME= django-auth-ldap
+DISTVERSION= 5.1.0
+CATEGORIES= www security python
+MASTER_SITES= PYPI
+PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}dj52-
+DISTNAME= django_auth_ldap-${DISTVERSION}
+
+MAINTAINER= kai@FreeBSD.org
+COMMENT= LDAP integration for django.contrib.auth
+WWW= https://github.com/django-auth-ldap/django-auth-ldap
+
+LICENSE= BSD2CLAUSE
+LICENSE_FILE= ${WRKSRC}/LICENSE
+
+BUILD_DEPENDS= ${PY_SETUPTOOLS} \
+ ${PYTHON_PKGNAMEPREFIX}setuptools-scm>=3.4:devel/py-setuptools-scm@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}wheel>0:devel/py-wheel@${PY_FLAVOR}
+RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}django52>=4.2:www/py-django52@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}python-ldap>=3.1:net/py-python-ldap@${PY_FLAVOR}
+
+USES= python:3.10+
+USE_PYTHON= autoplist concurrent pep517
+
+NO_ARCH= yes
+PORTDOCS= *
+CONFLICTS_INSTALL= ${PYTHON_PKGNAMEPREFIX}*${PORTNAME}
+
+OPTIONS_DEFINE= DOCS
+DOCS_BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}sphinx>=0,1:textproc/py-sphinx@${PY_FLAVOR}
+
+post-build-DOCS-on:
+ ${LOCALBASE}/bin/sphinx-build-${PYTHON_VER} -d ${WRKDIR} -b html ${WRKSRC}/docs ${WRKSRC}/build/sphinx/html
+
+post-install-DOCS-on:
+ @${MKDIR} ${STAGEDIR}${DOCSDIR}
+ (cd ${WRKSRC}/build/sphinx/html && \
+ ${COPYTREE_SHARE} . ${STAGEDIR}${DOCSDIR} \
+ "! -name .buildinfo -and ! -name objects.inv")
+
+.include <bsd.port.mk>
diff --git a/www/py-dj52-django-auth-ldap/distinfo b/www/py-dj52-django-auth-ldap/distinfo
new file mode 100644
index 000000000000..2ae0a3f4baa0
--- /dev/null
+++ b/www/py-dj52-django-auth-ldap/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1730477310
+SHA256 (django_auth_ldap-5.1.0.tar.gz) = 9c607e8d9c53cf2a0ccafbe0acfc33eb1d1fd474c46ec52d30aee0dca1da9668
+SIZE (django_auth_ldap-5.1.0.tar.gz) = 55059
diff --git a/www/py-dj52-django-auth-ldap/files/patch-docs_conf.py b/www/py-dj52-django-auth-ldap/files/patch-docs_conf.py
new file mode 100644
index 000000000000..d41916245ebc
--- /dev/null
+++ b/www/py-dj52-django-auth-ldap/files/patch-docs_conf.py
@@ -0,0 +1,20 @@
+Avoid the download of various intersphinx inventories during build. Only two
+intersphinx mappings are used and the documentation can be built/used without
+them.
+
+--- docs/conf.py.orig 2022-06-12 10:26:47 UTC
++++ docs/conf.py
+@@ -188,13 +188,3 @@ texinfo_documents = [
+ # -- Extension configuration -------------------------------------------------
+
+ # -- Options for intersphinx extension ---------------------------------------
+-
+-intersphinx_mapping = {
+- "python": ("https://docs.python.org/3/", None),
+- "django": (
+- "https://docs.djangoproject.com/en/stable/",
+- "https://docs.djangoproject.com/en/stable/_objects/",
+- ),
+- "pythonldap": ("https://www.python-ldap.org/en/latest/", None),
+- "tox": ("https://tox.wiki/en/latest/", None),
+-}
diff --git a/www/py-dj52-django-auth-ldap/pkg-descr b/www/py-dj52-django-auth-ldap/pkg-descr
new file mode 100644
index 000000000000..390903dba8ac
--- /dev/null
+++ b/www/py-dj52-django-auth-ldap/pkg-descr
@@ -0,0 +1,4 @@
+This is a Django authentication backend that authenticates against an LDAP
+service. Configuration can be as simple as a single distinguished name template,
+but there are many rich configuration options for working with users, groups,
+and permissions.
diff --git a/www/py-dj52-django-choices-field/Makefile b/www/py-dj52-django-choices-field/Makefile
new file mode 100644
index 000000000000..355a02ed97cb
--- /dev/null
+++ b/www/py-dj52-django-choices-field/Makefile
@@ -0,0 +1,24 @@
+PORTNAME= django-choices-field
+DISTVERSION= 2.3.0
+CATEGORIES= www python
+MASTER_SITES= PYPI
+PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}dj52-
+DISTNAME= django_choices_field-${DISTVERSION}
+
+MAINTAINER= kai@FreeBSD.org
+COMMENT= Django field that set/get TextChoices/IntegerChoices enumerations
+WWW= https://github.com/bellini666/django-choices-field
+
+LICENSE= MIT
+LICENSE_FILE= ${WRKSRC}/LICENSE
+
+BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}poetry-core>=1.0.0:devel/py-poetry-core@${PY_FLAVOR}
+RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}django52>=3.2:www/py-django52@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}typing-extensions>=4.0.0:devel/py-typing-extensions@${PY_FLAVOR}
+
+USES= python:3.10+
+USE_PYTHON= autoplist pep517
+
+NO_ARCH= yes
+
+.include <bsd.port.mk>
diff --git a/www/py-dj52-django-choices-field/distinfo b/www/py-dj52-django-choices-field/distinfo
new file mode 100644
index 000000000000..7f61f9ac7dde
--- /dev/null
+++ b/www/py-dj52-django-choices-field/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1711885476
+SHA256 (django_choices_field-2.3.0.tar.gz) = bb0c85c79737ab98bfb9c0d9ddf98010d612c0585be767890e25fd192c3d1694
+SIZE (django_choices_field-2.3.0.tar.gz) = 6448
diff --git a/www/py-dj52-django-choices-field/pkg-descr b/www/py-dj52-django-choices-field/pkg-descr
new file mode 100644
index 000000000000..3a855539fca9
--- /dev/null
+++ b/www/py-dj52-django-choices-field/pkg-descr
@@ -0,0 +1,2 @@
+This package provides a Django field that set/get the "TextChoices" and
+"IntegerChoices" enumerations.
diff --git a/www/py-dj52-django-cors-headers/Makefile b/www/py-dj52-django-cors-headers/Makefile
new file mode 100644
index 000000000000..ede2fbb0079e
--- /dev/null
+++ b/www/py-dj52-django-cors-headers/Makefile
@@ -0,0 +1,26 @@
+PORTNAME= django-cors-headers
+DISTVERSION= 4.7.0
+CATEGORIES= www python
+MASTER_SITES= PYPI
+PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}dj52-
+DISTNAME= django_cors_headers-${DISTVERSION}
+
+MAINTAINER= kai@FreeBSD.org
+COMMENT= Handles server headers required for Cross-Origin Resource Sharing
+WWW= https://github.com/adamchainz/django-cors-headers
+
+LICENSE= MIT
+LICENSE_FILE= ${WRKSRC}/LICENSE
+
+BUILD_DEPENDS= ${PY_SETUPTOOLS} \
+ ${PYTHON_PKGNAMEPREFIX}wheel>=0:devel/py-wheel@${PY_FLAVOR}
+RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}django52>=4.2:www/py-django52@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}asgiref>=3.6:www/py-asgiref@${PY_FLAVOR}
+
+USES= python:3.10+
+USE_PYTHON= autoplist pep517
+
+NO_ARCH= yes
+CONFLICTS_INSTALL= ${PYTHON_PKGNAMEPREFIX}*${PORTNAME}
+
+.include <bsd.port.mk>
diff --git a/www/py-dj52-django-cors-headers/distinfo b/www/py-dj52-django-cors-headers/distinfo
new file mode 100644
index 000000000000..ea513ae6604c
--- /dev/null
+++ b/www/py-dj52-django-cors-headers/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1739187247
+SHA256 (django_cors_headers-4.7.0.tar.gz) = 6fdf31bf9c6d6448ba09ef57157db2268d515d94fc5c89a0a1028e1fc03ee52b
+SIZE (django_cors_headers-4.7.0.tar.gz) = 21037
diff --git a/www/py-dj52-django-cors-headers/pkg-descr b/www/py-dj52-django-cors-headers/pkg-descr
new file mode 100644
index 000000000000..9ba1bc6bd1a8
--- /dev/null
+++ b/www/py-dj52-django-cors-headers/pkg-descr
@@ -0,0 +1,2 @@
+A Django App that adds CORS (Cross-Origin Resource Sharing) headers to
+responses.
diff --git a/www/py-dj52-django-debug-toolbar/Makefile b/www/py-dj52-django-debug-toolbar/Makefile
new file mode 100644
index 000000000000..62cdf47b2a83
--- /dev/null
+++ b/www/py-dj52-django-debug-toolbar/Makefile
@@ -0,0 +1,27 @@
+PORTNAME= django-debug-toolbar
+PORTVERSION= 5.2.0
+CATEGORIES= www python
+MASTER_SITES= PYPI
+PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}dj52-
+DISTNAME= django_debug_toolbar-${PORTVERSION}
+
+MAINTAINER= sunpoet@FreeBSD.org
+COMMENT= Configurable set of panels to display debug information
+WWW= https://django-debug-toolbar.readthedocs.io/en/latest/ \
+ https://github.com/django-commons/django-debug-toolbar
+
+LICENSE= BSD3CLAUSE
+LICENSE_FILE= ${WRKSRC}/LICENSE
+
+BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}hatchling>=0:devel/py-hatchling@${PY_FLAVOR}
+RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}django52>=4.2.9:www/py-django52@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}sqlparse>=0.2.0:databases/py-sqlparse@${PY_FLAVOR}
+
+USES= python:3.10+
+USE_PYTHON= autoplist concurrent pep517
+
+NO_ARCH= yes
+
+CONFLICTS_INSTALL= ${PYTHON_PKGNAMEPREFIX}*django-debug-toolbar
+
+.include <bsd.port.mk>
diff --git a/www/py-dj52-django-debug-toolbar/distinfo b/www/py-dj52-django-debug-toolbar/distinfo
new file mode 100644
index 000000000000..130df8cee123
--- /dev/null
+++ b/www/py-dj52-django-debug-toolbar/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1747327034
+SHA256 (django_debug_toolbar-5.2.0.tar.gz) = 9e7f0145e1a1b7d78fcc3b53798686170a5b472d9cf085d88121ff823e900821
+SIZE (django_debug_toolbar-5.2.0.tar.gz) = 297901
diff --git a/www/py-dj52-django-debug-toolbar/pkg-descr b/www/py-dj52-django-debug-toolbar/pkg-descr
new file mode 100644
index 000000000000..e62114e4b61f
--- /dev/null
+++ b/www/py-dj52-django-debug-toolbar/pkg-descr
@@ -0,0 +1,3 @@
+The Django Debug Toolbar is a configurable set of panels that display various
+debug information about the current request/response and when clicked, display
+more details about the panel's content.
diff --git a/www/py-dj52-django-filter/Makefile b/www/py-dj52-django-filter/Makefile
new file mode 100644
index 000000000000..c999af31c25c
--- /dev/null
+++ b/www/py-dj52-django-filter/Makefile
@@ -0,0 +1,25 @@
+PORTNAME= django-filter
+DISTVERSION= 25.1
+CATEGORIES= www python
+MASTER_SITES= PYPI
+PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}dj52-
+DISTNAME= django_filter-${DISTVERSION}
+
+MAINTAINER= kai@FreeBSD.org
+COMMENT= Dynamic filtering for querysets with Django
+WWW= https://github.com/carltongibson/django-filter
+
+LICENSE= BSD3CLAUSE
+LICENSE_FILE= ${WRKSRC}/LICENSE
+
+BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}flit-core>=3.2<4:devel/py-flit-core@${PY_FLAVOR}
+RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}django52>=4.2:www/py-django52@${PY_FLAVOR}
+
+USES= python:3.10+
+USE_PYTHON= autoplist pep517
+
+CONFLICTS_INSTALL= ${PYTHON_PKGNAMEPREFIX}*${PORTNAME}
+
+NO_ARCH= yes
+
+.include <bsd.port.mk>
diff --git a/www/py-dj52-django-filter/distinfo b/www/py-dj52-django-filter/distinfo
new file mode 100644
index 000000000000..1fe436b6ac10
--- /dev/null
+++ b/www/py-dj52-django-filter/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1740212287
+SHA256 (django_filter-25.1.tar.gz) = 1ec9eef48fa8da1c0ac9b411744b16c3f4c31176c867886e4c48da369c407153
+SIZE (django_filter-25.1.tar.gz) = 143021
diff --git a/www/py-dj52-django-filter/pkg-descr b/www/py-dj52-django-filter/pkg-descr
new file mode 100644
index 000000000000..089f799caa3e
--- /dev/null
+++ b/www/py-dj52-django-filter/pkg-descr
@@ -0,0 +1,2 @@
+Django-filter is a reusable Django application allowing users to declaratively
+add dynamic QuerySet filtering from URL parameters.
diff --git a/www/py-dj52-django-htmx/Makefile b/www/py-dj52-django-htmx/Makefile
new file mode 100644
index 000000000000..6dc8db82841e
--- /dev/null
+++ b/www/py-dj52-django-htmx/Makefile
@@ -0,0 +1,27 @@
+PORTNAME= django-htmx
+DISTVERSION= 1.23.0
+CATEGORIES= www python
+MASTER_SITES= PYPI
+PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}dj52-
+DISTNAME= django_htmx-${DISTVERSION}
+
+MAINTAINER= kai@FreeBSD.org
+COMMENT= Extensions for using Django with htmx
+WWW= https://github.com/adamchainz/django-htmx
+
+LICENSE= MIT
+LICENSE_FILE= ${WRKSRC}/LICENSE
+
+BUILD_DEPENDS= ${PY_SETUPTOOLS} \
+ ${PYTHON_PKGNAMEPREFIX}wheel>0:devel/py-wheel@${PY_FLAVOR}
+RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}django52>=4.2:www/py-django52@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}asgiref>=3.6:www/py-asgiref@${PY_FLAVOR}
+
+USES= python:3.10+
+USE_PYTHON= autoplist pep517
+
+CONFLICTS_INSTALL= ${PYTHON_PKGNAMEPREFIX}*${PORTNAME}
+
+NO_ARCH= yes
+
+.include <bsd.port.mk>
diff --git a/www/py-dj52-django-htmx/distinfo b/www/py-dj52-django-htmx/distinfo
new file mode 100644
index 000000000000..ff5b98d404fe
--- /dev/null
+++ b/www/py-dj52-django-htmx/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1742639003
+SHA256 (django_htmx-1.23.0.tar.gz) = 71e6242ac6bd32a0e14fcb12b340f901c9a924f0b4e9b461a5e6a6eea8d9c6dd
+SIZE (django_htmx-1.23.0.tar.gz) = 63450
diff --git a/www/py-dj52-django-htmx/pkg-descr b/www/py-dj52-django-htmx/pkg-descr
new file mode 100644
index 000000000000..9b84019de4a7
--- /dev/null
+++ b/www/py-dj52-django-htmx/pkg-descr
@@ -0,0 +1,3 @@
+This package offers extensions for using Django with htmx, a library that
+allows one to access modern browser features directly from HTML, rather than
+using JavaScript (see https://htmx.org/).
diff --git a/www/py-dj52-django-js-asset/Makefile b/www/py-dj52-django-js-asset/Makefile
new file mode 100644
index 000000000000..7e5d300ba127
--- /dev/null
+++ b/www/py-dj52-django-js-asset/Makefile
@@ -0,0 +1,25 @@
+PORTNAME= django-js-asset
+DISTVERSION= 3.1.2
+CATEGORIES= www python
+MASTER_SITES= PYPI
+PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}dj52-
+DISTNAME= django_js_asset-${DISTVERSION}
+
+MAINTAINER= kai@FreeBSD.org
+COMMENT= Insert script tags with additional attributes for django.forms.Media
+WWW= https://github.com/matthiask/django-js-asset
+
+LICENSE= BSD3CLAUSE
+LICENSE_FILE= ${WRKSRC}/LICENSE
+
+BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}hatchling>0:devel/py-hatchling@${PY_FLAVOR}
+RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}django52>=4.2:www/py-django52@${PY_FLAVOR}
+
+USES= python:3.10+
+USE_PYTHON= autoplist pep517
+
+CONFLICTS_INSTALL= ${PYTHON_PKGNAMEPREFIX}*${PORTNAME}
+
+NO_ARCH= yes
+
+.include <bsd.port.mk>
diff --git a/www/py-dj52-django-js-asset/distinfo b/www/py-dj52-django-js-asset/distinfo
new file mode 100644
index 000000000000..5d250a973b1e
--- /dev/null
+++ b/www/py-dj52-django-js-asset/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1741326981
+SHA256 (django_js_asset-3.1.2.tar.gz) = 1fc7584199ed1941ed7c8e7b87ca5524bb0f2ba941561d2a104e88ee9f07bedd
+SIZE (django_js_asset-3.1.2.tar.gz) = 9471
diff --git a/www/py-dj52-django-js-asset/pkg-descr b/www/py-dj52-django-js-asset/pkg-descr
new file mode 100644
index 000000000000..99b04e1534c9
--- /dev/null
+++ b/www/py-dj52-django-js-asset/pkg-descr
@@ -0,0 +1,2 @@
+Insert script tags with additional attributes (such as "id" and "data" for
+CSP-compatible data injection) for the django.forms.Media package.
diff --git a/www/py-dj52-django-mptt/Makefile b/www/py-dj52-django-mptt/Makefile
new file mode 100644
index 000000000000..18ab030b3f5a
--- /dev/null
+++ b/www/py-dj52-django-mptt/Makefile
@@ -0,0 +1,26 @@
+PORTNAME= django-mptt
+DISTVERSION= 0.17.0
+CATEGORIES= www python
+MASTER_SITES= PYPI
+PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}dj52-
+DISTNAME= django_mptt-${DISTVERSION}
+
+MAINTAINER= kai@FreeBSD.org
+COMMENT= Utilities for implementing Modified Preorder Tree Traversal in Django
+WWW= https://github.com/django-mptt/django-mptt
+
+LICENSE= MIT
+LICENSE_FILE= ${WRKSRC}/LICENSE
+
+BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}hatchling>0:devel/py-hatchling@${PY_FLAVOR}
+RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}django52>=4.2:www/py-django52@${PY_FLAVOR}\
+ ${PYTHON_PKGNAMEPREFIX}dj52-django-js-asset>0:www/py-dj52-django-js-asset@${PY_FLAVOR}
+
+USES= python:3.10+
+USE_PYTHON= autoplist pep517
+
+CONFLICTS_INSTALL= ${PYTHON_PKGNAMEPREFIX}*${PORTNAME}
+
+NO_ARCH= yes
+
+.include <bsd.port.mk>
diff --git a/www/py-dj52-django-mptt/distinfo b/www/py-dj52-django-mptt/distinfo
new file mode 100644
index 000000000000..a4f142723154
--- /dev/null
+++ b/www/py-dj52-django-mptt/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1743831457
+SHA256 (django_mptt-0.17.0.tar.gz) = e2dca00536450b91bdc80d8fc1454993b84307728394ae42c72947fc09574d3d
+SIZE (django_mptt-0.17.0.tar.gz) = 71428
diff --git a/www/py-dj52-django-mptt/pkg-descr b/www/py-dj52-django-mptt/pkg-descr
new file mode 100644
index 000000000000..bad56cabf151
--- /dev/null
+++ b/www/py-dj52-django-mptt/pkg-descr
@@ -0,0 +1,2 @@
+Utilities for implementing Modified Preorder Tree Traversal with your Django
+Models and working with trees of Model instances.
diff --git a/www/py-dj52-django-prometheus/Makefile b/www/py-dj52-django-prometheus/Makefile
new file mode 100644
index 000000000000..a48b4efff30b
--- /dev/null
+++ b/www/py-dj52-django-prometheus/Makefile
@@ -0,0 +1,38 @@
+PORTNAME= django-prometheus
+DISTVERSION= 2.3.1
+CATEGORIES= www python
+MASTER_SITES= PYPI
+PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}dj52-
+
+MAINTAINER= kai@FreeBSD.org
+COMMENT= Export Django monitoring metrics for Prometheus.io
+WWW= https://github.com/korfuri/django-prometheus
+
+LICENSE= APACHE20
+
+BUILD_DEPENDS= ${PY_SETUPTOOLS} \
+ ${PYTHON_PKGNAMEPREFIX}wheel>=0.40.0:devel/py-wheel@${PY_FLAVOR}
+RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}django52>=3.2:www/py-django52@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}prometheus-client>=0.7:net-mgmt/py-prometheus-client@${PY_FLAVOR}
+
+USES= python:3.10+
+USE_PYTHON= autoplist pep517 pytest
+
+TEST_ENV= PYTHONPATH=${STAGEDIR}${PYTHONPREFIX_SITELIBDIR}
+
+CONFLICTS_INSTALL= ${PYTHON_PKGNAMEPREFIX}*${PORTNAME}
+
+NO_ARCH= yes
+
+OPTIONS_GROUP= DATABASE CACHE
+OPTIONS_GROUP_DATABASE= MYSQL PGSQL
+OPTIONS_GROUP_CACHE= MEMCACHED REDIS
+
+MEMCACHED_DESC= Memcached distributed memory caching support
+
+MEMCACHED_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}python-memcached>=0:databases/py-python-memcached@${PY_FLAVOR}
+MYSQL_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}mysqlclient>=0:databases/py-mysqlclient@${PY_FLAVOR}
+PGSQL_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}psycopg2>=0:databases/py-psycopg2@${PY_FLAVOR}
+REDIS_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}dj52-django-redis>=4.8:www/py-dj52-django-redis@${PY_FLAVOR}
+
+.include <bsd.port.mk>
diff --git a/www/py-dj52-django-prometheus/distinfo b/www/py-dj52-django-prometheus/distinfo
new file mode 100644
index 000000000000..4f11977cb57e
--- /dev/null
+++ b/www/py-dj52-django-prometheus/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1683262385
+SHA256 (django-prometheus-2.3.1.tar.gz) = f9c8b6c780c9419ea01043c63a437d79db2c33353451347894408184ad9c3e1e
+SIZE (django-prometheus-2.3.1.tar.gz) = 24718
diff --git a/www/py-dj52-django-prometheus/files/patch-pyproject.toml b/www/py-dj52-django-prometheus/files/patch-pyproject.toml
new file mode 100644
index 000000000000..5bf778c4f9e3
--- /dev/null
+++ b/www/py-dj52-django-prometheus/files/patch-pyproject.toml
@@ -0,0 +1,11 @@
+Relax version requirements of py-setuptools.
+
+--- pyproject.toml.orig 2024-10-06 12:58:05 UTC
++++ pyproject.toml
+@@ -1,5 +1,5 @@
+ [build-system]
+-requires = [ "setuptools >= 67.7.2", "wheel >= 0.40.0"]
++requires = [ "setuptools", "wheel >= 0.40.0"]
+ build-backend = "setuptools.build_meta"
+
+ [tool.pytest.ini_options]
diff --git a/www/py-dj52-django-prometheus/files/patch-setup.py b/www/py-dj52-django-prometheus/files/patch-setup.py
new file mode 100644
index 000000000000..6e28293ebe58
--- /dev/null
+++ b/www/py-dj52-django-prometheus/files/patch-setup.py
@@ -0,0 +1,13 @@
+Remove py-pytest-runner as build time dependency because it is deprecated and
+should be no longer used.
+
+--- setup.py.orig 2024-10-01 12:41:04 UTC
++++ setup.py
+@@ -40,7 +40,6 @@ setup(
+ long_description=LONG_DESCRIPTION,
+ long_description_content_type="text/markdown",
+ tests_require=["pytest", "pytest-django"],
+- setup_requires=["pytest-runner"],
+ options={"bdist_wheel": {"universal": "1"}},
+ install_requires=[
+ "prometheus-client>=0.7",
diff --git a/www/py-dj52-django-prometheus/pkg-descr b/www/py-dj52-django-prometheus/pkg-descr
new file mode 100644
index 000000000000..0962e7b87336
--- /dev/null
+++ b/www/py-dj52-django-prometheus/pkg-descr
@@ -0,0 +1,14 @@
+This library exports Django monitoring metrics for Prometheus.io.
+
+It provides support to monitor the following databases types:
+
+* SQLite (via Django)
+* PostgreSQL
+* MySQL
+
+In addition, caches can also be monitored:
+
+* memcached
+* Redis
+
+It's even possible to export metrics of Django models and migrations.
diff --git a/www/py-dj52-django-redis/Makefile b/www/py-dj52-django-redis/Makefile
new file mode 100644
index 000000000000..6033fc994a25
--- /dev/null
+++ b/www/py-dj52-django-redis/Makefile
@@ -0,0 +1,36 @@
+PORTNAME= django-redis
+PORTVERSION= 5.4.0
+CATEGORIES= www databases python
+MASTER_SITES= PYPI
+PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}dj52-
+
+MAINTAINER= sunpoet@FreeBSD.org
+COMMENT= Full featured Redis cache/session backend for Django
+WWW= https://github.com/jazzband/django-redis
+
+LICENSE= BSD3CLAUSE
+LICENSE_FILE= ${WRKSRC}/LICENSE
+
+BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}setuptools>=0:devel/py-setuptools@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}wheel>=0:devel/py-wheel@${PY_FLAVOR}
+RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}django52>=3.2:www/py-django52@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}redis>=3.0.0:databases/py-redis@${PY_FLAVOR}
+TEST_DEPENDS= ${PYTHON_PKGNAMEPREFIX}msgpack>=0:devel/py-msgpack@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}pytest-django>=0:devel/py-pytest-django@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}pytest-mock>=0:devel/py-pytest-mock@${PY_FLAVOR} \
+ redis-server:databases/redis
+
+USES= python:3.10+
+USE_PYTHON= autoplist concurrent pep517 pytest
+
+# Required for Python 3.11+ as the cgi module is deprecated and slated for removal in Python 3.13
+TEST_ARGS= -W ignore::DeprecationWarning
+TEST_ENV= DJANGO_SETTINGS_MODULE=settings.sqlite \
+ PYTHONPATH=${STAGEDIR}${PYTHON_SITELIBDIR}
+TEST_WRKSRC= ${WRKSRC}/tests
+
+NO_ARCH= yes
+
+CONFLICTS_INSTALL= ${PYTHON_PKGNAMEPREFIX}*django-redis
+
+.include <bsd.port.mk>
diff --git a/www/py-dj52-django-redis/distinfo b/www/py-dj52-django-redis/distinfo
new file mode 100644
index 000000000000..156f9d23ac30
--- /dev/null
+++ b/www/py-dj52-django-redis/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1696432970
+SHA256 (django-redis-5.4.0.tar.gz) = 6a02abaa34b0fea8bf9b707d2c363ab6adc7409950b2db93602e6cb292818c42
+SIZE (django-redis-5.4.0.tar.gz) = 52567
diff --git a/www/py-dj52-django-redis/pkg-descr b/www/py-dj52-django-redis/pkg-descr
new file mode 100644
index 000000000000..ab566f948f78
--- /dev/null
+++ b/www/py-dj52-django-redis/pkg-descr
@@ -0,0 +1,15 @@
+Django-redis is a BSD Licensed, full featured Redis cache/session
+backend for Django.
+
+Why use django-redis?
+
+ * Modular client system (pluggable clients).
+ * Master-Slave support in the default client.
+ * Used in production in several projects as cache and session storage.
+ * Supports infinite timeouts.
+ * Python 3 support in same code base.
+ * Facilities for raw access to Redis client/connection pool.
+ * Highly configurable (can emulate memcached exception behavior, for
+ example).
+ * Unix sockets supported by default.
+ * Pluggable parsers.
diff --git a/www/py-dj52-django-rich/Makefile b/www/py-dj52-django-rich/Makefile
new file mode 100644
index 000000000000..8c7d791d94ba
--- /dev/null
+++ b/www/py-dj52-django-rich/Makefile
@@ -0,0 +1,27 @@
+PORTNAME= django-rich
+DISTVERSION= 2.0.0
+CATEGORIES= www python
+MASTER_SITES= PYPI
+PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}dj52-
+DISTNAME= django_rich-${DISTVERSION}
+
+MAINTAINER= kai@FreeBSD.org
+COMMENT= Extensions for using Rich with Django
+WWW= https://github.com/adamchainz/django-rich
+
+LICENSE= MIT
+LICENSE_FILE= ${WRKSRC}/LICENSE
+
+BUILD_DEPENDS= ${PY_SETUPTOOLS} \
+ ${PYTHON_PKGNAMEPREFIX}wheel>=0:devel/py-wheel@${PY_FLAVOR}
+RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}django52>=4.2:www/py-django52@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}rich>=10.0.0:textproc/py-rich@${PY_FLAVOR}
+
+USES= python:3.10+
+USE_PYTHON= autoplist pep517
+
+CONFLICTS_INSTALL= ${PYTHON_PKGNAMEPREFIX}*${PORTNAME}
+
+NO_ARCH= yes
+
+.include <bsd.port.mk>
diff --git a/www/py-dj52-django-rich/distinfo b/www/py-dj52-django-rich/distinfo
new file mode 100644
index 000000000000..ff93b43f1403
--- /dev/null
+++ b/www/py-dj52-django-rich/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1747327116
+SHA256 (django_rich-2.0.0.tar.gz) = 3646edf7223f05b9775ec9a38ab5a33be93042fc3de3d5e31eacf84da6091913
+SIZE (django_rich-2.0.0.tar.gz) = 61448
diff --git a/www/py-dj52-django-rich/pkg-descr b/www/py-dj52-django-rich/pkg-descr
new file mode 100644
index 000000000000..db029741fbb0
--- /dev/null
+++ b/www/py-dj52-django-rich/pkg-descr
@@ -0,0 +1,11 @@
+This package provides extensions for using Rich with the Django framework.
+
+These extensions consist of the following subclasses:
+
+* django_rich.management.RichCommand:
+ Subclass of Django's BaseCommand class that sets its self.console to a
+ Rich console.
+
+* django_rich.test.RichRunner:
+ Subclass of Django's DiscoverRunner with colorized outputs and nice
+ traceback rendering.
diff --git a/www/py-dj52-django-storages/Makefile b/www/py-dj52-django-storages/Makefile
new file mode 100644
index 000000000000..d42e105a875d
--- /dev/null
+++ b/www/py-dj52-django-storages/Makefile
@@ -0,0 +1,44 @@
+PORTNAME= django-storages
+DISTVERSION= 1.14.6
+CATEGORIES= www python
+MASTER_SITES= PYPI
+PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}dj52-
+DISTNAME= django_storages-${DISTVERSION}
+
+MAINTAINER= kai@FreeBSD.org
+COMMENT= Generic storages for Django
+WWW= https://django-storages.readthedocs.io/en/latest/ \
+ https://github.com/jschneier/django-storages
+
+LICENSE= BSD3CLAUSE
+LICENSE_FILE= ${WRKSRC}/LICENSE
+
+BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}setuptools>=61.2:devel/py-setuptools@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}wheel>0:devel/py-wheel@${PY_FLAVOR}
+RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}django52>=3.2:www/py-django52@${PY_FLAVOR}
+
+USES= python:3.10+
+USE_PYTHON= autoplist concurrent pep517
+
+CONFLICTS_INSTALL= ${PYTHON_PKGNAMEPREFIX}*${PORTNAME}
+
+NO_ARCH= yes
+
+# AZURE option requires newer devel/py-azure-storage-blob (not yet in the ports tree).
+OPTIONS_DEFINE= DROPBOX GOOGLE LIBCLOUD S3 SFTP #AZURE
+#AZURE_DESC= Azure backend
+DROPBOX_DESC= Dropbox backend
+GOOGLE_DESC= Google Cloud Storage backend
+LIBCLOUD_DESC= Apache Libcloud backend
+S3_DESC= Amazon S3 backend
+SFTP_DESC= SFTP backend
+
+#AZURE_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}azure-core>=1.13:devel/py-azure-core@${PY_FLAVOR} \
+# ${PYTHON_PKGNAMEPREFIX}azure-storage-blob>=12:devel/py-azure-storage-blob@${PY_FLAVOR}
+DROPBOX_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}dropbox>=7.2.1:www/py-dropbox@${PY_FLAVOR}
+GOOGLE_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}google-cloud-storage>=1.27:www/py-google-cloud-storage@${PY_FLAVOR}
+LIBCLOUD_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}libcloud>=0:net/py-libcloud@${PY_FLAVOR}
+S3_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}boto3>=1.4.4:www/py-boto3@${PY_FLAVOR}
+SFTP_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}paramiko>=1.15:security/py-paramiko@${PY_FLAVOR}
+
+.include <bsd.port.mk>
diff --git a/www/py-dj52-django-storages/distinfo b/www/py-dj52-django-storages/distinfo
new file mode 100644
index 000000000000..fdf7fdd929d0
--- /dev/null
+++ b/www/py-dj52-django-storages/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1744777452
+SHA256 (django_storages-1.14.6.tar.gz) = 7a25ce8f4214f69ac9c7ce87e2603887f7ae99326c316bc8d2d75375e09341c9
+SIZE (django_storages-1.14.6.tar.gz) = 87587
diff --git a/www/py-dj52-django-storages/pkg-descr b/www/py-dj52-django-storages/pkg-descr
new file mode 100644
index 000000000000..9a41326622ac
--- /dev/null
+++ b/www/py-dj52-django-storages/pkg-descr
@@ -0,0 +1,2 @@
+Generic storages for Django. Support for many storages
+(S3, MogileFS, etc) in Django
diff --git a/www/py-dj52-django-tables2/Makefile b/www/py-dj52-django-tables2/Makefile
new file mode 100644
index 000000000000..e5826b984125
--- /dev/null
+++ b/www/py-dj52-django-tables2/Makefile
@@ -0,0 +1,30 @@
+PORTNAME= django-tables2
+DISTVERSION= 2.7.5
+CATEGORIES= www python
+MASTER_SITES= PYPI
+PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}dj52-
+DISTNAME= django_tables2-${DISTVERSION}
+
+MAINTAINER= kai@FreeBSD.org
+COMMENT= Table/data-grid framework for Django
+WWW= https://github.com/jieter/django-tables2
+
+LICENSE= BSD2CLAUSE
+LICENSE_FILE= ${WRKSRC}/LICENSE
+
+BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}hatchling>0:devel/py-hatchling@${PY_FLAVOR}
+RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}django52>=4.2:www/py-django52@${PY_FLAVOR}
+
+USES= python:3.10+
+USE_PYTHON= autoplist pep517
+
+CONFLICTS_INSTALL= ${PYTHON_PKGNAMEPREFIX}*${PORTNAME}
+
+NO_ARCH= yes
+
+OPTIONS_DEFINE= TABLIB
+
+TABLIB_DESC= Enable support for exporting table datasets
+TABLIB_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}tablib>=0:textproc/py-tablib@${PY_FLAVOR}
+
+.include <bsd.port.mk>
diff --git a/www/py-dj52-django-tables2/distinfo b/www/py-dj52-django-tables2/distinfo
new file mode 100644
index 000000000000..f7f2d9990542
--- /dev/null
+++ b/www/py-dj52-django-tables2/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1736247931
+SHA256 (django_tables2-2.7.5.tar.gz) = fb5dcaa09379cf3947598ec7e1bd5f26ed63aafdee3b23963446763bbeac37bf
+SIZE (django_tables2-2.7.5.tar.gz) = 128618
diff --git a/www/py-dj52-django-tables2/pkg-descr b/www/py-dj52-django-tables2/pkg-descr
new file mode 100644
index 000000000000..5b09aff2a2f2
--- /dev/null
+++ b/www/py-dj52-django-tables2/pkg-descr
@@ -0,0 +1,3 @@
+django-tables2 simplifies the task of turning sets of data into HTML tables.
+It has native support for pagination and sorting, does for HTML tables what
+django.forms does for HTML forms.
diff --git a/www/py-dj52-django-taggit/Makefile b/www/py-dj52-django-taggit/Makefile
new file mode 100644
index 000000000000..5b9ea7a0b4a9
--- /dev/null
+++ b/www/py-dj52-django-taggit/Makefile
@@ -0,0 +1,26 @@
+PORTNAME= django-taggit
+DISTVERSION= 6.1.0
+CATEGORIES= www python
+MASTER_SITES= PYPI
+PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}dj52-
+DISTNAME= django_taggit-${DISTVERSION}
+
+MAINTAINER= kai@FreeBSD.org
+COMMENT= Reusable Django application for simple tagging
+WWW= https://github.com/jazzband/django-taggit
+
+LICENSE= BSD3CLAUSE
+LICENSE_FILE= ${WRKSRC}/LICENSE
+
+BUILD_DEPENDS= ${PY_SETUPTOOLS} \
+ ${PYTHON_PKGNAMEPREFIX}wheel>0:devel/py-wheel@${PY_FLAVOR}
+RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}django52>=4.1:www/py-django52@${PY_FLAVOR}
+
+USES= python:3.10+
+USE_PYTHON= autoplist pep517
+
+CONFLICTS_INSTALL= ${PYTHON_PKGNAMEPREFIX}*${PORTNAME}
+
+NO_ARCH= yes
+
+.include <bsd.port.mk>
diff --git a/www/py-dj52-django-taggit/distinfo b/www/py-dj52-django-taggit/distinfo
new file mode 100644
index 000000000000..777531f4c290
--- /dev/null
+++ b/www/py-dj52-django-taggit/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1728224208
+SHA256 (django_taggit-6.1.0.tar.gz) = c4d1199e6df34125dd36db5eb0efe545b254dec3980ce5dd80e6bab3e78757c3
+SIZE (django_taggit-6.1.0.tar.gz) = 38151
diff --git a/www/py-dj52-django-taggit/pkg-descr b/www/py-dj52-django-taggit/pkg-descr
new file mode 100644
index 000000000000..be15b201b3ee
--- /dev/null
+++ b/www/py-dj52-django-taggit/pkg-descr
@@ -0,0 +1 @@
+django-taggit a simpler approach to tagging with Django.
diff --git a/www/py-dj52-django-timezone-field/Makefile b/www/py-dj52-django-timezone-field/Makefile
new file mode 100644
index 000000000000..e44cc4dab88a
--- /dev/null
+++ b/www/py-dj52-django-timezone-field/Makefile
@@ -0,0 +1,25 @@
+PORTNAME= django-timezone-field
+DISTVERSION= 7.1
+CATEGORIES= www python
+MASTER_SITES= PYPI
+PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}dj52-
+DISTNAME= django_timezone_field-${DISTVERSION}
+
+MAINTAINER= kai@FreeBSD.org
+COMMENT= Provides database and form fields for pytz timezone objects for Django
+WWW= https://github.com/mfogel/django-timezone-field
+
+LICENSE= BSD2CLAUSE
+LICENSE_FILE= ${WRKSRC}/LICENSE.txt
+
+BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}poetry-core>=1.0.0:devel/py-poetry-core@${PY_FLAVOR}
+RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}django52>=3.2:www/py-django52@${PY_FLAVOR}
+
+USES= python:3.10+
+USE_PYTHON= autoplist pep517
+
+CONFLICTS_INSTALL= ${PYTHON_PKGNAMEPREFIX}*${PORTNAME}
+
+NO_ARCH= yes
+
+.include <bsd.port.mk>
diff --git a/www/py-dj52-django-timezone-field/distinfo b/www/py-dj52-django-timezone-field/distinfo
new file mode 100644
index 000000000000..00ee309e011a
--- /dev/null
+++ b/www/py-dj52-django-timezone-field/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1737194529
+SHA256 (django_timezone_field-7.1.tar.gz) = b3ef409d88a2718b566fabe10ea996f2838bc72b22d3a2900c0aa905c761380c
+SIZE (django_timezone_field-7.1.tar.gz) = 13727
diff --git a/www/py-dj52-django-timezone-field/pkg-descr b/www/py-dj52-django-timezone-field/pkg-descr
new file mode 100644
index 000000000000..98a3675d4d8d
--- /dev/null
+++ b/www/py-dj52-django-timezone-field/pkg-descr
@@ -0,0 +1,2 @@
+Provides database, form, and REST framework fields for "zoneinfo" and "pytz"
+timezone objects for Django.
diff --git a/www/py-dj52-djangorestframework/Makefile b/www/py-dj52-djangorestframework/Makefile
new file mode 100644
index 000000000000..96d316832790
--- /dev/null
+++ b/www/py-dj52-djangorestframework/Makefile
@@ -0,0 +1,25 @@
+PORTNAME= djangorestframework
+DISTVERSION= 3.16.0
+CATEGORIES= www python
+MASTER_SITES= PYPI
+PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}dj52-
+
+MAINTAINER= kai@FreeBSD.org
+COMMENT= Django REST framework
+WWW= https://www.django-rest-framework.org/
+
+LICENSE= BSD2CLAUSE
+LICENSE_FILE= ${WRKSRC}/LICENSE.md
+
+BUILD_DEPENDS= ${PY_SETUPTOOLS} \
+ ${PYTHON_PKGNAMEPREFIX}wheel>0:devel/py-wheel@${PY_FLAVOR}
+RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}django52>=4.2:www/py-django52@${PY_FLAVOR}
+
+USES= python:3.10+
+USE_PYTHON= autoplist pep517
+
+CONFLICTS_INSTALL= ${PYTHON_PKGNAMEPREFIX}*${PORTNAME}
+
+NO_ARCH= yes
+
+.include <bsd.port.mk>
diff --git a/www/py-dj52-djangorestframework/distinfo b/www/py-dj52-djangorestframework/distinfo
new file mode 100644
index 000000000000..c336e0e97c68
--- /dev/null
+++ b/www/py-dj52-djangorestframework/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1744359953
+SHA256 (djangorestframework-3.16.0.tar.gz) = f022ff46613584de994c0c6a4aebbace5fd700555fbe9d33b865ebf173eba6c9
+SIZE (djangorestframework-3.16.0.tar.gz) = 1068408
diff --git a/www/py-dj52-djangorestframework/pkg-descr b/www/py-dj52-djangorestframework/pkg-descr
new file mode 100644
index 000000000000..c8a8f49f4488
--- /dev/null
+++ b/www/py-dj52-djangorestframework/pkg-descr
@@ -0,0 +1,15 @@
+Django REST framework is a powerful and flexible toolkit that makes it easy to
+build Web APIs.
+
+Some reasons you might want to use REST framework:
+
+* The Web browsable API is a huge usability win for your developers.
+
+* Authentication policies including optional packages for OAuth1a and OAuth2.
+
+* Serialization that supports both ORM and non-ORM data sources.
+
+* Customizable all the way down - just use regular function-based views if you
+ don't need the more powerful features.
+
+* Extensive documentation, and great community support.
diff --git a/www/py-dj52-drf-spectacular-sidecar/Makefile b/www/py-dj52-drf-spectacular-sidecar/Makefile
new file mode 100644
index 000000000000..c2a90f5f91f0
--- /dev/null
+++ b/www/py-dj52-drf-spectacular-sidecar/Makefile
@@ -0,0 +1,26 @@
+PORTNAME= drf-spectacular-sidecar
+DISTVERSION= 2025.6.1
+CATEGORIES= www python
+MASTER_SITES= PYPI
+PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}dj52-
+DISTNAME= drf_spectacular_sidecar-${DISTVERSION}
+
+MAINTAINER= kai@FreeBSD.org
+COMMENT= Serve self-contained Swagger UI/Redoc distribution builds with Django
+WWW= https://github.com/tfranzel/drf-spectacular
+
+LICENSE= BSD3CLAUSE
+LICENSE_FILE= ${WRKSRC}/LICENSE
+
+BUILD_DEPENDS= ${PY_SETUPTOOLS} \
+ ${PYTHON_PKGNAMEPREFIX}wheel>0:devel/py-wheel@${PY_FLAVOR}
+RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}django52>=2.2:www/py-django52@${PY_FLAVOR}
+
+USES= python:3.10+
+USE_PYTHON= autoplist pep517
+
+CONFLICTS_INSTALL= ${PYTHON_PKGNAMEPREFIX}*${PORTNAME}
+
+NO_ARCH= yes
+
+.include <bsd.port.mk>
diff --git a/www/py-dj52-drf-spectacular-sidecar/distinfo b/www/py-dj52-drf-spectacular-sidecar/distinfo
new file mode 100644
index 000000000000..2ba7b8f8b212
--- /dev/null
+++ b/www/py-dj52-drf-spectacular-sidecar/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1749230590
+SHA256 (drf_spectacular_sidecar-2025.6.1.tar.gz) = ee6752c73d712265a61b9e2ca6f71c3b2bd89f30f39cf9f8cda98e7f371fcbcf
+SIZE (drf_spectacular_sidecar-2025.6.1.tar.gz) = 2407117
diff --git a/www/py-dj52-drf-spectacular-sidecar/pkg-descr b/www/py-dj52-drf-spectacular-sidecar/pkg-descr
new file mode 100644
index 000000000000..34144682bfdc
--- /dev/null
+++ b/www/py-dj52-drf-spectacular-sidecar/pkg-descr
@@ -0,0 +1,5 @@
+Serve self-contained distribution builds of Swagger UI and Redoc with Django
+either via runserver or collectstatic.
+
+This Django app is an optional addition to drf-spectacular, but does not depend
+on it. It may also be used independently.
diff --git a/www/py-dj52-drf-spectacular/Makefile b/www/py-dj52-drf-spectacular/Makefile
new file mode 100644
index 000000000000..0b0dff5282b8
--- /dev/null
+++ b/www/py-dj52-drf-spectacular/Makefile
@@ -0,0 +1,35 @@
+PORTNAME= drf-spectacular
+DISTVERSION= 0.28.0
+CATEGORIES= www python
+MASTER_SITES= PYPI
+PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}dj52-
+DISTNAME= drf_spectacular-${DISTVERSION}
+
+MAINTAINER= kai@FreeBSD.org
+COMMENT= Sane/flexible OpenAPI 3 schema generation for Django REST framework
+WWW= https://github.com/tfranzel/drf-spectacular
+
+LICENSE= BSD3CLAUSE
+LICENSE_FILE= ${WRKSRC}/LICENSE
+
+RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}django52>=2.2:www/py-django52@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}dj52-djangorestframework>=3.10.3:www/py-dj52-djangorestframework@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}inflection>=0.3.1:devel/py-inflection@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}jsonschema>=2.6.0:devel/py-jsonschema@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}uritemplate>=2.0.0:net/py-uritemplate@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}pyyaml>=5.1:devel/py-pyyaml@${PY_FLAVOR}
+
+USES= python:3.10+
+USE_PYTHON= autoplist distutils
+
+CONFLICTS_INSTALL= ${PYTHON_PKGNAMEPREFIX}*${PORTNAME}
+
+NO_ARCH= yes
+
+OPTIONS_DEFINE= SIDECAR
+OPTIONS_DEFAULT= SIDECAR
+
+SIDECAR_DESC= Enable self-contained Swagger/Redoc UI installation
+SIDECAR_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}dj52-drf-spectacular-sidecar>0:www/py-dj52-drf-spectacular-sidecar@${PY_FLAVOR}
+
+.include <bsd.port.mk>
diff --git a/www/py-dj52-drf-spectacular/distinfo b/www/py-dj52-drf-spectacular/distinfo
new file mode 100644
index 000000000000..22f12c0442aa
--- /dev/null
+++ b/www/py-dj52-drf-spectacular/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1733482018
+SHA256 (drf_spectacular-0.28.0.tar.gz) = 2c778a47a40ab2f5078a7c42e82baba07397bb35b074ae4680721b2805943061
+SIZE (drf_spectacular-0.28.0.tar.gz) = 237849
diff --git a/www/py-dj52-drf-spectacular/pkg-descr b/www/py-dj52-drf-spectacular/pkg-descr
new file mode 100644
index 000000000000..7f053d6244dc
--- /dev/null
+++ b/www/py-dj52-drf-spectacular/pkg-descr
@@ -0,0 +1,24 @@
+This project has 3 goals:
+
+* Extract as much schema information from DRF as possible.
+* Provide flexibility to make the schema usable in the real world (not only
+ toy examples).
+* Generate a schema that works well with the most popular client generators.
+
+The code is a heavily modified fork of the DRF OpenAPI generator, which is/was
+lacking all of the below listed features:
+
+* Serializers modelled as components. (arbitrary nesting + recursion supported)
+* @extend_schema decorator for customization of APIView, Viewsets,
+ function-based views, and @action
+* Authentication support (DRF natives included, easily extendable)
+* Custom serializer class support (easily extendable)
+* SerializerMethodField() type via type hinting or @extend_schema_field
+* i18n support, Tags extraction, Description extraction from docstrings
+* Request/response/parameter examples, Callback operations
+* Vendor specification extensions (x-*) in info, operations, parameters,
+ components, and security schemes
+* Sane fallbacks and sane operation_id naming (based on path)
+* Schema serving with SpectacularAPIView (Redoc and Swagger-UI views are
+ also available)
+* Optional input/output serializer component split
diff --git a/www/py-dj52-social-auth-app-django/Makefile b/www/py-dj52-social-auth-app-django/Makefile
new file mode 100644
index 000000000000..db3778e0f22b
--- /dev/null
+++ b/www/py-dj52-social-auth-app-django/Makefile
@@ -0,0 +1,34 @@
+PORTNAME= social-auth-app-django
+DISTVERSION= 5.4.3
+CATEGORIES= www security python
+PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}dj52-
+
+MAINTAINER= kai@FreeBSD.org
+COMMENT= Social Authentication and Django integration
+WWW= https://github.com/python-social-auth/social-app-django
+
+LICENSE= BSD3CLAUSE
+LICENSE_FILE= ${WRKSRC}/LICENSE
+
+BUILD_DEPENDS= ${PY_SETUPTOOLS} \
+ ${PYTHON_PKGNAMEPREFIX}wheel>0:devel/py-wheel@${PY_FLAVOR}
+RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}django52>=3.2:www/py-django52@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}social-auth-core>=4.4<5:security/py-social-auth-core@${PY_FLAVOR}
+TEST_DEPENDS= ${PYTHON_PKGNAMEPREFIX}mock>0:devel/py-mock@${PY_FLAVOR}
+
+USES= python:3.10+
+USE_GITHUB= yes
+GH_ACCOUNT= python-social-auth
+GH_PROJECT= social-app-django
+USE_PYTHON= autoplist pep517
+
+TEST_ENV= PYTHONPATH=${STAGEDIR}${PYTHONPREFIX_SITELIBDIR}
+
+CONFLICTS_INSTALL= ${PYTHON_PKGNAMEPREFIX}*${PORTNAME}
+
+NO_ARCH= yes
+
+do-test:
+ @cd ${WRKSRC} && ${SETENV} ${TEST_ENV} ${PYTHON_CMD} manage.py test -v3
+
+.include <bsd.port.mk>
diff --git a/www/py-dj52-social-auth-app-django/distinfo b/www/py-dj52-social-auth-app-django/distinfo
new file mode 100644
index 000000000000..68863aa8bae5
--- /dev/null
+++ b/www/py-dj52-social-auth-app-django/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1740213116
+SHA256 (python-social-auth-social-app-django-5.4.3_GH0.tar.gz) = 4dd02d76ffa390e6a2d7fe319869384c81d32c73b826eb09a10023cf66738389
+SIZE (python-social-auth-social-app-django-5.4.3_GH0.tar.gz) = 25327
diff --git a/www/py-dj52-social-auth-app-django/pkg-descr b/www/py-dj52-social-auth-app-django/pkg-descr
new file mode 100644
index 000000000000..fa7d52777ed7
--- /dev/null
+++ b/www/py-dj52-social-auth-app-django/pkg-descr
@@ -0,0 +1,6 @@
+Python Social Auth is an easy to setup social authentication/registration
+mechanism with support for several frameworks and auth providers.
+
+This is the Django component of the python-social-auth ecosystem, it implements
+the needed functionality to integrate social-auth-core in a Django based
+project.
diff --git a/www/py-dj52-strawberry-graphql-django/Makefile b/www/py-dj52-strawberry-graphql-django/Makefile
new file mode 100644
index 000000000000..88d95afad756
--- /dev/null
+++ b/www/py-dj52-strawberry-graphql-django/Makefile
@@ -0,0 +1,37 @@
+PORTNAME= strawberry-graphql-django
+DISTVERSION= 0.60.0
+CATEGORIES= www python
+MASTER_SITES= PYPI
+PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}dj52-
+DISTNAME= strawberry_graphql_django-${DISTVERSION}
+
+MAINTAINER= kai@FreeBSD.org
+COMMENT= Strawberry GraphQL Django extension
+WWW= https://github.com/strawberry-graphql/strawberry-django
+
+LICENSE= MIT
+LICENSE_FILE= ${WRKSRC}/LICENSE
+
+BUILD_DEPENDS= ${PY_SETUPTOOLS} \
+ ${PYTHON_PKGNAMEPREFIX}poetry-core>=1.0.0:devel/py-poetry-core@${PY_FLAVOR}
+RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}django52>=4.2:www/py-django52@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}asgiref>=3.8:www/py-asgiref@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}dj52-strawberry-graphql>=0.264.0:devel/py-dj52-strawberry-graphql@${PY_FLAVOR}
+
+USES= python:3.10+
+USE_PYTHON= autoplist pep517
+
+CONFLICTS_INSTALL= ${PYTHON_PKGNAMEPREFIX}*${PORTNAME}
+
+NO_ARCH= yes
+
+OPTIONS_DEFINE= DEBUG-TOOLBAR ENUM
+OPTIONS_DEFAULT= DEBUG-TOOLBAR ENUM
+
+DEBUG-TOOLBAR_DESC= Debug support
+ENUM_DESC= Integration for Django's TextChoices/IntegerChoices enumerations
+
+DEBUG-TOOLBAR_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}dj52-django-debug-toolbar>=3.4:www/py-dj52-django-debug-toolbar@${PY_FLAVOR}
+ENUM_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}dj52-django-choices-field>=2.2.2:www/py-dj52-django-choices-field@${PY_FLAVOR}
+
+.include <bsd.port.mk>
diff --git a/www/py-dj52-strawberry-graphql-django/distinfo b/www/py-dj52-strawberry-graphql-django/distinfo
new file mode 100644
index 000000000000..ed5dfad9d92e
--- /dev/null
+++ b/www/py-dj52-strawberry-graphql-django/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1749230619
+SHA256 (strawberry_graphql_django-0.60.0.tar.gz) = a5d210bd4458be298f86d8b1b8d01ce0208291b5b6b227cd0cfd97c51cf71ee8
+SIZE (strawberry_graphql_django-0.60.0.tar.gz) = 84511
diff --git a/www/py-dj52-strawberry-graphql-django/pkg-descr b/www/py-dj52-strawberry-graphql-django/pkg-descr
new file mode 100644
index 000000000000..bea2083c6410
--- /dev/null
+++ b/www/py-dj52-strawberry-graphql-django/pkg-descr
@@ -0,0 +1,15 @@
+This package provides powerful tools to generate GraphQL types, queries,
+mutations and resolvers from Django models.
+
+Supported Features:
+
+* GraphQL type generation from models
+* Filtering, pagination and ordering
+* Basic create, retrieve, update and delete (CRUD) types and mutations
+* Basic Django auth support, current user query, login and logout mutations
+* Django sync and async views
+* Permission extension using django's permissioning system
+* Relay support with automatic resolvers generation
+* Query optimization to improve performance and avoid common pitfalls (e.g n+1)
+* Debug Toolbar integration with graphiql to display metrics like SQL queries
+* Unit test integration
diff --git a/www/py-django-storages/Makefile b/www/py-django-storages/Makefile
index 66d553726460..853b5605ce5f 100644
--- a/www/py-django-storages/Makefile
+++ b/www/py-django-storages/Makefile
@@ -1,8 +1,9 @@
PORTNAME= django-storages
-PORTVERSION= 1.14.4
+PORTVERSION= 1.14.6
CATEGORIES= www python
MASTER_SITES= PYPI
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
+DISTNAME= django_storages-${PORTVERSION}
MAINTAINER= python@FreeBSD.org
COMMENT= Generic storages for Django
@@ -19,6 +20,8 @@ RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}django42>=3.2:www/py-django42@${PY_FLAVOR}
USES= python
USE_PYTHON= autoplist concurrent pep517
+CONFLICTS_INSTALL= ${PYTHON_PKGNAMEPREFIX}*${PORTNAME}
+
NO_ARCH= yes
# AZURE option requires newer devel/py-azure-storage-blob (not yet in the ports tree).
diff --git a/www/py-django-storages/distinfo b/www/py-django-storages/distinfo
index 46ba87cd5184..fdf7fdd929d0 100644
--- a/www/py-django-storages/distinfo
+++ b/www/py-django-storages/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1720608714
-SHA256 (django-storages-1.14.4.tar.gz) = 69aca94d26e6714d14ad63f33d13619e697508ee33ede184e462ed766dc2a73f
-SIZE (django-storages-1.14.4.tar.gz) = 83496
+TIMESTAMP = 1744777452
+SHA256 (django_storages-1.14.6.tar.gz) = 7a25ce8f4214f69ac9c7ce87e2603887f7ae99326c316bc8d2d75375e09341c9
+SIZE (django_storages-1.14.6.tar.gz) = 87587
diff --git a/www/py-freenit/Makefile b/www/py-freenit/Makefile
index 4a37f51e943d..5c05b5a92a03 100644
--- a/www/py-freenit/Makefile
+++ b/www/py-freenit/Makefile
@@ -1,5 +1,5 @@
PORTNAME= freenit
-DISTVERSION= 0.3.14
+DISTVERSION= 0.3.16
CATEGORIES= www devel python
MASTER_SITES= PYPI
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
@@ -31,11 +31,13 @@ TEST_ENV= PYTHONPATH=${WRKSRC}/src
NO_ARCH= yes
SUB_LIST= PYTHON_VER=${PYTHON_VER}
-OPTIONS_DEFINE= ORMAR
-OPTIONS_DEFAULT= ORMAR
+OPTIONS_DEFINE= LDAP SQL
+OPTIONS_DEFAULT= SQL
-ORMAR_DESC= Support for SQL databases using Ormar
-ORMAR_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}alembic>=0:databases/py-alembic@${PY_FLAVOR} \
+LDAP_DESC= Support for OpenLDAP using Beanie
+SQL_DESC= Support for SQL databases using Ormar
+LDAP_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}bonsai>=0:net/py-bonsai@${PY_FLAVOR}
+SQL_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}alembic>=0:databases/py-alembic@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}ormar>0:databases/py-ormar@${PY_FLAVOR}
.include <bsd.port.mk>
diff --git a/www/py-freenit/distinfo b/www/py-freenit/distinfo
index ef63c2eb0107..7eea228138d7 100644
--- a/www/py-freenit/distinfo
+++ b/www/py-freenit/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1745763362
-SHA256 (freenit-0.3.14.tar.gz) = 0dc8de8a49e62471ca2ee02dee3986cae829f0a512357aa41dcd4c337a88f447
-SIZE (freenit-0.3.14.tar.gz) = 26271
+TIMESTAMP = 1750500114
+SHA256 (freenit-0.3.16.tar.gz) = 0bbc2258e75afb892f9971dc642d7dd7ef27a06e3b538b42daf7c8c6fafaa3ec
+SIZE (freenit-0.3.16.tar.gz) = 27242
diff --git a/www/shiori/Makefile b/www/shiori/Makefile
index e368c2645269..a8bafe630a2e 100644
--- a/www/shiori/Makefile
+++ b/www/shiori/Makefile
@@ -1,7 +1,6 @@
PORTNAME= shiori
DISTVERSIONPREFIX= v
-DISTVERSION= 1.7.3
-PORTREVISION= 3
+DISTVERSION= 1.7.4
CATEGORIES= www
MAINTAINER= nivit@FreeBSD.org
diff --git a/www/shiori/distinfo b/www/shiori/distinfo
index 477b07f5aa30..51989a34f03b 100644
--- a/www/shiori/distinfo
+++ b/www/shiori/distinfo
@@ -1,5 +1,5 @@
-TIMESTAMP = 1737293250
-SHA256 (go/www_shiori/shiori-v1.7.3/v1.7.3.mod) = 247336cc5dfbdf0bf093b310f9e1ff920eaa47e8a1abca571d3f5f536be826c9
-SIZE (go/www_shiori/shiori-v1.7.3/v1.7.3.mod) = 6740
-SHA256 (go/www_shiori/shiori-v1.7.3/v1.7.3.zip) = de0e1a4db3e3e37d9b1030777cf41dae5a91868ec779f174c370e0e185a4665a
-SIZE (go/www_shiori/shiori-v1.7.3/v1.7.3.zip) = 7037104
+TIMESTAMP = 1750495895
+SHA256 (go/www_shiori/shiori-v1.7.4/v1.7.4.mod) = 247336cc5dfbdf0bf093b310f9e1ff920eaa47e8a1abca571d3f5f536be826c9
+SIZE (go/www_shiori/shiori-v1.7.4/v1.7.4.mod) = 6740
+SHA256 (go/www_shiori/shiori-v1.7.4/v1.7.4.zip) = 5de0eff8f67d7455f83b7ea2d724adb77e43c5c5838d19539f86953aacd11eab
+SIZE (go/www_shiori/shiori-v1.7.4/v1.7.4.zip) = 7037128
diff --git a/www/sitecopy/Makefile b/www/sitecopy/Makefile
index 18693972bd3e..069a0bbbc106 100644
--- a/www/sitecopy/Makefile
+++ b/www/sitecopy/Makefile
@@ -11,6 +11,8 @@ WWW= https://www.manyfish.co.uk/sitecopy/
LICENSE= GPLv2
LICENSE_FILE= ${WRKSRC}/COPYING
+BROKEN= Fails to build with neon 0.32+, configure: incompatible neon library version 0.34.0: wanted 0.24 25 26 27 28 29 30 31 32
+
LIB_DEPENDS= libneon.so:www/neon
USES= gmake gnome localbase
diff --git a/www/squid/Makefile b/www/squid/Makefile
index 33b326d4413a..43984fbbbe58 100644
--- a/www/squid/Makefile
+++ b/www/squid/Makefile
@@ -1,12 +1,7 @@
PORTNAME= squid
-DISTVERSION= 6.12
-PORTREVISION= 1
+DISTVERSION= 6.13
CATEGORIES= www
-MASTER_SITES= http://www2.pl.squid-cache.org/Versions/v6/ \
- http://www1.il.squid-cache.org/Versions/v6/ \
- http://www2.gr.squid-cache.org/Versions/v6/ \
- http://ca2.squid-cache.org/Versions/v6/ \
- https://www.squid-cache.org/Versions/v6/
+MASTER_SITES= https://github.com/${PORTNAME}-cache/${PORTNAME}/releases/download/${PORTNAME:tu}_${DISTVERSION:S|.|_|g}/
PATCH_SITES= http://www2.pl.squid-cache.org/%SUBDIR%/ \
http://www1.il.squid-cache.org/%SUBDIR%/ \
@@ -17,7 +12,8 @@ PATCH_SITE_SUBDIR= Versions/v6/changesets
MAINTAINER= timp87@gmail.com
COMMENT= HTTP Caching Proxy
-WWW= https://www.squid-cache.org/
+WWW= https://www.squid-cache.org/ \
+ https://github.com/squid-cache/squid/
LICENSE= GPLv2
LICENSE_FILE= ${WRKSRC}/COPYING
@@ -209,9 +205,11 @@ WCCP_CONFIGURE_ENABLE= wccp
MYDOCS= QUICKSTART README RELEASENOTES.html doc/debug-sections.txt
change_files= ChangeLog errors/Makefile.am errors/Makefile.in \
- src/auth/basic/SMB_LM/README.html src/Makefile.am \
- src/Makefile.in src/cf_gen.cc src/squid.8.in \
- test-suite/Makefile.in tools/Makefile.am tools/Makefile.in
+ src/auth/basic/SMB_LM/README.html \
+ src/Makefile.am src/Makefile.in \
+ src/cf_gen.cc src/squid.8.in \
+ test-suite/Makefile.in test-suite/Makefile.am \
+ tools/Makefile.am tools/Makefile.in
.include <bsd.port.options.mk>
@@ -223,6 +221,7 @@ EXTERNAL_ACL+= file_userip unix_group delayer
# POLA: allow the old global make.conf(5) (pre src.conf(5)) defines, too:
.if ${PORT_OPTIONS:MAUTH_NIS} && !defined(NO_NIS) && !defined(WITHOUT_NIS)
BASIC_AUTH+= NIS
+CPPFLAGS+= -DBOOL_DEFINED
.endif
# POLA: allow the old global make.conf(5) (pre src.conf(5)) defines, too:
diff --git a/www/squid/distinfo b/www/squid/distinfo
index a716d8c3cf74..3482b7d60f5c 100644
--- a/www/squid/distinfo
+++ b/www/squid/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1733684468
-SHA256 (squid-6.12.tar.xz) = f3df3abb2603a513266f24a5d4699a9f0d76b9f554d1848b67f9c51cd3b3cb50
-SIZE (squid-6.12.tar.xz) = 2548220
+TIMESTAMP = 1749986346
+SHA256 (squid-6.13.tar.xz) = 232e0567946ccc0115653c3c18f01e83f2d9cc49c43d9dead8b319af0b35ad52
+SIZE (squid-6.13.tar.xz) = 2548680
diff --git a/www/squid/files/patch-configure b/www/squid/files/patch-configure
index c98cda36c325..0aa171813c01 100644
--- a/www/squid/files/patch-configure
+++ b/www/squid/files/patch-configure
@@ -1,27 +1,15 @@
---- configure.orig 2024-10-11 07:24:17 UTC
+--- configure.orig 2025-02-01 11:08:28 UTC
+++ configure
-@@ -29452,7 +29452,7 @@ fi
- fi
+@@ -43956,7 +43956,7 @@ BUILD_HELPER="NIS"
+ ##
-
--if test "x$with_nettle" != "xno"]
-+if test "x$with_nettle" != "xno"
- then :
-
-
-@@ -44043,7 +44043,10 @@ else $as_nop
-
- else $as_nop
-
-- BUILD_HELPER=""
-+# XXX: On FreeBSD we have to do this to make NIS work
-+# until https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=188247
-+# is resolved.
-+ BUILD_HELPER="NIS"
-
- fi
-
-@@ -50892,6 +50895,7 @@ ac_fn_cxx_check_type "$LINENO" "cpu_set_t" "ac_cv_type
+ BUILD_HELPER="NIS"
+- for ac_header in sys/types.h rpc/rpc.h rpcsvc/ypclnt.h rpcsvc/yp_prot.h crypt.h
++ for ac_header in sys/types.h rpc/rpc.h rpcsvc/ypclnt.h rpcsvc/yp_prot.h rpcsvc/crypt.h
+ do :
+ as_ac_Header=`printf "%s\n" "ac_cv_header_$ac_header" | $as_tr_sh`
+ ac_fn_cxx_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "
+@@ -50825,6 +50825,7 @@ ac_fn_cxx_check_type "$LINENO" "cpu_set_t" "ac_cv_type
ac_fn_cxx_check_type "$LINENO" "cpu_set_t" "ac_cv_type_cpu_set_t" "
#if HAVE_SCHED_H
@@ -29,7 +17,7 @@
#include <sched.h>
#endif
-@@ -53860,6 +53864,7 @@ else $as_nop
+@@ -53793,6 +53794,7 @@ else $as_nop
# include <sys/ioccom.h>
# include <netinet/in.h>
#undef minor_t
diff --git a/www/squid/files/patch-src-cf.data.pre b/www/squid/files/patch-src_cf.data.pre
index bfcdb4b2bc8a..5d2e4ecc1086 100644
--- a/www/squid/files/patch-src-cf.data.pre
+++ b/www/squid/files/patch-src_cf.data.pre
@@ -1,6 +1,6 @@
---- src/cf.data.pre.orig 2024-03-04 05:45:51 UTC
+--- src/cf.data.pre.orig 2025-01-31 08:52:43 UTC
+++ src/cf.data.pre
-@@ -5526,6 +5526,10 @@ DEFAULT: @DEFAULT_PID_FILE@
+@@ -5552,6 +5552,10 @@ DOC_START
LOC: Config.pidFilename
DOC_START
A filename to write the process-id to. To disable, enter "none".
diff --git a/www/squid/files/squid.in b/www/squid/files/squid.in
index e8ea315cc356..b1ba8938bf56 100644
--- a/www/squid/files/squid.in
+++ b/www/squid/files/squid.in
@@ -60,14 +60,16 @@ rcvar=squid_enable
# Make sure that we invoke squid with "-f ${squid_conf}"; define this
# variable early so reload_cmd and stop_precmd pick it up:
-extra_commands="reload configtest"
-reload_cmd=squid_reload
+# Workaround for https://bugs.squid-cache.org/show_bug.cgi?id=5390 until squid-7 is ported
+#extra_commands="reload configtest"
+#reload_cmd=squid_reload
start_precmd=squid_prestart
start_postcmd=squid_getpid
-stop_precmd=squid_prestop
-configtest_cmd=squid_configtest
-reload_precmd=squid_configtest
-restart_precmd=squid_configtest
+# Workaround for https://bugs.squid-cache.org/show_bug.cgi?id=5390 until squid-7 is ported
+#stop_precmd=squid_prestop
+#configtest_cmd=squid_configtest
+#reload_precmd=squid_configtest
+#restart_precmd=squid_configtest
# squid(8) will not start if ${squid_conf} is not present so try
# to catch that beforehand via ${required_files} rather than make
@@ -128,7 +130,8 @@ squid_prestart()
return 0
fi
- squid_configtest
+ # Workaround for https://bugs.squid-cache.org/show_bug.cgi?id=5390 until squid-7 is ported
+ #squid_configtest
}
squid_reload()
diff --git a/www/tinyauth/Makefile b/www/tinyauth/Makefile
new file mode 100644
index 000000000000..deb93522b649
--- /dev/null
+++ b/www/tinyauth/Makefile
@@ -0,0 +1,49 @@
+PORTNAME= tinyauth
+DISTVERSIONPREFIX= v
+DISTVERSION= 3.4.1
+CATEGORIES= www
+MASTER_SITES= LOCAL/dtxdf/${PORTNAME}/
+DISTFILES= ${PORTNAME}-${DISTVERSION}.frontend${EXTRACT_SUFX}
+
+MAINTAINER= dtxdf@FreeBSD.org
+COMMENT= Simplest way to protect your apps with a login screen
+WWW= https://tinyauth.app
+
+LICENSE= GPLv3
+LICENSE_FILE= ${WRKSRC}/LICENSE
+
+USES= go:1.23,modules
+USE_GITHUB= yes
+GH_ACCOUNT= steveiliop56
+
+USE_RC_SUBR= ${PORTNAME}
+
+GO_MOD_DIST= github
+GO_MODULE= github.com/steveiliop56/${PORTNAME}
+GO_BUILDFLAGS= -ldflags "\
+ -X 'tinyauth/internal/constants.Version=${DISTVERSIONPREFIX}${DISTVERSION}' \
+ -X 'tinyauth/internal/constants.CommitHash=${GITID}' \
+ -X 'tinyauth/internal/constants.BuildTimestamp=${BUILD_DATE}'"
+
+SUB_FILES= pkg-message
+SUB_LIST= USER=${USERS:[1]}
+
+USERS= ${TINYAUTH_USER}
+GROUPS= ${TINYAUTH_GROUP}
+
+PLIST_FILES= bin/${PORTNAME}
+
+# Run 'git checkout ${DISTVERSIONPREFIX}${DISTVERSION} && git rev-parse HEAD'
+# in the Tinyauth repository to get the value of GITID.
+GITID= 9eb296f14644267410655122e8aff6f0db83371a
+
+BUILD_DATE= $$(date -u '+%Y-%m-%dT%H:%M:%S')
+
+TINYAUTH_USER= ${PORTNAME}
+TINYAUTH_GROUP= ${TINYAUTH_USER}
+
+pre-build:
+ @${MKDIR} ${WRKSRC}/internal/assets/dist
+ @cd ${WRKDIR}/tinyauth-frontend && ${COPYTREE_SHARE} . ${WRKSRC}/internal/assets/dist
+
+.include <bsd.port.mk>
diff --git a/www/tinyauth/distinfo b/www/tinyauth/distinfo
new file mode 100644
index 000000000000..2325305b60e0
--- /dev/null
+++ b/www/tinyauth/distinfo
@@ -0,0 +1,7 @@
+TIMESTAMP = 1750535616
+SHA256 (go/www_tinyauth/steveiliop56-tinyauth-v3.4.1_GH0/tinyauth-3.4.1.frontend.tar.gz) = 65cfc1c70e7882d1152d8391b3126f294e388af1e1dacc7fa77d8274d12d189f
+SIZE (go/www_tinyauth/steveiliop56-tinyauth-v3.4.1_GH0/tinyauth-3.4.1.frontend.tar.gz) = 912295
+SHA256 (go/www_tinyauth/steveiliop56-tinyauth-v3.4.1_GH0/go.mod) = 822e543197823d37d4c6718279f77e610c6bb866a9cc34689f20fcc592c1b295
+SIZE (go/www_tinyauth/steveiliop56-tinyauth-v3.4.1_GH0/go.mod) = 5138
+SHA256 (go/www_tinyauth/steveiliop56-tinyauth-v3.4.1_GH0/steveiliop56-tinyauth-v3.4.1_GH0.tar.gz) = 75357015d84e62eb427fca54c9782459a2779d8ea2478602b447aef875757ebc
+SIZE (go/www_tinyauth/steveiliop56-tinyauth-v3.4.1_GH0/steveiliop56-tinyauth-v3.4.1_GH0.tar.gz) = 5629386
diff --git a/www/tinyauth/files/pkg-message.in b/www/tinyauth/files/pkg-message.in
new file mode 100644
index 000000000000..ead130a4241c
--- /dev/null
+++ b/www/tinyauth/files/pkg-message.in
@@ -0,0 +1,17 @@
+[
+{ type: install
+ message: <<EOM
+Tinyauth is installed
+
+1) Configure it in %%PREFIX%%/etc/tinyauth.env
+
+2) Enable it with
+
+ sysrc tinyauth_enable=YES
+
+3) Start it with
+
+ service tinyauth start
+EOM
+}
+]
diff --git a/www/tinyauth/files/tinyauth.in b/www/tinyauth/files/tinyauth.in
new file mode 100644
index 000000000000..00e28e49e60e
--- /dev/null
+++ b/www/tinyauth/files/tinyauth.in
@@ -0,0 +1,35 @@
+#!/bin/sh
+
+# PROVIDE: tinyauth
+# REQUIRE: LOGIN
+# KEYWORD: shutdown
+#
+# Configuration settings for tinyauth in /etc/rc.conf
+#
+# tinyauth_enable (bool): Enable tinyauth. (Default=NO)
+# tinyauth_env_file (str): Path containing the environment variables
+# to be used by tinyauth. (Default: %%PREFIX%%/etc/tinyauth.env)
+# tinyauth_logfile (str): Log file used to store the tinyauth's output. (Default: /var/log/tinyauth.log)
+# tinyauth_pidfile (str): File used by tinyauth to store the process ID. (Default: /var/run/tinyauth.pid)
+# tinyauth_runas (str): User to run tinyauth as. (Default: %%USER%%)
+
+. /etc/rc.subr
+
+name="tinyauth"
+desc="Simplest way to protect your apps with a login screen"
+rcvar="tinyauth_enable"
+
+load_rc_config $name
+
+: ${tinyauth_enable:="NO"}
+: ${tinyauth_env_file:="%%PREFIX%%/etc/tinyauth.env"}
+: ${tinyauth_logfile:="/var/log/tinyauth.log"}
+: ${tinyauth_pidfile:="/var/run/tinyauth.pid"}
+: ${tinyauth_runas:="%%USER%%"}
+
+pidfile="${tinyauth_pidfile}"
+procname="%%LOCALBASE%%/bin/tinyauth"
+command="/usr/sbin/daemon"
+command_args="-o '${tinyauth_logfile}' -p '${pidfile}' -u '${tinyauth_runas}' -t '${desc}' -- '${procname}'"
+
+run_rc_command "$1"
diff --git a/www/tinyauth/pkg-descr b/www/tinyauth/pkg-descr
new file mode 100644
index 000000000000..6ac24c9465b9
--- /dev/null
+++ b/www/tinyauth/pkg-descr
@@ -0,0 +1,4 @@
+Tinyauth is a simple authentication middleware that adds a simple
+login screen or OAuth with Google, Github and any provider to all
+of your docker apps. It supports all the popular proxies like
+Traefik, Nginx and Caddy.