1
0
mirror of https://git.freebsd.org/ports.git synced 2026-06-02 11:08:52 +00:00

net-mgmt/seafile-server,www/seahub: Deprecate

Updating www/seahub, and especially net-mgmt/seafile-server, is more
difficult than originally anticipated. The current version of www/seahub
also only runs with Django 4.2, which has been end-of-life since April.

Before www/seahub and net-mgmt/seafile-server are marked as BROKEN after
the migration of the affected ports to Django 5.2 [1], and then vanish
from the ports tree at the end of 2026Q2 - which would also break POLA
due the short time period - do the following to buy some time for a
possible update:

* Create required py-dj42-* ports and switch www/seahub to them. These
  py-dj42-* ports were copied from their original counterparts, are
  bound to Django 4.2, and have also been adapted for the PEP517 build
  framework to make them future-proof. Also adjust related entries in
  MOVED.

* Add CONFLICTS_INSTALL entries to the original counterparts as well
  where necessary.

* Bump PORTREVISION of www/seahub due changed dependencies.

* Set a suitable EXPIRATION_DATE to have enough time to work on an
  update.  The EXPIRATION_DATE for www/py-django42 will adjusted
  accordingly afterwards.

PR:		291707 [1]
Reviewed by:	ultima (maintainer)
Differential Revision:	https://reviews.freebsd.org/D57227
This commit is contained in:
Kai Knoblich
2026-05-26 13:24:35 +02:00
parent a6cc2fd40d
commit 74ee429290
31 changed files with 302 additions and 8 deletions
-1
View File
@@ -3327,7 +3327,6 @@ www/py-dj42-django-allauth|www/py-django-allauth|2024-06-15|Has expired: Obsolet
www/py-dj42-django-crispy-forms|www/py-django-crispy-forms|2024-06-15|Has expired: Obsolete, please use www/py-django-crispy-forms instead
www/py-dj42-django-modelcluster|www/py-django-modelcluster|2024-06-15|Has expired: Obsolete, please use www/py-django-modelcluster instead
www/py-dj42-django-extensions|www/py-django-extensions|2024-06-15|Has expired: Obsolete, please use www/py-django-extensions instead
www/py-dj42-djangorestframework|www/py-djangorestframework|2024-06-15|Has expired: Obsolete, please use www/py-djangorestframework instead
www/py-dj42-django-debug-toolbar|www/py-django-debug-toolbar|2024-06-15|Has expired: Obsolete, please use www/py-django-debug-toolbar instead
devel/rubygem-ddtrace|devel/rubygem-datadog|2024-06-18|Move devel/rubygem-ddtrace to devel/rubygem-datadog
databases/py-sqlalchemy13||2024-06-24|Has expired: Upstream makred EOL in Release Status
+3
View File
@@ -12,6 +12,9 @@ WWW= https://github.com/haiwen/seafile-server
LICENSE= GPLv3
LICENSE_FILE= ${WRKSRC}/LICENSE.txt
DEPRECATED= The update to a newer version is more difficult than expected, and the current version of the web backend, www/seahub, only runs on Django 4.2
EXPIRATION_DATE=2026-08-31
LIB_DEPENDS= libsearpc.so:devel/libsearpc \
libevhtp.so:www/libevhtp \
libzdb.so:databases/libzdb \
+7
View File
@@ -1553,6 +1553,13 @@
SUBDIR += py-dash-bootstrap-components
SUBDIR += py-ddgs
SUBDIR += py-dj-database-url
SUBDIR += py-dj42-django-picklefield
SUBDIR += py-dj42-django-ranged-response
SUBDIR += py-dj42-django-simple-captcha
SUBDIR += py-dj42-django-webpack-loader
SUBDIR += py-dj42-django_statici18n
SUBDIR += py-dj42-djangorestframework
SUBDIR += py-dj42-djangosaml2
SUBDIR += py-dj52-channels
SUBDIR += py-dj52-channels-redis
SUBDIR += py-dj52-django-allauth
+30
View File
@@ -0,0 +1,30 @@
PORTNAME= django-picklefield
PORTVERSION= 3.4.0
CATEGORIES= www python
MASTER_SITES= PYPI
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}dj42-
DISTNAME= django_picklefield-${PORTVERSION}
MAINTAINER= ultima@FreeBSD.org
COMMENT= Pickled object field for Django
WWW= https://github.com/gintas/django-picklefield
LICENSE= MIT
LICENSE_FILE= ${WRKSRC}/LICENSE
DEPRECATED= Serves as a transition only for www/seahub and requires Django 4.2, which has been end-of-life since April
EXPIRATION_DATE=2026-08-31
BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}django42>=0:www/py-django42@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}setuptools>=0:devel/py-setuptools@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}wheel>=0:devel/py-wheel@${PY_FLAVOR}
RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}django42>=4.2:www/py-django42@${PY_FLAVOR}
USES= python
USE_PYTHON= autoplist concurrent pep517
CONFLICTS_INSTALL= ${PYTHON_PKGNAMEPREFIX}*${PORTNAME}
NO_ARCH= yes
.include <bsd.port.mk>
+3
View File
@@ -0,0 +1,3 @@
TIMESTAMP = 1768625787
SHA256 (django_picklefield-3.4.0.tar.gz) = 3a1f740536c0e60d0dba43aa89ccdbe86760d4c3f8ec47799eae122baa741d0a
SIZE (django_picklefield-3.4.0.tar.gz) = 12555
+6
View File
@@ -0,0 +1,6 @@
picklefield provides an implementation of a pickled object field. Such fields
can contain any picklable objects.
It is incredibly useful for storing just about anything in the database
(provided it is Pickle-able, of course) when there isn't a 'proper' field for
the job.
@@ -0,0 +1,27 @@
PORTNAME= django-ranged-response
DISTVERSION= 0.2.0
CATEGORIES= www python
MASTER_SITES= PYPI
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}dj42-
MAINTAINER= ultima@FreeBSD.org
COMMENT= Modified Django FileResponse that adds Content-Range headers
WWW= https://github.com/i3thuan5/django-ranged-response
LICENSE= MIT
DEPRECATED= Serves as a transition only for www/seahub and requires Django 4.2, which has been end-of-life since April
EXPIRATION_DATE=2026-08-31
BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}setuptools>0:devel/py-setuptools@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}wheel>0:devel/py-wheel@${PY_FLAVOR}
RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}django42>=0:www/py-django42@${PY_FLAVOR}
USES= python
USE_PYTHON= autoplist pep517
CONFLICTS_INSTALL= ${PYTHON_PKGNAMEPREFIX}*${PORTNAME}
NO_ARCH= yes
.include <bsd.port.mk>
@@ -0,0 +1,3 @@
TIMESTAMP = 1525989759
SHA256 (django-ranged-response-0.2.0.tar.gz) = f71fff352a37316b9bead717fc76e4ddd6c9b99c4680cdf4783b9755af1cf985
SIZE (django-ranged-response-0.2.0.tar.gz) = 3021
@@ -0,0 +1,3 @@
This is a modified FileResponse that returns 'Content-Range' headers with the
HTTP response, so browsers (e.g. Safari 9+) that request the file, can stream
the response properly.
@@ -0,0 +1,31 @@
PORTNAME= django-simple-captcha
PORTVERSION= 0.6.3
CATEGORIES= www python
MASTER_SITES= PYPI
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}dj42-
DISTNAME= django_simple_captcha-${PORTVERSION}
MAINTAINER= ultima@FreeBSD.org
COMMENT= Simple, yet powerful, Django captcha application
WWW= https://pypi.org/project/django-simple-captcha/
LICENSE= MIT
LICENSE_FILE= ${WRKSRC}/LICENSE
DEPRECATED= Serves as a transition only for www/seahub and requires Django 4.2, which has been end-of-life since April
EXPIRATION_DATE=2026-08-31
BUILD_DEPENDS= ${PY_SETUPTOOLS} \
${PYTHON_PKGNAMEPREFIX}wheel>0:devel/py-wheel@${PY_FLAVOR}
RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}django42>=4.2:www/py-django42@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}dj42-django-ranged-response>=0.2.0<0.2.0_99:www/py-dj42-django-ranged-response@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}pillow>=6.2.0:graphics/py-pillow@${PY_FLAVOR}
USES= python
USE_PYTHON= autoplist pep517
CONFLICTS_INSTALL= ${PYTHON_PKGNAMEPREFIX}*${PORTNAME}
NO_ARCH= yes
.include <bsd.port.mk>
@@ -0,0 +1,3 @@
TIMESTAMP = 1766075362
SHA256 (django_simple_captcha-0.6.3.tar.gz) = 6d295dac7213946631b88783b420e58d5d67bf2ff1c9704ac57986323e23bbef
SIZE (django_simple_captcha-0.6.3.tar.gz) = 125646
@@ -0,0 +1,2 @@
Django Simple Captcha is an extremely simple, yet highly customizable Django
application to add captcha images to any Django form.
@@ -0,0 +1,28 @@
PORTNAME= django-webpack-loader
PORTVERSION= 3.1.1
CATEGORIES= www python
MASTER_SITES= PYPI
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}dj42-
MAINTAINER= ultima@FreeBSD.org
COMMENT= Transparently use webpack with Django
WWW= https://pypi.org/project/django-webpack-loader
LICENSE= MIT
LICENSE_FILE= ${WRKSRC}/LICENSE
DEPRECATED= Serves as a transition only for www/seahub and requires Django 4.2, which has been end-of-life since April
EXPIRATION_DATE=2026-08-31
BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}setuptools>0:devel/py-setuptools@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}wheel>0:devel/py-wheel@${PY_FLAVOR}
RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}django42>=2.0:www/py-django42@${PY_FLAVOR}
USES= python
USE_PYTHON= autoplist concurrent pep517
CONFLICTS_INSTALL= ${PYTHON_PKGNAMEPREFIX}*${PORTNAME}
NO_ARCH= yes
.include <bsd.port.mk>
@@ -0,0 +1,3 @@
TIMESTAMP = 1734389409
SHA256 (django-webpack-loader-3.1.1.tar.gz) = f11b79700d1bfc1299131bdf4ba479c1ec200f83a1400e1a2feb5c2ba7b6f8c4
SIZE (django-webpack-loader-3.1.1.tar.gz) = 18371
@@ -0,0 +1,6 @@
Use webpack to generate your static bundles without
Django's staticfiles or opaque wrappers.
Django webpack loader consumes the output generated
by webpack-bundle-tracker and lets you use the
generated bundles in Django.
+29
View File
@@ -0,0 +1,29 @@
PORTNAME= django_statici18n
PORTVERSION= 2.6.0
CATEGORIES= www python
MASTER_SITES= PYPI
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}dj42-
MAINTAINER= ultima@FreeBSD.org
COMMENT= Helper for generating Javascript catalog to static files
WWW= https://github.com/zyegfryed/django-statici18n
LICENSE= MIT
LICENSE_FILE= ${WRKSRC}/LICENSE
DEPRECATED= Serves as a transition only for www/seahub and requires Django 4.2, which has been end-of-life since April
EXPIRATION_DATE=2026-08-31
BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}setuptools>0:devel/py-setuptools@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}wheel>0:devel/py-wheel@${PY_FLAVOR}
RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}django42>=3.2:www/py-django42@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}django-appconf>=1.0:www/py-django-appconf@${PY_FLAVOR}
USES= python
USE_PYTHON= autoplist pep517
CONFLICTS_INSTALL= ${PYTHON_PKGNAMEPREFIX}*${PORTNAME}
NO_ARCH= yes
.include <bsd.port.mk>
+3
View File
@@ -0,0 +1,3 @@
TIMESTAMP = 1771211042
SHA256 (django_statici18n-2.6.0.tar.gz) = 87ed5adb15d6b32d20f438df76f39f16cc5804f452a8785bebc64729ff08cfb4
SIZE (django_statici18n-2.6.0.tar.gz) = 7907
+9
View File
@@ -0,0 +1,9 @@
When dealing with internationalization in JavaScript code, Django provides
the javascript_catalog view which sends out a JavaScript code library with
functions that mimic the gettext interface, plus an array of translation
strings.
At first glance, it works well and everything is fine. But, because
javascript_catalog view is generating JavaScript catalog dynamically
on each request, it's adding an overhead that can be an issue with site
growth.
+28
View File
@@ -0,0 +1,28 @@
PORTNAME= djangorestframework
DISTVERSION= 3.16.1
CATEGORIES= www python
MASTER_SITES= PYPI
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}dj42-
MAINTAINER= ultima@FreeBSD.org
COMMENT= Django REST framework
WWW= https://www.django-rest-framework.org/
LICENSE= BSD2CLAUSE
LICENSE_FILE= ${WRKSRC}/LICENSE.md
DEPRECATED= Serves as a transition only for www/seahub and requires Django 4.2, which has been end-of-life since April
EXPIRATION_DATE=2026-08-31
BUILD_DEPENDS= ${PY_SETUPTOOLS} \
${PYTHON_PKGNAMEPREFIX}wheel>=0:devel/py-wheel@${PY_FLAVOR}
RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}django42>=4.2:www/py-django42@${PY_FLAVOR}
USES= python
USE_PYTHON= autoplist pep517
CONFLICTS_INSTALL= ${PYTHON_PKGNAMEPREFIX}*${PORTNAME}
NO_ARCH= yes
.include <bsd.port.mk>
+3
View File
@@ -0,0 +1,3 @@
TIMESTAMP = 1755333901
SHA256 (djangorestframework-3.16.1.tar.gz) = 166809528b1aced0a17dc66c24492af18049f2c9420dbd0be29422029cfc3ff7
SIZE (djangorestframework-3.16.1.tar.gz) = 1089735
+15
View File
@@ -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.
+29
View File
@@ -0,0 +1,29 @@
PORTNAME= djangosaml2
PORTVERSION= 1.11.1
CATEGORIES= www python
MASTER_SITES= PYPI
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}dj42-
MAINTAINER= ultima@FreeBSD.org
COMMENT= Pysaml2 integration for Django
WWW= https://github.com/IdentityPython/djangosaml2
LICENSE= APACHE20
DEPRECATED= Serves as a transition only for www/seahub and requires Django 4.2, which has been end-of-life since April
EXPIRATION_DATE=2026-08-31
BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}setuptools>0:devel/py-setuptools@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}wheel>0:devel/py-wheel@${PY_FLAVOR}
RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}django42>=4.2:www/py-django42@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}pysaml2>=6.5.1:security/py-pysaml2@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}defusedxml>=0.4.1:devel/py-defusedxml@${PY_FLAVOR}
USES= python
USE_PYTHON= autoplist pep517
CONFLICTS_INSTALL= ${PYTHON_PKGNAMEPREFIX}*${PORTNAME}
NO_ARCH= yes
.include <bsd.port.mk>
+3
View File
@@ -0,0 +1,3 @@
TIMESTAMP = 1771220936
SHA256 (djangosaml2-1.11.1.tar.gz) = f4fcbba980e6f3ad5b47f1f2d0f7296bcee4e37e2ee8237e44b28efe77f2d383
SIZE (djangosaml2-1.11.1.tar.gz) = 57721
+4
View File
@@ -0,0 +1,4 @@
A Django application that builds a Fully Compliant
SAML2 Service Provider on top of PySAML2 library.
Djangosaml2 protects your project with a SAML2 SSO
Authentication.
+2
View File
@@ -22,4 +22,6 @@ USE_PYTHON= autoplist concurrent pep517
NO_ARCH= yes
CONFLICTS_INSTALL= ${PYTHON_PKGNAMEPREFIX}*django-picklefield
.include <bsd.port.mk>
+3
View File
@@ -15,6 +15,9 @@ RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}django42>=0:www/py-django42@${PY_FLAVOR}
USES= python
USE_PYTHON= distutils autoplist
CONFLICTS_INSTALL= ${PYTHON_PKGNAMEPREFIX}*${PORTNAME}
NO_ARCH= yes
.include <bsd.port.mk>
+2
View File
@@ -21,6 +21,8 @@ RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}django42>=4.2:www/py-django42@${PY_FLAVOR} \
USES= python
USE_PYTHON= autoplist concurrent pep517
CONFLICTS_INSTALL= ${PYTHON_PKGNAMEPREFIX}*${PORTNAME}
NO_ARCH= yes
PORTDOCS= *
+3
View File
@@ -17,6 +17,9 @@ RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}django42>=2.0:www/py-django42@${PY_FLAVOR}
USES= python
USE_PYTHON= distutils autoplist concurrent
CONFLICTS_INSTALL= ${PYTHON_PKGNAMEPREFIX}*${PORTNAME}
NO_ARCH= yes
.include <bsd.port.mk>
+2
View File
@@ -17,6 +17,8 @@ RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}django42>=3.2:www/py-django42@${PY_FLAVOR} \
USES= python
USE_PYTHON= autoplist distutils
CONFLICTS_INSTALL= ${PYTHON_PKGNAMEPREFIX}*${PORTNAME}
NO_ARCH= yes
.include <bsd.port.mk>
+2
View File
@@ -17,6 +17,8 @@ RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}django42>=4.2:www/py-django42@${PY_FLAVOR} \
USES= python
USE_PYTHON= autoplist distutils
CONFLICTS_INSTALL= ${PYTHON_PKGNAMEPREFIX}*${PORTNAME}
NO_ARCH= yes
.include <bsd.port.mk>
+10 -7
View File
@@ -2,7 +2,7 @@ PORTNAME= seahub
DISTVERSIONPREFIX= v
DISTVERSION= ${SEAHUB_VER}
DISTVERSIONSUFFIX= -server
PORTREVISION= 1
PORTREVISION= 2
CATEGORIES= www
MAINTAINER= ultima@FreeBSD.org
@@ -12,17 +12,20 @@ WWW= https://github.com/haiwen/seahub
LICENSE= APACHE20
LICENSE_FILE= ${WRKSRC}/LICENSE.txt
DEPRECATED= The update of net-mgmt/seafile-server to a newer version is more difficult than expected, and the current version of www/seahub only runs on Django 4.2
EXPIRATION_DATE=2026-08-31
BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}django42>=0:www/py-django42@${PY_FLAVOR}
RUN_DEPENDS= bash:shells/bash \
${LOCALBASE}/www/haiwen/seafile-server/seafile/bin/seaf-server:net-mgmt/seafile-server \
${PYTHON_PKGNAMEPREFIX}django42>=0:www/py-django42@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}django_statici18n>=2.3:www/py-django_statici18n@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}django-webpack-loader>=1.7:www/py-django-webpack-loader@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}django-picklefield>=3.1:www/py-django-picklefield@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}dj42-django_statici18n>=2.3:www/py-dj42-django_statici18n@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}dj42-django-webpack-loader>=1.7:www/py-dj42-django-webpack-loader@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}dj42-django-picklefield>=3.1:www/py-dj42-django-picklefield@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}django-formtools>=2.3:www/py-django-formtools@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}djangosaml2>=1.5:www/py-djangosaml2@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}djangorestframework>=3.14:www/py-djangorestframework@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}dj42-djangosaml2>=1.5:www/py-dj42-djangosaml2@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}dj42-djangorestframework>=3.14:www/py-dj42-djangorestframework@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}python-dateutil>=2.8:devel/py-python-dateutil@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}pyjwt>=2.6:www/py-pyjwt@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}pycryptodome>=3.20:security/py-pycryptodome@${PY_FLAVOR} \
@@ -37,7 +40,7 @@ RUN_DEPENDS= bash:shells/bash \
${PYTHON_PKGNAMEPREFIX}pillow>=10.2:graphics/py-pillow@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}chardet>=5.1:textproc/py-chardet@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}cffi>=1.15:devel/py-cffi@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}django-simple-captcha>=0.5:www/py-django-simple-captcha@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}dj42-django-simple-captcha>=0.5:www/py-dj42-django-simple-captcha@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}openpyxl>=3.0:textproc/py-openpyxl@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}markdown>=3.3:textproc/py-markdown@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}bleach>=5.0:www/py-bleach@${PY_FLAVOR} \