diff --git a/www/radicale/Makefile b/www/radicale/Makefile index 823e7266abdb..230fda6b1063 100644 --- a/www/radicale/Makefile +++ b/www/radicale/Makefile @@ -1,49 +1,50 @@ PORTNAME= radicale PORTVERSION= 3.1.8 +PORTREVISION= 1 CATEGORIES= www python MASTER_SITES= CHEESESHOP PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX} DISTNAME= Radicale-${PORTVERSION} MAINTAINER= decke@FreeBSD.org COMMENT= Python based CalDAV/CardDAV server WWW= https://radicale.org/ LICENSE= GPLv3+ LICENSE_FILE= ${WRKSRC}/COPYING.md BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}setuptools>=0:devel/py-setuptools@${PY_FLAVOR} RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}bcrypt>=0:security/py-bcrypt@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}passlib>=0:security/py-passlib@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}vobject>=0.9.6:deskutils/py-vobject@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}dateutil>=2.7.3:devel/py-dateutil@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}defusedxml>0:devel/py-defusedxml@${PY_FLAVOR} USES= cpe python:3.6+ shebangfix USE_PYTHON= autoplist distutils USERS= radicale GROUPS= radicale USE_RC_SUBR= radicale NO_ARCH= yes SHEBANG_FILES= radicale.wsgi SUB_LIST= USERS="${USERS}" GROUPS="${GROUPS}" PYTHON_CMD="${PYTHON_CMD}" post-patch: @${REINPLACE_CMD} 's,/etc/radicale,${ETCDIR},g' \ ${WRKSRC}/config \ ${WRKSRC}/radicale/config.py @${REINPLACE_CMD} 's,/etc/ssl,${ETCDIR},g' \ ${WRKSRC}/config \ ${WRKSRC}/radicale/config.py @${REINPLACE_CMD} 's,/var/lib/radicale,${DATADIR},g' \ ${WRKSRC}/config \ ${WRKSRC}/radicale/config.py post-install: @${MKDIR} ${STAGEDIR}/${ETCDIR} ${STAGEDIR}/${DATADIR} ${STAGEDIR}/${WWWDIR} ${INSTALL_DATA} ${WRKSRC}/config ${STAGEDIR}/${ETCDIR}/config.sample ${INSTALL_DATA} ${WRKSRC}/rights ${STAGEDIR}/${ETCDIR}/rights.sample ${INSTALL_SCRIPT} ${WRKSRC}/radicale.wsgi ${STAGEDIR}${WWWDIR}/radicale.wsgi .include diff --git a/www/radicale/files/patch-radicale_item_filter.py b/www/radicale/files/patch-radicale_item_filter.py new file mode 100644 index 000000000000..a6a5e5cc1ae2 --- /dev/null +++ b/www/radicale/files/patch-radicale_item_filter.py @@ -0,0 +1,25 @@ +--- radicale/item/filter.py.orig 2022-07-14 20:36:41 UTC ++++ radicale/item/filter.py +@@ -225,6 +225,7 @@ def visit_time_ranges(vobject_item: vobject.base.Compo + def get_children(components: Iterable[vobject.base.Component]) -> Iterator[ + Tuple[vobject.base.Component, bool, List[date]]]: + main = None ++ rec_main = None + recurrences = [] + for comp in components: + if hasattr(comp, "recurrence_id") and comp.recurrence_id.value: +@@ -232,11 +233,14 @@ def visit_time_ranges(vobject_item: vobject.base.Compo + if comp.rruleset: + # Prevent possible infinite loop + raise ValueError("Overwritten recurrence with RRULESET") ++ rec_main = comp + yield comp, True, [] + else: + if main is not None: + raise ValueError("Multiple main components") + main = comp ++ if main is None and len(recurrences) == 1: ++ main = rec_main + if main is None: + raise ValueError("Main component missing") + yield main, False, recurrences