pkgsrc-WIP-changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Radicale3: Update to v3.1.8



Module Name:	pkgsrc-wip
Committed By:	Hauke Fath <hauke%NetBSD.org@localhost>
Pushed By:	hauke
Date:		Thu Nov 3 21:19:43 2022 +0100
Changeset:	c706753930226e6634b61412639473baa293339a

Modified Files:
	Radicale3/Makefile
	Radicale3/PLIST
	Radicale3/distinfo
	Radicale3/files/radicale.sh

Log Message:
Radicale3: Update to v3.1.8

From the upstream changelog:

* Fix setuptools requirement if installing wheel
* Tests: Switch from `python setup.py test` to `tox`
* Small changes to build system configuration and tests

* Fix random href fallback

* Ignore `Not a directory` error for optional config paths
* Fix upload of whole address book/calendar with UIDs that collide on
  case-insensitive filesystem
* Remove runtime dependency on setuptools for Python>=3.9
* Windows: Block ADS paths

* Ignore configuration file if access is denied
* Use F_FULLFSYNC with PyPy on MacOS
* Fallback if F_FULLFSYNC is not supported by the filesystem

* Fallback if RENAME_EXCHANGE is not supported by the filesystem
* Assume POSIX compatibility if `sys.platform` is not `win32`

* Redirect '~/.well-known/caldav' and '~/.well-known/carddav' to base prefix
* Warning instead of error when base prefix ends with '/'

* Verify that base prefix starts with '/' but doesn't end with '/'
* Improve base prefix log message
* Never send body for HEAD requests (again)

* Workaround for contact photo bug in InfCloud
* Redirect GET and HEAD requests under `/.web` to sanitized path
* Set `Content-Length` header for HEAD requests
* Never send body for HEAD requests
* Improve error messages for `from_file` rights backend
* Don't sanitize WSGI script name

* Single `<D:propstat>` element in PROPPATCH response
* Allow multiple `<D:set>` and `<D:remove>` elements
* Improve log messages
* Fix date filter
* Improve sanitization of collection properties
* Cancel mkcalendar request on error
* Use **renameat2** on Linux for atomic overwriting of collections
* Command Line Parser
  * Disallow abbreviated arguments
  * Support backend specific options and HTTP headers
  * Optional argument for boolean options
  * Load no config file for `--config` without argument
* Allow float for server->timeout setting
* Fix **is-not-defined** filter in **addressbook-query** report
* Add python type hints
* Add **multifilesystem_nolock** storage
* Add support for Python 3.9 and 3.10
* Drop support for Python 3.5
* Fix compatibility with Evolution (Exceptions from recurrence rules)

TODO is done by running radicale with sysutils/daemonize

Change user:group to something less generic than 'www'

Move data store from PREFIX/share to VARBASE, since it is runtime data

Install documentation

Fix PKG_SYSCONFDIR handling

-- pkglint is happy, this could be moved to pkgsrc, I guess.

To see a diff of this commit:
https://wip.pkgsrc.org/cgi-bin/gitweb.cgi?p=pkgsrc-wip.git;a=commitdiff;h=c706753930226e6634b61412639473baa293339a

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

diffstat:
 Radicale3/Makefile          | 69 ++++++++++++++++++++++++++++++---------------
 Radicale3/PLIST             | 18 ++++++++++++
 Radicale3/distinfo          |  6 ++--
 Radicale3/files/radicale.sh | 36 +++++++++++++----------
 4 files changed, 88 insertions(+), 41 deletions(-)

diffs:
diff --git a/Radicale3/Makefile b/Radicale3/Makefile
index b54026fedd..e87eec6553 100644
--- a/Radicale3/Makefile
+++ b/Radicale3/Makefile
@@ -1,6 +1,6 @@
-# $NetBSD: Makefile,v 1.10 2020/07/13 20:05:12 wiz Exp $
+# $NetBSD$
 
-DISTNAME=	Radicale-3.0.6
+DISTNAME=	Radicale-3.1.8
 CATEGORIES=	net time www
 MASTER_SITES=	${MASTER_SITE_PYPI:=R/Radicale/}
 
@@ -9,47 +9,70 @@ HOMEPAGE=	https://radicale.org/
 COMMENT=	CalDAV (calendar) and CardDAV (contact) server
 LICENSE=	gnu-gpl-v3
 
