diff --git a/net/synapse/Makefile b/net/synapse/Makefile index abff3ee3ca1..07c92643d76 100644 --- a/net/synapse/Makefile +++ b/net/synapse/Makefile @@ -1,6 +1,6 @@ COMMENT = open network for secure, decentralized communication -MODPY_EGG_VERSION = 1.67.0 +MODPY_EGG_VERSION = 1.68.0 GH_ACCOUNT = matrix-org GH_PROJECT = synapse @@ -14,9 +14,23 @@ MAINTAINER = Renaud Allard # MIT PERMIT_PACKAGE = Yes -MODULES = lang/python +MODULES = devel/cargo \ + lang/python + +WANTLIB += ${COMPILER_LIBCXX} + MODPY_PYBUILD = poetry-core +MODCARGO_BUILD = No +MODCARGO_INSTALL = No +MODCARGO_TEST = No + +MAKE_ENV += ${MODCARGO_ENV} + +DISTFILES = ${DISTNAME}${EXTRACT_SUFX} + +BUILD_DEPENDS += devel/py-setuptools-rust${MODPY_FLAVOR}>=1.3.0 + # in same order as in pyproject.toml: mandatory section RUN_DEPENDS = devel/py-jsonschema${MODPY_FLAVOR}>=3.0.0 \ devel/py-frozendict${MODPY_FLAVOR} \ @@ -45,7 +59,7 @@ RUN_DEPENDS = devel/py-jsonschema${MODPY_FLAVOR}>=3.0.0 \ devel/py-typing-extensions${MODPY_FLAVOR}>=4.3.0 \ security/py-cryptography${MODPY_FLAVOR} \ textproc/py-ijson${MODPY_FLAVOR} \ - devel/py-matrix-common${MODPY_FLAVOR}>=1.2.1 \ + devel/py-matrix-common${MODPY_FLAVOR}->=1.3.0,<2.0.0 \ sysutils/py-packaging${MODPY_FLAVOR} # optional section RUN_DEPENDS += textproc/py-lxml${MODPY_FLAVOR} @@ -57,4 +71,8 @@ TEST_DEPENDS = ${FULLPKGNAME}:${BUILD_PKGPATH} \ devel/py-parameterized${MODPY_FLAVOR} \ www/py-jwt${MODPY_FLAVOR} +do-configure: + @${MODCARGO_configure} + +.include "modules.inc" .include diff --git a/net/synapse/distinfo b/net/synapse/distinfo index 1be20027909..1f4c302b2c6 100644 --- a/net/synapse/distinfo +++ b/net/synapse/distinfo @@ -1,2 +1,78 @@ -SHA256 (synapse-1.67.0.tar.gz) = he6ySJDEuOaPHlyk1eaeHrSeZ8wzxFDcfB/n5wwCPGg= -SIZE (synapse-1.67.0.tar.gz) = 7933047 +SHA256 (cargo/autocfg-1.1.0.tar.gz) = 1GiAK6sXy8DMV16bBT9B5yqja/prf1XjUp/6QxYbl/o= +SHA256 (cargo/bitflags-1.3.2.tar.gz) = vvONRRY8Lx3eCUp9/TPM9ZXJKQXI+PT9wY0G+xA3cYo= +SHA256 (cargo/blake2-0.10.4.tar.gz) = uc+EnuBbLuX7peNvl/+OwlM5FnAPwHWNQNkhNqQvM4g= +SHA256 (cargo/block-buffer-0.10.3.tar.gz) = acziBzdJj5e5k0cKblNrhSPwr3iSpPkozOsaxeUuvn4= +SHA256 (cargo/cfg-if-1.0.0.tar.gz) = uvHeQzl2FYi8Bhnjy8ASDuWC67dLU7Tvv3kRe9LaQP0= +SHA256 (cargo/crypto-common-0.1.6.tar.gz) = G/sSUC8/xGzKG7Uawo351hjYE83D0vJbn+d1o0rya7M= +SHA256 (cargo/digest-0.10.5.tar.gz) = rfvFc2WjesvS6/K2TX5pu3ZuL+qBNSHtU29dBSDc+Gw= +SHA256 (cargo/generic-array-0.14.6.tar.gz) = v/SelHKX8zEkR6vcp59F9HOAl8yCsG5yBU0iI/YB8bk= +SHA256 (cargo/hex-0.4.3.tar.gz) = fyQlSqmlS1yFjq7i9bzNtGqvDkhqWV7V/Y+GulUjKnA= +SHA256 (cargo/indoc-1.0.7.tar.gz) = raseqjQI+38Md3pz50Zf1WVhNvyTtnDrbfPIjCwTROM= +SHA256 (cargo/libc-0.2.132.tar.gz) = g3Hk5TQcOpbbEn6yRlrGgc7UxDPgHdDpOK2+8mupO6U= +SHA256 (cargo/lock_api-0.4.7.tar.gz) = Mn+ltqaUDkaZ7Empvq4epIRca6uTFOT4SsaHQhOdjFM= +SHA256 (cargo/once_cell-1.13.1.tar.gz) = B0hk2iBrSXO4TrkWgwINvv1qjD8POOBU2TlU6JGTXk4= +SHA256 (cargo/parking_lot-0.12.1.tar.gz) = N0KywQO58GvJ//Cjf/SRKTWFG+5tNvPAK8x1W8/sIo8= +SHA256 (cargo/parking_lot_core-0.9.3.tar.gz) = CaJ5y/JcsHV4EDlPvB41mUm1njSBRcZDqTmlJWkuaSk= +SHA256 (cargo/proc-macro2-1.0.43.tar.gz) = CiyixhvJ89dNKIYpSre5hTq9nBrZA6OseBXFiYm7e6s= +SHA256 (cargo/pyo3-0.16.6.tar.gz) = AiDERELJsjndQ1eqhWrEaKT14fDfGd24myUilS60xso= +SHA256 (cargo/pyo3-build-config-0.16.6.tar.gz) = nIGdOXhZRFkoYJ0Oxa/C2lIE4ND3PWv54VOwToPJzcI= +SHA256 (cargo/pyo3-ffi-0.16.6.tar.gz) = yognA6tV9UcC17/hGJtBsK8QJyOJ8EyuOP5M1Wxl918= +SHA256 (cargo/pyo3-macros-0.16.6.tar.gz) = VodJQClVrXvnutmgm4WThRzTblSayQv9RAec6lAPPyE= +SHA256 (cargo/pyo3-macros-backend-0.16.6.tar.gz) = YR9k6C2Y9Ed4foK457DrxoHh63j8ElJmiyxgX/tOHrg= +SHA256 (cargo/quote-1.0.21.tar.gz) = u+RI83en1pYeMPWVX5uNEGw/XkSdST7hsSXB1DwrUXk= +SHA256 (cargo/redox_syscall-0.2.16.tar.gz) = +1pYwYVbS2gZ1ZASFVYD8LIq0wytdSYAqt/LaVJlUZo= +SHA256 (cargo/scopeguard-1.1.0.tar.gz) = 0pqwxtP8Dukv5m4tmfcA6rF6jVfRwdO3SDgPsguqeM0= +SHA256 (cargo/smallvec-1.9.0.tar.gz) = L9DbdJWX2R/4Yv0dVeqH94VadEqEJaZGlbb8ojfR2tE= +SHA256 (cargo/subtle-2.4.1.tar.gz) = a97zLoFQwqCBEQtCdy/+fXyQMrYGvCJsgmD9l+CXZgE= +SHA256 (cargo/syn-1.0.99.tar.gz) = WNvvbsZVBV4guGsVqMxtQ5zKGbZnU3rGoTaVctFRqxM= +SHA256 (cargo/target-lexicon-0.12.4.tar.gz) = wCQkCHeAybccyWeZ6u3f81ryvFEyeM2lyZ/B9dAm08E= +SHA256 (cargo/typenum-1.15.0.tar.gz) = 3PgaxZ7cF8yGl/8xHo9e8tmfy9mBezTOxm+QtsPf2Yc= +SHA256 (cargo/unicode-ident-1.0.3.tar.gz) = xPWzehVJmajz+YzCOmKNhQ4VRHnNlN7PNBRpbhLjGq8= +SHA256 (cargo/unindent-0.1.10.tar.gz) = WO6TYt60qWzvTUN9GtSc/8m56S0gK2mVZ06SjOaE8RI= +SHA256 (cargo/version_check-0.9.4.tar.gz) = SYdLUWe2XXGTuKuhVn9cfZPQAcr8NGAM7gA+2nh+SD8= +SHA256 (cargo/windows-sys-0.36.1.tar.gz) = 6gQVWhaln56reG/hKkpFDnXNsXX54NgNoeF9sJ9VuNI= +SHA256 (cargo/windows_aarch64_msvc-0.36.1.tar.gz) = m7jD/Tmt4tZ+mHSsTz2yHw1xC+4A/nyrFpSewYTuqkc= +SHA256 (cargo/windows_i686_gnu-0.36.1.tar.gz) = GA5szwHa9MQmuEbfxm2x/FGPB0uqeTqn2bmq7/rWo7Y= +SHA256 (cargo/windows_i686_msvc-0.36.1.tar.gz) = 4ueRcUiygS0e6vrrIql+SBPfpgo/j3jr4gS8yI8S8CQ= +SHA256 (cargo/windows_x86_64_gnu-0.36.1.tar.gz) = Tc0XG4d2xBuXUh5doSei2GrSgBFIB9Cyqx5GK8dk2eE= +SHA256 (cargo/windows_x86_64_msvc-0.36.1.tar.gz) = yBHKSoyFPvQgq9hZK6U927rJBBD6tpA7PnmXKmMfdoA= +SHA256 (synapse-1.68.0.tar.gz) = Pan3iFMJBavBxdsC8Msq/QG2VGP+aWLxxDlKwVOq2Kw= +SIZE (cargo/autocfg-1.1.0.tar.gz) = 13272 +SIZE (cargo/bitflags-1.3.2.tar.gz) = 23021 +SIZE (cargo/blake2-0.10.4.tar.gz) = 46804 +SIZE (cargo/block-buffer-0.10.3.tar.gz) = 10465 +SIZE (cargo/cfg-if-1.0.0.tar.gz) = 7934 +SIZE (cargo/crypto-common-0.1.6.tar.gz) = 8760 +SIZE (cargo/digest-0.10.5.tar.gz) = 19503 +SIZE (cargo/generic-array-0.14.6.tar.gz) = 15889 +SIZE (cargo/hex-0.4.3.tar.gz) = 13299 +SIZE (cargo/indoc-1.0.7.tar.gz) = 13716 +SIZE (cargo/libc-0.2.132.tar.gz) = 595317 +SIZE (cargo/lock_api-0.4.7.tar.gz) = 25371 +SIZE (cargo/once_cell-1.13.1.tar.gz) = 31335 +SIZE (cargo/parking_lot-0.12.1.tar.gz) = 40967 +SIZE (cargo/parking_lot_core-0.9.3.tar.gz) = 32256 +SIZE (cargo/proc-macro2-1.0.43.tar.gz) = 41512 +SIZE (cargo/pyo3-0.16.6.tar.gz) = 364587 +SIZE (cargo/pyo3-build-config-0.16.6.tar.gz) = 28891 +SIZE (cargo/pyo3-ffi-0.16.6.tar.gz) = 60756 +SIZE (cargo/pyo3-macros-0.16.6.tar.gz) = 8453 +SIZE (cargo/pyo3-macros-backend-0.16.6.tar.gz) = 49252 +SIZE (cargo/quote-1.0.21.tar.gz) = 28030 +SIZE (cargo/redox_syscall-0.2.16.tar.gz) = 24012 +SIZE (cargo/scopeguard-1.1.0.tar.gz) = 11470 +SIZE (cargo/smallvec-1.9.0.tar.gz) = 28396 +SIZE (cargo/subtle-2.4.1.tar.gz) = 12630 +SIZE (cargo/syn-1.0.99.tar.gz) = 236084 +SIZE (cargo/target-lexicon-0.12.4.tar.gz) = 23020 +SIZE (cargo/typenum-1.15.0.tar.gz) = 40741 +SIZE (cargo/unicode-ident-1.0.3.tar.gz) = 35031 +SIZE (cargo/unindent-0.1.10.tar.gz) = 7703 +SIZE (cargo/version_check-0.9.4.tar.gz) = 14895 +SIZE (cargo/windows-sys-0.36.1.tar.gz) = 3347053 +SIZE (cargo/windows_aarch64_msvc-0.36.1.tar.gz) = 661960 +SIZE (cargo/windows_i686_gnu-0.36.1.tar.gz) = 818115 +SIZE (cargo/windows_i686_msvc-0.36.1.tar.gz) = 724575 +SIZE (cargo/windows_x86_64_gnu-0.36.1.tar.gz) = 790934 +SIZE (cargo/windows_x86_64_msvc-0.36.1.tar.gz) = 661999 +SIZE (synapse-1.68.0.tar.gz) = 7961362 diff --git a/net/synapse/modules.inc b/net/synapse/modules.inc new file mode 100644 index 00000000000..432de37712d --- /dev/null +++ b/net/synapse/modules.inc @@ -0,0 +1,38 @@ +MODCARGO_CRATES += autocfg 1.1.0 # Apache-2.0 OR MIT +MODCARGO_CRATES += bitflags 1.3.2 # MIT/Apache-2.0 +MODCARGO_CRATES += blake2 0.10.4 # MIT OR Apache-2.0 +MODCARGO_CRATES += block-buffer 0.10.3 # MIT OR Apache-2.0 +MODCARGO_CRATES += cfg-if 1.0.0 # MIT/Apache-2.0 +MODCARGO_CRATES += crypto-common 0.1.6 # MIT OR Apache-2.0 +MODCARGO_CRATES += digest 0.10.5 # MIT OR Apache-2.0 +MODCARGO_CRATES += generic-array 0.14.6 # MIT +MODCARGO_CRATES += hex 0.4.3 # MIT OR Apache-2.0 +MODCARGO_CRATES += indoc 1.0.7 # MIT OR Apache-2.0 +MODCARGO_CRATES += libc 0.2.132 # MIT OR Apache-2.0 +MODCARGO_CRATES += lock_api 0.4.7 # MIT OR Apache-2.0 +MODCARGO_CRATES += once_cell 1.13.1 # MIT OR Apache-2.0 +MODCARGO_CRATES += parking_lot 0.12.1 # MIT OR Apache-2.0 +MODCARGO_CRATES += parking_lot_core 0.9.3 # MIT OR Apache-2.0 +MODCARGO_CRATES += proc-macro2 1.0.43 # MIT OR Apache-2.0 +MODCARGO_CRATES += pyo3 0.16.6 # Apache-2.0 +MODCARGO_CRATES += pyo3-build-config 0.16.6 # Apache-2.0 +MODCARGO_CRATES += pyo3-ffi 0.16.6 # Apache-2.0 +MODCARGO_CRATES += pyo3-macros 0.16.6 # Apache-2.0 +MODCARGO_CRATES += pyo3-macros-backend 0.16.6 # Apache-2.0 +MODCARGO_CRATES += quote 1.0.21 # MIT OR Apache-2.0 +MODCARGO_CRATES += redox_syscall 0.2.16 # MIT +MODCARGO_CRATES += scopeguard 1.1.0 # MIT/Apache-2.0 +MODCARGO_CRATES += smallvec 1.9.0 # MIT OR Apache-2.0 +MODCARGO_CRATES += subtle 2.4.1 # BSD-3-Clause +MODCARGO_CRATES += syn 1.0.99 # MIT OR Apache-2.0 +MODCARGO_CRATES += target-lexicon 0.12.4 # Apache-2.0 WITH LLVM-exception +MODCARGO_CRATES += typenum 1.15.0 # MIT OR Apache-2.0 +MODCARGO_CRATES += unicode-ident 1.0.3 # (MIT OR Apache-2.0) AND Unicode-DFS-2016 +MODCARGO_CRATES += unindent 0.1.10 # MIT OR Apache-2.0 +MODCARGO_CRATES += version_check 0.9.4 # MIT/Apache-2.0 +MODCARGO_CRATES += windows-sys 0.36.1 # MIT OR Apache-2.0 +MODCARGO_CRATES += windows_aarch64_msvc 0.36.1 # MIT OR Apache-2.0 +MODCARGO_CRATES += windows_i686_gnu 0.36.1 # MIT OR Apache-2.0 +MODCARGO_CRATES += windows_i686_msvc 0.36.1 # MIT OR Apache-2.0 +MODCARGO_CRATES += windows_x86_64_gnu 0.36.1 # MIT OR Apache-2.0 +MODCARGO_CRATES += windows_x86_64_msvc 0.36.1 # MIT OR Apache-2.0 diff --git a/net/synapse/patches/patch-pyproject_toml b/net/synapse/patches/patch-pyproject_toml new file mode 100644 index 00000000000..0542c636a59 --- /dev/null +++ b/net/synapse/patches/patch-pyproject_toml @@ -0,0 +1,14 @@ +No need to run-depend on setuptools_rust and rust.. + +Index: pyproject.toml +--- pyproject.toml.orig ++++ pyproject.toml +@@ -182,7 +182,7 @@ pydantic = ">=1.7.4" + # This isn't really a dev-dependency, as `poetry install --no-dev` will fail, + # but the alternative is to add it to the main list of deps where it isn't + # needed. +-setuptools_rust = ">=1.3" ++# setuptools_rust = ">=1.3" + + + # Optional Dependencies diff --git a/net/synapse/pkg/PLIST b/net/synapse/pkg/PLIST index d70b9472053..bbc8c0ef486 100644 --- a/net/synapse/pkg/PLIST +++ b/net/synapse/pkg/PLIST @@ -1900,10 +1900,24 @@ lib/python${MODPY_VERSION}/site-packages/synapse/storage/schema/main/delta/72/03 lib/python${MODPY_VERSION}/site-packages/synapse/storage/schema/main/delta/72/03remove_groups.sql lib/python${MODPY_VERSION}/site-packages/synapse/storage/schema/main/delta/72/04drop_column_application_services_state_last_txn.sql.postgres lib/python${MODPY_VERSION}/site-packages/synapse/storage/schema/main/delta/72/04drop_column_application_services_state_last_txn.sql.sqlite +lib/python${MODPY_VERSION}/site-packages/synapse/storage/schema/main/delta/72/05receipts_event_stream_ordering.sql lib/python${MODPY_VERSION}/site-packages/synapse/storage/schema/main/delta/72/05remove_unstable_private_read_receipts.sql +lib/python${MODPY_VERSION}/site-packages/synapse/storage/schema/main/delta/72/06add_consent_ts_to_users.sql +lib/python${MODPY_VERSION}/site-packages/synapse/storage/schema/main/delta/72/06thread_notifications.sql +lib/python${MODPY_VERSION}/site-packages/synapse/storage/schema/main/delta/72/07force_update_current_state_events_membership.py +lib/python${MODPY_VERSION}/site-packages/synapse/storage/schema/main/delta/72/07thread_receipts.sql.postgres +lib/python${MODPY_VERSION}/site-packages/synapse/storage/schema/main/delta/72/07thread_receipts.sql.sqlite +lib/python${MODPY_VERSION}/site-packages/synapse/storage/schema/main/delta/72/08begin_cache_invalidation_seq_at_2.sql.postgres +lib/python${MODPY_VERSION}/site-packages/synapse/storage/schema/main/delta/72/08thread_receipts.sql +lib/python${MODPY_VERSION}/site-packages/synapse/storage/schema/main/delta/72/09partial_indices.sql.sqlite ${MODPY_COMMENT}lib/python${MODPY_VERSION}/site-packages/synapse/storage/schema/main/delta/72/${MODPY_PYCACHE}/ lib/python${MODPY_VERSION}/site-packages/synapse/storage/schema/main/delta/72/${MODPY_PYCACHE}03bg_populate_events_columns.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION} lib/python${MODPY_VERSION}/site-packages/synapse/storage/schema/main/delta/72/${MODPY_PYCACHE}03bg_populate_events_columns.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/synapse/storage/schema/main/delta/72/${MODPY_PYCACHE}07force_update_current_state_events_membership.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION} +lib/python${MODPY_VERSION}/site-packages/synapse/storage/schema/main/delta/72/${MODPY_PYCACHE}07force_update_current_state_events_membership.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/synapse/storage/schema/main/delta/73/ +lib/python${MODPY_VERSION}/site-packages/synapse/storage/schema/main/delta/73/01event_failed_pull_attempts.sql +lib/python${MODPY_VERSION}/site-packages/synapse/storage/schema/main/delta/73/02room_id_indexes_for_purging.sql lib/python${MODPY_VERSION}/site-packages/synapse/storage/schema/main/full_schemas/ lib/python${MODPY_VERSION}/site-packages/synapse/storage/schema/main/full_schemas/16/ lib/python${MODPY_VERSION}/site-packages/synapse/storage/schema/main/full_schemas/16/application_services.sql @@ -1928,8 +1942,6 @@ lib/python${MODPY_VERSION}/site-packages/synapse/storage/schema/state/ lib/python${MODPY_VERSION}/site-packages/synapse/storage/schema/state/delta/ lib/python${MODPY_VERSION}/site-packages/synapse/storage/schema/state/delta/23/ lib/python${MODPY_VERSION}/site-packages/synapse/storage/schema/state/delta/23/drop_state_index.sql -lib/python${MODPY_VERSION}/site-packages/synapse/storage/schema/state/delta/30/ -lib/python${MODPY_VERSION}/site-packages/synapse/storage/schema/state/delta/30/state_stream.sql lib/python${MODPY_VERSION}/site-packages/synapse/storage/schema/state/delta/32/ lib/python${MODPY_VERSION}/site-packages/synapse/storage/schema/state/delta/32/remove_state_indices.sql lib/python${MODPY_VERSION}/site-packages/synapse/storage/schema/state/delta/35/ @@ -1978,6 +1990,7 @@ lib/python${MODPY_VERSION}/site-packages/synapse/streams/${MODPY_PYCACHE}events. lib/python${MODPY_VERSION}/site-packages/synapse/streams/${MODPY_PYCACHE}events.${MODPY_PYC_MAGIC_TAG}pyc lib/python${MODPY_VERSION}/site-packages/synapse/streams/config.py lib/python${MODPY_VERSION}/site-packages/synapse/streams/events.py +@so lib/python${MODPY_VERSION}/site-packages/synapse/synapse_rust${MODPY_ABI3SO}.so lib/python${MODPY_VERSION}/site-packages/synapse/types.py lib/python${MODPY_VERSION}/site-packages/synapse/util/ lib/python${MODPY_VERSION}/site-packages/synapse/util/__init__.py @@ -2032,6 +2045,8 @@ lib/python${MODPY_VERSION}/site-packages/synapse/util/${MODPY_PYCACHE}retryutils lib/python${MODPY_VERSION}/site-packages/synapse/util/${MODPY_PYCACHE}retryutils.${MODPY_PYC_MAGIC_TAG}pyc lib/python${MODPY_VERSION}/site-packages/synapse/util/${MODPY_PYCACHE}rlimit.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION} lib/python${MODPY_VERSION}/site-packages/synapse/util/${MODPY_PYCACHE}rlimit.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/synapse/util/${MODPY_PYCACHE}rust.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION} +lib/python${MODPY_VERSION}/site-packages/synapse/util/${MODPY_PYCACHE}rust.${MODPY_PYC_MAGIC_TAG}pyc lib/python${MODPY_VERSION}/site-packages/synapse/util/${MODPY_PYCACHE}stringutils.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION} lib/python${MODPY_VERSION}/site-packages/synapse/util/${MODPY_PYCACHE}stringutils.${MODPY_PYC_MAGIC_TAG}pyc lib/python${MODPY_VERSION}/site-packages/synapse/util/${MODPY_PYCACHE}templates.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION} @@ -2099,6 +2114,7 @@ lib/python${MODPY_VERSION}/site-packages/synapse/util/patch_inline_callbacks.py lib/python${MODPY_VERSION}/site-packages/synapse/util/ratelimitutils.py lib/python${MODPY_VERSION}/site-packages/synapse/util/retryutils.py lib/python${MODPY_VERSION}/site-packages/synapse/util/rlimit.py +lib/python${MODPY_VERSION}/site-packages/synapse/util/rust.py lib/python${MODPY_VERSION}/site-packages/synapse/util/stringutils.py lib/python${MODPY_VERSION}/site-packages/synapse/util/templates.py lib/python${MODPY_VERSION}/site-packages/synapse/util/threepids.py