This one's been a long time coming, sorry for the delays, but here's the
diff for Radicale 3.x. Works fine on arm64. There is however 1 policy
thing which I'm wondering about: Radicale's data structure apparently
didn't change from 2.x to 3.x, however it feels a bit stupid to me to
have the path in ports be radicale2 instead of just radicale in order to
keep Radicale 1.x so that people can upgrade. What do you guys suggest
to properly inform users of the complete removal of 1.x in order to
migrate in time?
On Thu Oct 23, 2025 at 2:48 CEST, Stuart Henderson wrote:
> On 2025/10/23 01:22, Lydia Sobot wrote:
>> libpass 1.9.3, released 2 weeks ago, seems to specifically address this
>> issue, so I think it would be best to update the py-passlib port first:
>> https://github.com/notypecheck/passlib/releases/tag/1.9.3
>> https://github.com/notypecheck/passlib/pull/21
>
> hmm, I think there are still issues -
> https://github.com/notypecheck/passlib/pull/25 - but that seems better
> tban thebcyrrent version.
>
> I actually have that in my tree but forgot to add to my list of things
> to commit post-unlock so I'll do that now.
Index: Makefile
===================================================================
RCS file: /cvs/ports/productivity/radicale/Makefile,v
diff -u -p -r1.51 Makefile
--- Makefile 27 Aug 2025 18:36:05 -0000 1.51
+++ Makefile 18 Jul 2026 14:49:25 -0000
@@ -1,9 +1,7 @@
COMMENT = simple CalDAV calendar server
-MODPY_DISTV = 1.1.6
-REVISION = 14
-DISTNAME = Radicale-${MODPY_DISTV}
-PKGNAME = ${DISTNAME:L}
+MODPY_DISTV = 3.7.5
+DISTNAME = radicale-${MODPY_DISTV}
CATEGORIES = productivity net
HOMEPAGE = https://radicale.org/
@@ -17,7 +15,11 @@ MODULES = lang/python
MODPY_PI = Yes
MODPY_PYBUILD = setuptools
-RUN_DEPENDS = security/py-passlib
+RUN_DEPENDS = security/py-passlib \
+ textproc/py-vobject \
+ textproc/py-defusedxml \
+ www/py-requests \
+ devel/py-pika
NO_TEST = Yes
@@ -27,12 +29,12 @@ pre-configure:
post-install:
${INSTALL_DATA_DIR} ${PREFIX}/share/doc/radicale
${INSTALL_DATA_DIR} ${PREFIX}/share/examples/radicale
- cd ${WRKSRC}; ${INSTALL_DATA} COPYING NEWS.rst README \
- ${PREFIX}/share/doc/radicale/
+ cd ${WRKSRC}; \
+ ${INSTALL_DATA} COPYING.md CHANGELOG.md README.md DOCUMENTATION.md \
+ ${PREFIX}/share/doc/radicale/
${SUBST_DATA} ${WRKSRC}/config \
- ${PREFIX}/share/examples/radicale/config
- ${INSTALL_DATA} ${WRKSRC}/{logging,rights} \
- ${PREFIX}/share/examples/radicale/
- touch ${PREFIX}/share/examples/radicale/log
+ ${PREFIX}/share/examples/radicale/config
+ ${INSTALL_DATA} ${WRKSRC}/rights \
+ ${PREFIX}/share/examples/radicale/
.include <bsd.port.mk>
Index: distinfo
===================================================================
RCS file: /cvs/ports/productivity/radicale/distinfo,v
diff -u -p -r1.16 distinfo
--- distinfo 6 Sep 2018 22:48:30 -0000 1.16
+++ distinfo 18 Jul 2026 14:49:25 -0000
@@ -1,2 +1,2 @@
-SHA256 (Radicale-1.1.6.tar.gz) = wAcZjqRe95c0RnLGgdTBP4tKqFwVxBoRViJXZ6QFySs=
-SIZE (Radicale-1.1.6.tar.gz) = 48280
+SHA256 (radicale-3.7.5.tar.gz) = prRRKKxthOOX546TQKvCkGyQN81bZWQfAleO2iOPoLc=
+SIZE (radicale-3.7.5.tar.gz) = 254813
Index: patches/patch-config
===================================================================
RCS file: /cvs/ports/productivity/radicale/patches/patch-config,v
diff -u -p -r1.14 patch-config
--- patches/patch-config 17 Dec 2023 16:21:12 -0000 1.14
+++ patches/patch-config 18 Jul 2026 14:49:25 -0000
@@ -1,57 +1,61 @@
Index: config
--- config.orig
+++ config
-@@ -28,10 +28,10 @@
+@@ -3,7 +3,7 @@
+
+ # Config file for Radicale - A simple calendar server
+ #
+-# Place it into /etc/radicale/config (global)
++# Place it into ${SYSCONFDIR}/radicale/config (global)
+ # or ~/.config/radicale/config (user)
+ #
+ # The current values are the default ones
+@@ -40,10 +40,10 @@
#ssl = False
# SSL certificate path
--#certificate = /etc/apache2/ssl/server.crt
-+certificate = ${SYSCONFDIR}/radicale/server.crt
+-#certificate = /etc/ssl/radicale.cert.pem
++#certificate = ${SYSCONFDIR}/ssl/radicale.cert.pem
# SSL private key
--#key = /etc/apache2/ssl/server.key
-+key = ${SYSCONFDIR}/radicale/private/server.key
+-#key = /etc/ssl/radicale.key.pem
++#key = ${SYSCONFDIR}/radicale/private/key.pem
- # SSL Protocol used. See python's ssl module for available values
- #protocol = PROTOCOL_SSLv23
-@@ -84,11 +84,11 @@
- #custom_handler =
+ # CA certificate for validating clients. This can be used to secure
+ # TCP traffic between Radicale and a reverse proxy
+@@ -79,7 +79,7 @@
+ [auth]
+
+ # Authentication method
+-# Value: none | htpasswd | remote_user | http_remote_user | http_x_remote_user | dovecot | ldap | oauth2 | pam | denyall
++# Value: none | htpasswd | remote_user | http_remote_user | http_x_remote_user | dovecot | ldap | imap | oauth2 | pam | denyall
+ #type = denyall
+
+ # Cache logins for until expiration time
+@@ -177,7 +177,7 @@
+ #pam_group_membership =
# Htpasswd filename
-#htpasswd_filename = /etc/radicale/users
-+htpasswd_filename = ${SYSCONFDIR}/radicale/users
++#htpasswd_filename = ${SYSCONFDIR}/radicale/users
# Htpasswd encryption method
- # Value: plain | sha1 | ssha | crypt | bcrypt | md5
--#htpasswd_encryption = crypt
-+htpasswd_encryption = bcrypt
-
- # LDAP server URL, with protocol and port
- #ldap_url = ldap://localhost:389/
-@@ -150,7 +150,7 @@
- #custom_handler =
+ # Value: plain | bcrypt | md5 | sha256 | sha512 | argon2 | autodetect
+@@ -211,7 +211,7 @@
+ #type = owner_only
# File for rights management from_file
--#file = ~/.config/radicale/rights
-+file = ${SYSCONFDIR}/radicale/rights
-
+-#file = /etc/radicale/rights
++#file = ${SYSCONFDIR}/radicale/rights
- [storage]
-@@ -167,7 +167,7 @@
- #custom_handler =
+ # Permit delete of a collection (global)
+ #permit_delete_collection = True
+@@ -227,7 +227,7 @@
+ #type = multifilesystem
# Folder for storing local collections, created if not present
--#filesystem_folder = ~/.config/radicale/collections
-+filesystem_folder = ${LOCALSTATEDIR}/db/radicale/calendars
+-#filesystem_folder = /var/lib/radicale/collections
++#filesystem_folder = /var/db/radicale/collections
- # Database URL for SQLAlchemy
- # dialect+driver://user:password@host/dbname[?key=value..]
-@@ -182,7 +182,7 @@
- # If no config is given, simple information is printed on the standard output
- # For more information about the syntax of the configuration file, see:
- # http://docs.python.org/library/logging.config.html
--#config = /etc/radicale/logging
-+config = ${SYSCONFDIR}/radicale/logging
- # Set the default logging level to debug
- #debug = False
- # Store all environment variables (including those set in the shell)
+ # Folder for storing cache of local collections, created if not present
+ # Note: only used in case of use_cache_subfolder_* options are active
Index: patches/patch-logging
===================================================================
RCS file: patches/patch-logging
diff -N patches/patch-logging
--- patches/patch-logging 11 Mar 2022 19:51:45 -0000 1.2
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,14 +0,0 @@
-Set default logging to INFO
-
-Index: logging
---- logging.orig
-+++ logging
-@@ -29,7 +29,7 @@ keys = simple,full
-
- [logger_root]
- # Root logger
--level = DEBUG
-+level = INFO
- handlers = console,file
-
-
Index: patches/patch-radicale_config_py
===================================================================
RCS file: /cvs/ports/productivity/radicale/patches/patch-radicale_config_py,v
diff -u -p -r1.10 patch-radicale_config_py
--- patches/patch-radicale_config_py 11 Mar 2022 19:51:45 -0000 1.10
+++ patches/patch-radicale_config_py 18 Jul 2026 14:49:25 -0000
@@ -1,45 +1,54 @@
---- radicale/config.py.orig Wed Aug 19 15:06:33 2015
-+++ radicale/config.py Fri Nov 27 22:06:38 2015
-@@ -43,8 +43,8 @@ INITIAL_CONFIG = {
- "daemon": "False",
- "pid": "",
- "ssl": "False",
-- "certificate": "/etc/apache2/ssl/server.crt",
-- "key": "/etc/apache2/ssl/server.key",
-+ "certificate": "${SYSCONFDIR}/radicale/server.crt",
-+ "key": "${SYSCONFDIR}/radicale/private/server.key",
- "protocol": "PROTOCOL_SSLv23",
- "ciphers": "",
- "dns_lookup": "True",
-@@ -60,7 +60,7 @@ INITIAL_CONFIG = {
- "auth": {
- "type": "None",
- "custom_handler": "",
-- "htpasswd_filename": "/etc/radicale/users",
-+ "htpasswd_filename": "${SYSCONFDIR}/radicale/users",
- "htpasswd_encryption": "crypt",
- "imap_hostname": "localhost",
- "imap_port": "143",
-@@ -86,11 +86,10 @@ INITIAL_CONFIG = {
- "storage": {
- "type": "filesystem",
- "custom_handler": "",
-- "filesystem_folder": os.path.expanduser(
-- "~/.config/radicale/collections"),
-+ "filesystem_folder": "/var/db/radicale/calendars",
- "database_url": ""},
- "logging": {
-- "config": "/etc/radicale/logging",
-+ "config": "${SYSCONFDIR}/radicale/logging",
- "debug": "False",
- "full_environment": "False"}}
+Index: radicale/config.py
+--- radicale/config.py.orig
++++ radicale/config.py
+@@ -45,7 +45,7 @@ from radicale.hook import email
+ from radicale.item import check_and_sanitize_props
-@@ -102,7 +101,7 @@ for section, values in INITIAL_CONFIG.items():
- for key, value in values.items():
- _CONFIG_PARSER.set(section, key, value)
+ DEFAULT_CONFIG_PATH: str = os.pathsep.join([
+- "?/etc/radicale/config",
++ "?${SYSCONFDIR}/radicale/config",
+ "?~/.config/radicale/config"])
--_CONFIG_PARSER.read("/etc/radicale/config")
-+_CONFIG_PARSER.read("${SYSCONFDIR}/radicale/config")
- _CONFIG_PARSER.read(os.path.expanduser("~/.config/radicale/config"))
- if "RADICALE_CONFIG" in os.environ:
- _CONFIG_PARSER.read(os.environ["RADICALE_CONFIG"])
+ PROFILING: Sequence[str] = ("per_request", "per_request_method", "none")
+@@ -273,12 +273,12 @@ DEFAULT_CONFIG_SCHEMA: types.CONFIG_SCHEMA = OrderedDi
+ "help": "SSL/TLS Cipher Suite (OpenSSL cipher list format)",
+ "type": str}),
+ ("certificate", {
+- "value": "/etc/ssl/radicale.cert.pem",
++ "value": "${SYSCONFDIR}/ssl/radicale.cert.pem",
+ "help": "set certificate file",
+ "aliases": ("-c", "--certificate",),
+ "type": filepath}),
+ ("key", {
+- "value": "/etc/ssl/radicale.key.pem",
++ "value": "${SYSCONFDIR}/radicale/private/key.pem",
+ "help": "set private key file",
+ "aliases": ("-k", "--key",),
+ "type": filepath}),
+@@ -331,7 +331,7 @@ DEFAULT_CONFIG_SCHEMA: types.CONFIG_SCHEMA = OrderedDi
+ "help": "expiration time for caching failed logins in seconds",
+ "type": int}),
+ ("htpasswd_filename", {
+- "value": "/etc/radicale/users",
++ "value": "${SYSCONFDIR}/radicale/users",
+ "help": "htpasswd filename",
+ "type": filepath}),
+ ("htpasswd_encryption", {
+@@ -491,7 +491,7 @@ DEFAULT_CONFIG_SCHEMA: types.CONFIG_SCHEMA = OrderedDi
+ "help": "permit overwrite of a collection",
+ "type": bool}),
+ ("file", {
+- "value": "/etc/radicale/rights",
++ "value": "${SYSCONFDIR}/radicale/rights",
+ "help": "file for rights management from_file",
+ "type": filepath})])),
+ ("storage", OrderedDict([
+@@ -501,7 +501,7 @@ DEFAULT_CONFIG_SCHEMA: types.CONFIG_SCHEMA = OrderedDi
+ "type": str_or_callable,
+ "internal": storage.INTERNAL_TYPES}),
+ ("filesystem_folder", {
+- "value": "/var/lib/radicale/collections",
++ "value": "/var/db/radicale/collections",
+ "help": "path where collections are stored",
+ "type": filepath}),
+ ("filesystem_cache_folder", {
Index: patches/patch-rights
===================================================================
RCS file: patches/patch-rights
diff -N patches/patch-rights
--- patches/patch-rights 11 Mar 2022 19:51:45 -0000 1.2
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,44 +0,0 @@
-File missing from distribution tar.gz, though still present in repo.
-
-Index: rights
---- rights.orig
-+++ rights
-@@ -0,0 +1,38 @@
-+# -*- mode: conf -*-
-+# vim:ft=cfg
-+
-+# Rights management file for Radicale - A simple calendar server
-+#
-+# Default path for this kind of files is ~/.config/radicale/rights
-+
-+# This means all users starting with "admin" may read any collection
-+[admin]
-+user: ^admin.*$
-+collection: .*
-+permission: r
-+
-+# This means all users may read and write any collection starting with public.
-+# We do so by just not testing against the user string.
-+[public]
-+user: .*
-+collection: ^public(/.+)?$
-+permission: rw
-+
-+# A little more complex: give read access to users from a domain for all
-+# collections of all the users (ie. [email protected] can read domain/*).
-+[domain-wide-access]
-+user: ^.+@(.+)\..+$
-+collection: ^{0}/.+$
-+permission: r
-+
-+# Allow authenticated user to read all collections
-+[allow-everyone-read]
-+user: .+
-+collection: .*
-+permission: r
-+
-+# Give write access to owners
-+[owner-write]
-+user: .+
-+collection: ^%(login)s/.*$
-+permission: w
Index: pkg/MESSAGE
===================================================================
RCS file: pkg/MESSAGE
diff -N pkg/MESSAGE
--- pkg/MESSAGE 2 May 2025 09:47:49 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,2 +0,0 @@
-The Radicale 1.x package is only provided so that users can export storage
-in preparation for updating to a newer version. See the pkg-readme for more.
Index: pkg/PLIST
===================================================================
RCS file: /cvs/ports/productivity/radicale/pkg/PLIST,v
diff -u -p -r1.23 PLIST
--- pkg/PLIST 23 Oct 2025 13:20:09 -0000 1.23
+++ pkg/PLIST 18 Jul 2026 14:49:25 -0000
@@ -8,8 +8,9 @@ lib/python${MODPY_VERSION}/site-packages
lib/python${MODPY_VERSION}/site-packages/radicale-${MODPY_DISTV}.dist-info/METADATA
lib/python${MODPY_VERSION}/site-packages/radicale-${MODPY_DISTV}.dist-info/RECORD
lib/python${MODPY_VERSION}/site-packages/radicale-${MODPY_DISTV}.dist-info/WHEEL
+lib/python${MODPY_VERSION}/site-packages/radicale-${MODPY_DISTV}.dist-info/entry_points.txt
lib/python${MODPY_VERSION}/site-packages/radicale-${MODPY_DISTV}.dist-info/licenses/
-lib/python${MODPY_VERSION}/site-packages/radicale-${MODPY_DISTV}.dist-info/licenses/COPYING
+lib/python${MODPY_VERSION}/site-packages/radicale-${MODPY_DISTV}.dist-info/licenses/COPYING.md
lib/python${MODPY_VERSION}/site-packages/radicale-${MODPY_DISTV}.dist-info/top_level.txt
lib/python${MODPY_VERSION}/site-packages/radicale/__init__.py
lib/python${MODPY_VERSION}/site-packages/radicale/__main__.py
@@ -20,88 +21,293 @@ lib/python${MODPY_VERSION}/site-packages
lib/python${MODPY_VERSION}/site-packages/radicale/${MODPY_PYCACHE}__main__.${MODPY_PYC_MAGIC_TAG}pyc
lib/python${MODPY_VERSION}/site-packages/radicale/${MODPY_PYCACHE}config.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
lib/python${MODPY_VERSION}/site-packages/radicale/${MODPY_PYCACHE}config.${MODPY_PYC_MAGIC_TAG}pyc
-lib/python${MODPY_VERSION}/site-packages/radicale/${MODPY_PYCACHE}ical.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
-lib/python${MODPY_VERSION}/site-packages/radicale/${MODPY_PYCACHE}ical.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/radicale/${MODPY_PYCACHE}httputils.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/radicale/${MODPY_PYCACHE}httputils.${MODPY_PYC_MAGIC_TAG}pyc
lib/python${MODPY_VERSION}/site-packages/radicale/${MODPY_PYCACHE}log.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
lib/python${MODPY_VERSION}/site-packages/radicale/${MODPY_PYCACHE}log.${MODPY_PYC_MAGIC_TAG}pyc
lib/python${MODPY_VERSION}/site-packages/radicale/${MODPY_PYCACHE}pathutils.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
lib/python${MODPY_VERSION}/site-packages/radicale/${MODPY_PYCACHE}pathutils.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/radicale/${MODPY_PYCACHE}server.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/radicale/${MODPY_PYCACHE}server.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/radicale/${MODPY_PYCACHE}types.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/radicale/${MODPY_PYCACHE}types.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/radicale/${MODPY_PYCACHE}utils.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/radicale/${MODPY_PYCACHE}utils.${MODPY_PYC_MAGIC_TAG}pyc
lib/python${MODPY_VERSION}/site-packages/radicale/${MODPY_PYCACHE}xmlutils.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
lib/python${MODPY_VERSION}/site-packages/radicale/${MODPY_PYCACHE}xmlutils.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/radicale/app/
+lib/python${MODPY_VERSION}/site-packages/radicale/app/__init__.py
+lib/python${MODPY_VERSION}/site-packages/radicale/app/${MODPY_PYCACHE}/
+lib/python${MODPY_VERSION}/site-packages/radicale/app/${MODPY_PYCACHE}__init__.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/radicale/app/${MODPY_PYCACHE}__init__.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/radicale/app/${MODPY_PYCACHE}base.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/radicale/app/${MODPY_PYCACHE}base.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/radicale/app/${MODPY_PYCACHE}delete.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/radicale/app/${MODPY_PYCACHE}delete.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/radicale/app/${MODPY_PYCACHE}get.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/radicale/app/${MODPY_PYCACHE}get.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/radicale/app/${MODPY_PYCACHE}head.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/radicale/app/${MODPY_PYCACHE}head.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/radicale/app/${MODPY_PYCACHE}mkcalendar.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/radicale/app/${MODPY_PYCACHE}mkcalendar.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/radicale/app/${MODPY_PYCACHE}mkcol.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/radicale/app/${MODPY_PYCACHE}mkcol.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/radicale/app/${MODPY_PYCACHE}move.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/radicale/app/${MODPY_PYCACHE}move.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/radicale/app/${MODPY_PYCACHE}options.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/radicale/app/${MODPY_PYCACHE}options.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/radicale/app/${MODPY_PYCACHE}post.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/radicale/app/${MODPY_PYCACHE}post.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/radicale/app/${MODPY_PYCACHE}propfind.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/radicale/app/${MODPY_PYCACHE}propfind.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/radicale/app/${MODPY_PYCACHE}proppatch.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/radicale/app/${MODPY_PYCACHE}proppatch.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/radicale/app/${MODPY_PYCACHE}put.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/radicale/app/${MODPY_PYCACHE}put.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/radicale/app/${MODPY_PYCACHE}report.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/radicale/app/${MODPY_PYCACHE}report.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/radicale/app/base.py
+lib/python${MODPY_VERSION}/site-packages/radicale/app/delete.py
+lib/python${MODPY_VERSION}/site-packages/radicale/app/get.py
+lib/python${MODPY_VERSION}/site-packages/radicale/app/head.py
+lib/python${MODPY_VERSION}/site-packages/radicale/app/mkcalendar.py
+lib/python${MODPY_VERSION}/site-packages/radicale/app/mkcol.py
+lib/python${MODPY_VERSION}/site-packages/radicale/app/move.py
+lib/python${MODPY_VERSION}/site-packages/radicale/app/options.py
+lib/python${MODPY_VERSION}/site-packages/radicale/app/post.py
+lib/python${MODPY_VERSION}/site-packages/radicale/app/propfind.py
+lib/python${MODPY_VERSION}/site-packages/radicale/app/proppatch.py
+lib/python${MODPY_VERSION}/site-packages/radicale/app/put.py
+lib/python${MODPY_VERSION}/site-packages/radicale/app/report.py
lib/python${MODPY_VERSION}/site-packages/radicale/auth/
-lib/python${MODPY_VERSION}/site-packages/radicale/auth/IMAP.py
-lib/python${MODPY_VERSION}/site-packages/radicale/auth/LDAP.py
-lib/python${MODPY_VERSION}/site-packages/radicale/auth/PAM.py
lib/python${MODPY_VERSION}/site-packages/radicale/auth/__init__.py
lib/python${MODPY_VERSION}/site-packages/radicale/auth/${MODPY_PYCACHE}/
-lib/python${MODPY_VERSION}/site-packages/radicale/auth/${MODPY_PYCACHE}IMAP.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
-lib/python${MODPY_VERSION}/site-packages/radicale/auth/${MODPY_PYCACHE}IMAP.${MODPY_PYC_MAGIC_TAG}pyc
-lib/python${MODPY_VERSION}/site-packages/radicale/auth/${MODPY_PYCACHE}LDAP.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
-lib/python${MODPY_VERSION}/site-packages/radicale/auth/${MODPY_PYCACHE}LDAP.${MODPY_PYC_MAGIC_TAG}pyc
-lib/python${MODPY_VERSION}/site-packages/radicale/auth/${MODPY_PYCACHE}PAM.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
-lib/python${MODPY_VERSION}/site-packages/radicale/auth/${MODPY_PYCACHE}PAM.${MODPY_PYC_MAGIC_TAG}pyc
lib/python${MODPY_VERSION}/site-packages/radicale/auth/${MODPY_PYCACHE}__init__.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
lib/python${MODPY_VERSION}/site-packages/radicale/auth/${MODPY_PYCACHE}__init__.${MODPY_PYC_MAGIC_TAG}pyc
-lib/python${MODPY_VERSION}/site-packages/radicale/auth/${MODPY_PYCACHE}courier.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
-lib/python${MODPY_VERSION}/site-packages/radicale/auth/${MODPY_PYCACHE}courier.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/radicale/auth/${MODPY_PYCACHE}denyall.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/radicale/auth/${MODPY_PYCACHE}denyall.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/radicale/auth/${MODPY_PYCACHE}dovecot.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/radicale/auth/${MODPY_PYCACHE}dovecot.${MODPY_PYC_MAGIC_TAG}pyc
lib/python${MODPY_VERSION}/site-packages/radicale/auth/${MODPY_PYCACHE}htpasswd.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
lib/python${MODPY_VERSION}/site-packages/radicale/auth/${MODPY_PYCACHE}htpasswd.${MODPY_PYC_MAGIC_TAG}pyc
-lib/python${MODPY_VERSION}/site-packages/radicale/auth/${MODPY_PYCACHE}http.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
-lib/python${MODPY_VERSION}/site-packages/radicale/auth/${MODPY_PYCACHE}http.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/radicale/auth/${MODPY_PYCACHE}http_remote_user.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/radicale/auth/${MODPY_PYCACHE}http_remote_user.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/radicale/auth/${MODPY_PYCACHE}http_x_remote_user.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/radicale/auth/${MODPY_PYCACHE}http_x_remote_user.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/radicale/auth/${MODPY_PYCACHE}imap.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/radicale/auth/${MODPY_PYCACHE}imap.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/radicale/auth/${MODPY_PYCACHE}ldap.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/radicale/auth/${MODPY_PYCACHE}ldap.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/radicale/auth/${MODPY_PYCACHE}none.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/radicale/auth/${MODPY_PYCACHE}none.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/radicale/auth/${MODPY_PYCACHE}oauth2.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/radicale/auth/${MODPY_PYCACHE}oauth2.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/radicale/auth/${MODPY_PYCACHE}pam.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/radicale/auth/${MODPY_PYCACHE}pam.${MODPY_PYC_MAGIC_TAG}pyc
lib/python${MODPY_VERSION}/site-packages/radicale/auth/${MODPY_PYCACHE}remote_user.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
lib/python${MODPY_VERSION}/site-packages/radicale/auth/${MODPY_PYCACHE}remote_user.${MODPY_PYC_MAGIC_TAG}pyc
-lib/python${MODPY_VERSION}/site-packages/radicale/auth/courier.py
+lib/python${MODPY_VERSION}/site-packages/radicale/auth/denyall.py
+lib/python${MODPY_VERSION}/site-packages/radicale/auth/dovecot.py
lib/python${MODPY_VERSION}/site-packages/radicale/auth/htpasswd.py
-lib/python${MODPY_VERSION}/site-packages/radicale/auth/http.py
+lib/python${MODPY_VERSION}/site-packages/radicale/auth/http_remote_user.py
+lib/python${MODPY_VERSION}/site-packages/radicale/auth/http_x_remote_user.py
+lib/python${MODPY_VERSION}/site-packages/radicale/auth/imap.py
+lib/python${MODPY_VERSION}/site-packages/radicale/auth/ldap.py
+lib/python${MODPY_VERSION}/site-packages/radicale/auth/none.py
+lib/python${MODPY_VERSION}/site-packages/radicale/auth/oauth2.py
+lib/python${MODPY_VERSION}/site-packages/radicale/auth/pam.py
lib/python${MODPY_VERSION}/site-packages/radicale/auth/remote_user.py
lib/python${MODPY_VERSION}/site-packages/radicale/config.py
-lib/python${MODPY_VERSION}/site-packages/radicale/ical.py
+lib/python${MODPY_VERSION}/site-packages/radicale/hook/
+lib/python${MODPY_VERSION}/site-packages/radicale/hook/__init__.py
+lib/python${MODPY_VERSION}/site-packages/radicale/hook/${MODPY_PYCACHE}/
+lib/python${MODPY_VERSION}/site-packages/radicale/hook/${MODPY_PYCACHE}__init__.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/radicale/hook/${MODPY_PYCACHE}__init__.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/radicale/hook/${MODPY_PYCACHE}none.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/radicale/hook/${MODPY_PYCACHE}none.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/radicale/hook/email/
+lib/python${MODPY_VERSION}/site-packages/radicale/hook/email/__init__.py
+lib/python${MODPY_VERSION}/site-packages/radicale/hook/email/${MODPY_PYCACHE}/
+lib/python${MODPY_VERSION}/site-packages/radicale/hook/email/${MODPY_PYCACHE}__init__.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/radicale/hook/email/${MODPY_PYCACHE}__init__.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/radicale/hook/none.py
+lib/python${MODPY_VERSION}/site-packages/radicale/hook/rabbitmq/
+lib/python${MODPY_VERSION}/site-packages/radicale/hook/rabbitmq/__init__.py
+lib/python${MODPY_VERSION}/site-packages/radicale/hook/rabbitmq/${MODPY_PYCACHE}/
+lib/python${MODPY_VERSION}/site-packages/radicale/hook/rabbitmq/${MODPY_PYCACHE}__init__.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/radicale/hook/rabbitmq/${MODPY_PYCACHE}__init__.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/radicale/httputils.py
+lib/python${MODPY_VERSION}/site-packages/radicale/item/
+lib/python${MODPY_VERSION}/site-packages/radicale/item/__init__.py
+lib/python${MODPY_VERSION}/site-packages/radicale/item/${MODPY_PYCACHE}/
+lib/python${MODPY_VERSION}/site-packages/radicale/item/${MODPY_PYCACHE}__init__.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/radicale/item/${MODPY_PYCACHE}__init__.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/radicale/item/${MODPY_PYCACHE}filter.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/radicale/item/${MODPY_PYCACHE}filter.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/radicale/item/filter.py
lib/python${MODPY_VERSION}/site-packages/radicale/log.py
lib/python${MODPY_VERSION}/site-packages/radicale/pathutils.py
+lib/python${MODPY_VERSION}/site-packages/radicale/py.typed
lib/python${MODPY_VERSION}/site-packages/radicale/rights/
lib/python${MODPY_VERSION}/site-packages/radicale/rights/__init__.py
lib/python${MODPY_VERSION}/site-packages/radicale/rights/${MODPY_PYCACHE}/
lib/python${MODPY_VERSION}/site-packages/radicale/rights/${MODPY_PYCACHE}__init__.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
lib/python${MODPY_VERSION}/site-packages/radicale/rights/${MODPY_PYCACHE}__init__.${MODPY_PYC_MAGIC_TAG}pyc
-lib/python${MODPY_VERSION}/site-packages/radicale/rights/${MODPY_PYCACHE}regex.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
-lib/python${MODPY_VERSION}/site-packages/radicale/rights/${MODPY_PYCACHE}regex.${MODPY_PYC_MAGIC_TAG}pyc
-lib/python${MODPY_VERSION}/site-packages/radicale/rights/regex.py
+lib/python${MODPY_VERSION}/site-packages/radicale/rights/${MODPY_PYCACHE}authenticated.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/radicale/rights/${MODPY_PYCACHE}authenticated.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/radicale/rights/${MODPY_PYCACHE}from_file.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/radicale/rights/${MODPY_PYCACHE}from_file.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/radicale/rights/${MODPY_PYCACHE}owner_only.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/radicale/rights/${MODPY_PYCACHE}owner_only.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/radicale/rights/${MODPY_PYCACHE}owner_write.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/radicale/rights/${MODPY_PYCACHE}owner_write.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/radicale/rights/authenticated.py
+lib/python${MODPY_VERSION}/site-packages/radicale/rights/from_file.py
+lib/python${MODPY_VERSION}/site-packages/radicale/rights/owner_only.py
+lib/python${MODPY_VERSION}/site-packages/radicale/rights/owner_write.py
+lib/python${MODPY_VERSION}/site-packages/radicale/server.py
+lib/python${MODPY_VERSION}/site-packages/radicale/sharing/
+lib/python${MODPY_VERSION}/site-packages/radicale/sharing/__init__.py
+lib/python${MODPY_VERSION}/site-packages/radicale/sharing/${MODPY_PYCACHE}/
+lib/python${MODPY_VERSION}/site-packages/radicale/sharing/${MODPY_PYCACHE}__init__.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/radicale/sharing/${MODPY_PYCACHE}__init__.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/radicale/sharing/${MODPY_PYCACHE}csv.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/radicale/sharing/${MODPY_PYCACHE}csv.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/radicale/sharing/${MODPY_PYCACHE}files.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/radicale/sharing/${MODPY_PYCACHE}files.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/radicale/sharing/${MODPY_PYCACHE}none.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/radicale/sharing/${MODPY_PYCACHE}none.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/radicale/sharing/csv.py
+lib/python${MODPY_VERSION}/site-packages/radicale/sharing/files.py
+lib/python${MODPY_VERSION}/site-packages/radicale/sharing/none.py
lib/python${MODPY_VERSION}/site-packages/radicale/storage/
lib/python${MODPY_VERSION}/site-packages/radicale/storage/__init__.py
lib/python${MODPY_VERSION}/site-packages/radicale/storage/${MODPY_PYCACHE}/
lib/python${MODPY_VERSION}/site-packages/radicale/storage/${MODPY_PYCACHE}__init__.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
lib/python${MODPY_VERSION}/site-packages/radicale/storage/${MODPY_PYCACHE}__init__.${MODPY_PYC_MAGIC_TAG}pyc
-lib/python${MODPY_VERSION}/site-packages/radicale/storage/${MODPY_PYCACHE}database.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
-lib/python${MODPY_VERSION}/site-packages/radicale/storage/${MODPY_PYCACHE}database.${MODPY_PYC_MAGIC_TAG}pyc
-lib/python${MODPY_VERSION}/site-packages/radicale/storage/${MODPY_PYCACHE}filesystem.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
-lib/python${MODPY_VERSION}/site-packages/radicale/storage/${MODPY_PYCACHE}filesystem.${MODPY_PYC_MAGIC_TAG}pyc
-lib/python${MODPY_VERSION}/site-packages/radicale/storage/${MODPY_PYCACHE}multifilesystem.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
-lib/python${MODPY_VERSION}/site-packages/radicale/storage/${MODPY_PYCACHE}multifilesystem.${MODPY_PYC_MAGIC_TAG}pyc
-lib/python${MODPY_VERSION}/site-packages/radicale/storage/database.py
-lib/python${MODPY_VERSION}/site-packages/radicale/storage/filesystem.py
-lib/python${MODPY_VERSION}/site-packages/radicale/storage/multifilesystem.py
+lib/python${MODPY_VERSION}/site-packages/radicale/storage/${MODPY_PYCACHE}multifilesystem_nolock.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/radicale/storage/${MODPY_PYCACHE}multifilesystem_nolock.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/radicale/storage/multifilesystem/
+lib/python${MODPY_VERSION}/site-packages/radicale/storage/multifilesystem/__init__.py
+lib/python${MODPY_VERSION}/site-packages/radicale/storage/multifilesystem/${MODPY_PYCACHE}/
+lib/python${MODPY_VERSION}/site-packages/radicale/storage/multifilesystem/${MODPY_PYCACHE}__init__.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/radicale/storage/multifilesystem/${MODPY_PYCACHE}__init__.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/radicale/storage/multifilesystem/${MODPY_PYCACHE}base.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/radicale/storage/multifilesystem/${MODPY_PYCACHE}base.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/radicale/storage/multifilesystem/${MODPY_PYCACHE}cache.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/radicale/storage/multifilesystem/${MODPY_PYCACHE}cache.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/radicale/storage/multifilesystem/${MODPY_PYCACHE}create_collection.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/radicale/storage/multifilesystem/${MODPY_PYCACHE}create_collection.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/radicale/storage/multifilesystem/${MODPY_PYCACHE}delete.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/radicale/storage/multifilesystem/${MODPY_PYCACHE}delete.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/radicale/storage/multifilesystem/${MODPY_PYCACHE}discover.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/radicale/storage/multifilesystem/${MODPY_PYCACHE}discover.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/radicale/storage/multifilesystem/${MODPY_PYCACHE}get.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/radicale/storage/multifilesystem/${MODPY_PYCACHE}get.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/radicale/storage/multifilesystem/${MODPY_PYCACHE}history.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/radicale/storage/multifilesystem/${MODPY_PYCACHE}history.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/radicale/storage/multifilesystem/${MODPY_PYCACHE}lock.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/radicale/storage/multifilesystem/${MODPY_PYCACHE}lock.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/radicale/storage/multifilesystem/${MODPY_PYCACHE}meta.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/radicale/storage/multifilesystem/${MODPY_PYCACHE}meta.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/radicale/storage/multifilesystem/${MODPY_PYCACHE}move.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/radicale/storage/multifilesystem/${MODPY_PYCACHE}move.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/radicale/storage/multifilesystem/${MODPY_PYCACHE}sync.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/radicale/storage/multifilesystem/${MODPY_PYCACHE}sync.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/radicale/storage/multifilesystem/${MODPY_PYCACHE}upload.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/radicale/storage/multifilesystem/${MODPY_PYCACHE}upload.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/radicale/storage/multifilesystem/${MODPY_PYCACHE}verify.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/radicale/storage/multifilesystem/${MODPY_PYCACHE}verify.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/radicale/storage/multifilesystem/base.py
+lib/python${MODPY_VERSION}/site-packages/radicale/storage/multifilesystem/cache.py
+lib/python${MODPY_VERSION}/site-packages/radicale/storage/multifilesystem/create_collection.py
+lib/python${MODPY_VERSION}/site-packages/radicale/storage/multifilesystem/delete.py
+lib/python${MODPY_VERSION}/site-packages/radicale/storage/multifilesystem/discover.py
+lib/python${MODPY_VERSION}/site-packages/radicale/storage/multifilesystem/get.py
+lib/python${MODPY_VERSION}/site-packages/radicale/storage/multifilesystem/history.py
+lib/python${MODPY_VERSION}/site-packages/radicale/storage/multifilesystem/lock.py
+lib/python${MODPY_VERSION}/site-packages/radicale/storage/multifilesystem/meta.py
+lib/python${MODPY_VERSION}/site-packages/radicale/storage/multifilesystem/move.py
+lib/python${MODPY_VERSION}/site-packages/radicale/storage/multifilesystem/sync.py
+lib/python${MODPY_VERSION}/site-packages/radicale/storage/multifilesystem/upload.py
+lib/python${MODPY_VERSION}/site-packages/radicale/storage/multifilesystem/verify.py
+lib/python${MODPY_VERSION}/site-packages/radicale/storage/multifilesystem_nolock.py
+lib/python${MODPY_VERSION}/site-packages/radicale/types.py
+lib/python${MODPY_VERSION}/site-packages/radicale/utils.py
+lib/python${MODPY_VERSION}/site-packages/radicale/web/
+lib/python${MODPY_VERSION}/site-packages/radicale/web/__init__.py
+lib/python${MODPY_VERSION}/site-packages/radicale/web/${MODPY_PYCACHE}/
+lib/python${MODPY_VERSION}/site-packages/radicale/web/${MODPY_PYCACHE}__init__.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/radicale/web/${MODPY_PYCACHE}__init__.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/radicale/web/${MODPY_PYCACHE}internal.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/radicale/web/${MODPY_PYCACHE}internal.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/radicale/web/${MODPY_PYCACHE}none.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/radicale/web/${MODPY_PYCACHE}none.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/radicale/web/internal.py
+lib/python${MODPY_VERSION}/site-packages/radicale/web/internal_data/
+lib/python${MODPY_VERSION}/site-packages/radicale/web/internal_data/css/
+lib/python${MODPY_VERSION}/site-packages/radicale/web/internal_data/css/icon.png
+lib/python${MODPY_VERSION}/site-packages/radicale/web/internal_data/css/icons/
+lib/python${MODPY_VERSION}/site-packages/radicale/web/internal_data/css/icons/delete.svg
+lib/python${MODPY_VERSION}/site-packages/radicale/web/internal_data/css/icons/download.svg
+lib/python${MODPY_VERSION}/site-packages/radicale/web/internal_data/css/icons/edit.svg
+lib/python${MODPY_VERSION}/site-packages/radicale/web/internal_data/css/icons/eye.svg
+lib/python${MODPY_VERSION}/site-packages/radicale/web/internal_data/css/icons/key.svg
+lib/python${MODPY_VERSION}/site-packages/radicale/web/internal_data/css/icons/new.svg
+lib/python${MODPY_VERSION}/site-packages/radicale/web/internal_data/css/icons/repeat.svg
+lib/python${MODPY_VERSION}/site-packages/radicale/web/internal_data/css/icons/share.svg
+lib/python${MODPY_VERSION}/site-packages/radicale/web/internal_data/css/icons/upload.svg
+lib/python${MODPY_VERSION}/site-packages/radicale/web/internal_data/css/loading.svg
+lib/python${MODPY_VERSION}/site-packages/radicale/web/internal_data/css/logo.svg
+lib/python${MODPY_VERSION}/site-packages/radicale/web/internal_data/css/main.css
+lib/python${MODPY_VERSION}/site-packages/radicale/web/internal_data/index.html
+lib/python${MODPY_VERSION}/site-packages/radicale/web/internal_data/js/
+lib/python${MODPY_VERSION}/site-packages/radicale/web/internal_data/js/api/
+lib/python${MODPY_VERSION}/site-packages/radicale/web/internal_data/js/api/api.js
+lib/python${MODPY_VERSION}/site-packages/radicale/web/internal_data/js/api/common.js
+lib/python${MODPY_VERSION}/site-packages/radicale/web/internal_data/js/api/sharing.js
+lib/python${MODPY_VERSION}/site-packages/radicale/web/internal_data/js/config.js
+lib/python${MODPY_VERSION}/site-packages/radicale/web/internal_data/js/constants.js
+lib/python${MODPY_VERSION}/site-packages/radicale/web/internal_data/js/main.js
+lib/python${MODPY_VERSION}/site-packages/radicale/web/internal_data/js/models/
+lib/python${MODPY_VERSION}/site-packages/radicale/web/internal_data/js/models/collection.js
+lib/python${MODPY_VERSION}/site-packages/radicale/web/internal_data/js/scenes/
+lib/python${MODPY_VERSION}/site-packages/radicale/web/internal_data/js/scenes/CollectionsScene.js
+lib/python${MODPY_VERSION}/site-packages/radicale/web/internal_data/js/scenes/CreateEditCollectionScene.js
+lib/python${MODPY_VERSION}/site-packages/radicale/web/internal_data/js/scenes/CreateEditShareScene.js
+lib/python${MODPY_VERSION}/site-packages/radicale/web/internal_data/js/scenes/DeleteConfirmationScene.js
+lib/python${MODPY_VERSION}/site-packages/radicale/web/internal_data/js/scenes/IncomingSharingScene.js
+lib/python${MODPY_VERSION}/site-packages/radicale/web/internal_data/js/scenes/LoadingScene.js
+lib/python${MODPY_VERSION}/site-packages/radicale/web/internal_data/js/scenes/LoginScene.js
+lib/python${MODPY_VERSION}/site-packages/radicale/web/internal_data/js/scenes/ShareCollectionScene.js
+lib/python${MODPY_VERSION}/site-packages/radicale/web/internal_data/js/scenes/UploadCollectionScene.js
+lib/python${MODPY_VERSION}/site-packages/radicale/web/internal_data/js/scenes/scene_manager.js
+lib/python${MODPY_VERSION}/site-packages/radicale/web/internal_data/js/utils/
+lib/python${MODPY_VERSION}/site-packages/radicale/web/internal_data/js/utils/collection_utils.js
+lib/python${MODPY_VERSION}/site-packages/radicale/web/internal_data/js/utils/collections_cache.js
+lib/python${MODPY_VERSION}/site-packages/radicale/web/internal_data/js/utils/error.js
+lib/python${MODPY_VERSION}/site-packages/radicale/web/internal_data/js/utils/form_validator.js
+lib/python${MODPY_VERSION}/site-packages/radicale/web/internal_data/js/utils/misc.js
+lib/python${MODPY_VERSION}/site-packages/radicale/web/internal_data/js/utils/permissions.js
+lib/python${MODPY_VERSION}/site-packages/radicale/web/internal_data/js/utils/url_text.js
+lib/python${MODPY_VERSION}/site-packages/radicale/web/none.py
lib/python${MODPY_VERSION}/site-packages/radicale/xmlutils.py
-share/doc/pkg-readmes/${PKGSTEM}
share/doc/radicale/
-share/doc/radicale/COPYING
-share/doc/radicale/NEWS.rst
-share/doc/radicale/README
+share/doc/radicale/CHANGELOG.md
+share/doc/radicale/COPYING.md
+share/doc/radicale/DOCUMENTATION.md
+share/doc/radicale/README.md
share/examples/radicale/
share/examples/radicale/config
@sample ${SYSCONFDIR}/radicale/
@sample ${SYSCONFDIR}/radicale/config
-share/examples/radicale/log
-@mode 640
+@mode 700
@owner _radicale
@group _radicale
-@sample ${LOCALSTATEDIR}/log/radicale
-@mode 700
@sample ${LOCALSTATEDIR}/db/radicale/
@sample ${SYSCONFDIR}/radicale/private/
@mode
@owner
@group
-share/examples/radicale/logging
-@sample ${SYSCONFDIR}/radicale/logging
share/examples/radicale/rights
@sample ${SYSCONFDIR}/radicale/rights
Index: pkg/README
===================================================================
RCS file: pkg/README
diff -N pkg/README
--- pkg/README 2 May 2025 09:47:49 -0000 1.10
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,19 +0,0 @@
-+-----------------------------------------------------------------------
-| Running ${PKGSTEM} on OpenBSD
-+-----------------------------------------------------------------------
-
-This package of Radicale 1.x is only provided so that storage can be
-exported before updating to a newer version.
-
-Before upgrading to Radicale 2+, run
-'${PREFIX}/bin/radicale --export-storage /path/to/storage'.
-
-You can then 'pkg_delete radicale' to remove the existing version, and
-install a newer version with 'pkg_add radicale', selecting the newer
-version from the list.
-
-This exported storage can be used directly by Radicale 2 after the
-upgrade.
-
-For more information please refer to
-https://radicale.org/v2.html#migration-from-1xx-to-2xx
Index: pkg/radicale.rc
===================================================================
RCS file: /cvs/ports/productivity/radicale/pkg/radicale.rc,v
diff -u -p -r1.4 radicale.rc
--- pkg/radicale.rc 11 Mar 2022 19:51:45 -0000 1.4
+++ pkg/radicale.rc 18 Jul 2026 14:49:25 -0000
@@ -1,11 +1,13 @@
#!/bin/ksh
-daemon="${TRUEPREFIX}/bin/radicale -d"
+daemon="${TRUEPREFIX}/bin/radicale"
daemon_user="_radicale"
+daemon_logger=daemon.info
. /etc/rc.d/rc.subr
pexp="${MODPY_BIN} ${daemon}${daemon_flags:+ ${daemon_flags}}"
rc_reload=NO
+rc_bg=YES
rc_cmd $1