-EGDIR=			share/examples/radicale
+DEPENDS+=	${PYPKGPREFIX}-vobject-[0-9]*:../../textproc/py-vobject
+DEPENDS+=	${PYPKGPREFIX}-defusedxml-[0-9]*:../../textproc/py-defusedxml
+DEPENDS+=	${PYPKGPREFIX}-dateutil-[0-9]*:../../time/py-dateutil
+
+# for md5 htpasswd_encryption method
+DEPENDS+=	${PYPKGPREFIX}-passlib-[0-9]*:../../security/py-passlib
+
+DEPENDS+=	daemonize>=1.7.8:../../sysutils/daemonize
+
+BUILD_DEFS+=			VARBASE
 
-RADICALE_USER?=			www
-RADICALE_GROUP?=		www
+RADICALE_USER?=			radicale
+RADICALE_GROUP?=		radicale
 PKG_GROUPS=			${RADICALE_GROUP}
 PKG_USERS=			${RADICALE_USER}:${RADICALE_GROUP}
+
 PYTHON_VERSIONS_INCOMPATIBLE=	27
+PYTHON_VERSIONED_DEPENDENCIES+=	setuptools
+
+PKG_SYSCONFSUBDIR=	radicale
 
-INSTALLATION_DIRS=	${EGDIR}
-OWN_DIRS=		${PKG_SYSCONFDIR}/radicale
-CONF_FILES+=		${EGDIR}/config ${PKG_SYSCONFDIR}/radicale/config
 RCD_SCRIPTS=		radicale
+
+EGDIR=			share/examples/radicale
+DOCDIR=			share/doc/radicale
+INSTALLATION_DIRS=	${EGDIR} ${DOCDIR}
+
+RADICALE_LOGDIR=	${VARBASE}/log/radicale
+OWN_DIRS_PERMS+=	${RADICALE_LOGDIR} ${RADICALE_USER} \
+				${RADICALE_GROUP} 0750
+RADICALE_DATADIR=	${VARBASE}/radicale
+OWN_DIRS_PERMS+=	${RADICALE_DATADIR} ${RADICALE_USER} \
+				${RADICALE_GROUP} 0750
+
+CONF_FILES+=		${EGDIR}/config ${PKG_SYSCONFDIR}/config
+CONF_FILES+=		${EGDIR}/rights ${PKG_SYSCONFDIR}/rights
+
 FILES_SUBST+=		RADICALE_USER=${RADICALE_USER}
 FILES_SUBST+=		RADICALE_GROUP=${RADICALE_GROUP}
+FILES_SUBST+=		RADICALE_LOGDIR=${RADICALE_LOGDIR}
 FILES_SUBST+=		PYTHONBIN=${PYTHONBIN}
 
 SUBST_CLASSES+=		config
-SUBST_SED.config+=	-e 's,/etc,${PKG_SYSCONFDIR},g'
-SUBST_SED.config+=	-e 's,/var/lib,${PREFIX}/share,g'
+SUBST_SED.config+=	-e 's,/etc/radicale,${PKG_SYSCONFDIR},g'
+SUBST_SED.config+=	-e 's,/var/lib/,${VARBASE}/,g'
 SUBST_FILES.config+=	radicale/config.py config rights
+SUBST_FILES.config+=	DOCUMENTATION.md
 SUBST_STAGE.config=	pre-configure
-SUBST_MESSAGE.config=	Fixing path to configuration file.
+SUBST_MESSAGE.config=	Fixing path to configuration file
 
 SUBST_CLASSES+=		server
 SUBST_SED.server+=	-e 's,\#filesystem_folder,filesystem_folder,'
 SUBST_FILES.server+=	config
 SUBST_STAGE.server=	pre-configure
-SUBST_MESSAGE.server=	Override default collection location
-
-DEPENDS+=		${PYPKGPREFIX}-vobject-[0-9]*:../../textproc/py-vobject
-DEPENDS+=		${PYPKGPREFIX}-defusedxml-[0-9]*:../../textproc/py-defusedxml
-DEPENDS+=		${PYPKGPREFIX}-dateutil-[0-9]*:../../time/py-dateutil
-
-# for md5 htpasswd_encryption method
-DEPENDS+=		${PYPKGPREFIX}-passlib-[0-9]*:../../security/py-passlib
+SUBST_MESSAGE.server=	Adapt default collection location
 
 post-install:
-	${INSTALL_DATA} ${WRKSRC}/config ${DESTDIR}${PREFIX}/${EGDIR}/config
-	${INSTALL_DATA} ${WRKSRC}/rights ${DESTDIR}${PREFIX}/${EGDIR}/rights
-
-PYTHON_VERSIONED_DEPENDENCIES+=	setuptools
+.for docf in config rights radicale.wsgi
+	${INSTALL_DATA} ${WRKSRC}/${docf} ${DESTDIR}${PREFIX}/${EGDIR}/${docf}
+.endfor
+.for docf in CHANGELOG COPYING DOCUMENTATION README
+	${INSTALL_DATA} ${WRKSRC}/${docf}.md \
+		${DESTDIR}${PREFIX}/${DOCDIR}/${docf}.md
+.endfor
 
 .include "../../lang/python/egg.mk"
 .include "../../lang/python/versioned_dependencies.mk"
diff --git a/Radicale3/PLIST b/Radicale3/PLIST
index b7c9ad57ea..95303b8a5c 100644
--- a/Radicale3/PLIST
+++ b/Radicale3/PLIST
@@ -15,6 +15,9 @@ ${PYSITELIB}/radicale/__main__.pyo
 ${PYSITELIB}/radicale/app/__init__.py
 ${PYSITELIB}/radicale/app/__init__.pyc
 ${PYSITELIB}/radicale/app/__init__.pyo
+${PYSITELIB}/radicale/app/base.py
+${PYSITELIB}/radicale/app/base.pyc
+${PYSITELIB}/radicale/app/base.pyo
 ${PYSITELIB}/radicale/app/delete.py
 ${PYSITELIB}/radicale/app/delete.pyc
 ${PYSITELIB}/radicale/app/delete.pyo
@@ -84,6 +87,7 @@ ${PYSITELIB}/radicale/log.pyo
 ${PYSITELIB}/radicale/pathutils.py
 ${PYSITELIB}/radicale/pathutils.pyc
 ${PYSITELIB}/radicale/pathutils.pyo
+${PYSITELIB}/radicale/py.typed
 ${PYSITELIB}/radicale/rights/__init__.py
 ${PYSITELIB}/radicale/rights/__init__.pyc
 ${PYSITELIB}/radicale/rights/__init__.pyo
@@ -108,6 +112,9 @@ ${PYSITELIB}/radicale/storage/__init__.pyo
 ${PYSITELIB}/radicale/storage/multifilesystem/__init__.py
 ${PYSITELIB}/radicale/storage/multifilesystem/__init__.pyc
 ${PYSITELIB}/radicale/storage/multifilesystem/__init__.pyo
+${PYSITELIB}/radicale/storage/multifilesystem/base.py
+${PYSITELIB}/radicale/storage/multifilesystem/base.pyc
+${PYSITELIB}/radicale/storage/multifilesystem/base.pyo
 ${PYSITELIB}/radicale/storage/multifilesystem/cache.py
 ${PYSITELIB}/radicale/storage/multifilesystem/cache.pyc
 ${PYSITELIB}/radicale/storage/multifilesystem/cache.pyo
@@ -144,6 +151,12 @@ ${PYSITELIB}/radicale/storage/multifilesystem/upload.pyo
 ${PYSITELIB}/radicale/storage/multifilesystem/verify.py
 ${PYSITELIB}/radicale/storage/multifilesystem/verify.pyc
 ${PYSITELIB}/radicale/storage/multifilesystem/verify.pyo
+${PYSITELIB}/radicale/storage/multifilesystem_nolock.py
+${PYSITELIB}/radicale/storage/multifilesystem_nolock.pyc
+${PYSITELIB}/radicale/storage/multifilesystem_nolock.pyo
+${PYSITELIB}/radicale/types.py
+${PYSITELIB}/radicale/types.pyc
+${PYSITELIB}/radicale/types.pyo
 ${PYSITELIB}/radicale/utils.py
 ${PYSITELIB}/radicale/utils.pyc
 ${PYSITELIB}/radicale/utils.pyo
@@ -163,5 +176,10 @@ ${PYSITELIB}/radicale/web/none.pyo
 ${PYSITELIB}/radicale/xmlutils.py
 ${PYSITELIB}/radicale/xmlutils.pyc
 ${PYSITELIB}/radicale/xmlutils.pyo
+share/doc/radicale/CHANGELOG.md
+share/doc/radicale/COPYING.md
+share/doc/radicale/DOCUMENTATION.md
+share/doc/radicale/README.md
 share/examples/radicale/config
+share/examples/radicale/radicale.wsgi
 share/examples/radicale/rights
diff --git a/Radicale3/distinfo b/Radicale3/distinfo
index 0516019975..41642cfbd0 100644
--- a/Radicale3/distinfo
+++ b/Radicale3/distinfo
@@ -1,5 +1,5 @@
 $NetBSD: distinfo,v 1.4 2017/09/04 10:35:44 prlw1 Exp $
 
-RMD160 (Radicale-3.0.6.tar.gz) = d499cd93ff45320c3264ea1628142111a759cf8c
-SHA512 (Radicale-3.0.6.tar.gz) = dfc4e5c0cdb8037e1c04eca7df095f5b4a4a096b8c501d6d1f22eb63c0038f63a9fa6a1c65c92af17ebef4c973472938bac44b7cc3ca0eff7b83be82fe459077
-Size (Radicale-3.0.6.tar.gz) = 102983 bytes
+BLAKE2s (Radicale-3.1.8.tar.gz) = 8533a3d37ab861352a84a8b6e35269d04ec89e555ae1c239167f2839792f0a51
+SHA512 (Radicale-3.1.8.tar.gz) = 282c45c5d7b6ad0d3614dc42766a4b952c65491a67c24c93f5ef1d7cc546388b4f3a2cbf0cb5ea2b8a345b05eeb92ec888ea459cf355db67e248386ec1a0c3e5
+Size (Radicale-3.1.8.tar.gz) = 113385 bytes
diff --git a/Radicale3/files/radicale.sh b/Radicale3/files/radicale.sh
index 5a7efa23d4..b028a42379 100644
--- a/Radicale3/files/radicale.sh
+++ b/Radicale3/files/radicale.sh
@@ -1,6 +1,6 @@
 #!@RCD_SCRIPTS_SHELL@
 #
-# $NetBSD: radicale.sh,v 1.1 2017/07/01 05:57:07 darcy Exp $
+# $NetBSD$
 #
 # PROVIDE: radicale
 # REQUIRE: DAEMON
@@ -13,26 +13,32 @@ rcvar=$name
 
 load_rc_config $name
 
-: ${radicale_user:=@RADICALE_USER@}
-: ${radicale_group:=@RADICALE_GROUP@}
-: ${radicale_pidfile:="@VARBASE@/run/${name}.pid"}
-: ${radicale_logfile:="@VARBASE@/log/${name}.log"}
-
-command="@PREFIX@/bin/radicale"
-command_args=" </dev/null >/dev/null 2>${radicale_logfile} & echo \$! >${radicale_pidfile}"
 command_interpreter="@PYTHONBIN@"
-required_files="@PKG_SYSCONFDIR@/radicale/config"
+
+task="@PREFIX@/bin/${name}"
+procname="${task}"
+pidfile="@VARBASE@/run/${name}/${name}.pid"
+
+command="@PREFIX@/sbin/daemonize"
+
+command_args="-a \
+    -p ${pidfile} \
+    -u @RADICALE_USER@ \
+    -e @RADICALE_LOGDIR@/${name}.log \
+    -o @RADICALE_LOGDIR@/daemonize.stdout \
+    ${task}"
+
+required_files="@PKG_SYSCONFDIR@/config"
 
 start_precmd="radicale_precmd"
 
 radicale_precmd()
 {
-    @TOUCH@ ${radicale_logfile} && \
-    @CHOWN@ ${radicale_user}:${radicale_group} ${radicale_logfile} && \
-    @CHMOD@ 0750 ${radicale_logfile} && \
-    @TOUCH@ ${radicale_pidfile} && \
-    @CHOWN@ ${radicale_user}:${radicale_group} ${radicale_pidfile} && \
-    @CHMOD@ 0750 ${radicale_pidfile}
+        if [ ! -e "@VARBASE@/run/${name}" ] ; then
+                install -d -o @RADICALE_USER@ -g @RADICALE_GROUP@ \
+		    -m 0750 "@VARBASE@/run/${name}"
+        fi
 }
 
+load_rc_config ${name}
 run_rc_command "$1"


Home | Main Index | Thread Index | Old Index