diff --git a/0001-relax-cryptography-dependency-version-requirement.patch b/0001-relax-cryptography-dependency-version-requirement.patch index 38bcb73..08ebce2 100644 --- a/0001-relax-cryptography-dependency-version-requirement.patch +++ b/0001-relax-cryptography-dependency-version-requirement.patch @@ -1,4 +1,4 @@ -From 4bdcf996757a5d13df63f7891a1dd4c7186c20dc Mon Sep 17 00:00:00 2001 +From 3a65f800f75e11bd9c3a7db167644f9ebec444c1 Mon Sep 17 00:00:00 2001 From: Dan Callaghan Date: Sun, 18 Jul 2021 13:18:10 +1000 Subject: [PATCH] relax cryptography dependency version requirement @@ -12,10 +12,10 @@ https://bugzilla.redhat.com/show_bug.cgi?id=1978949 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/synapse/python_dependencies.py b/synapse/python_dependencies.py -index 271c17c22..e8a71d477 100644 +index d844fbb3b3..277bd043a9 100644 --- a/synapse/python_dependencies.py +++ b/synapse/python_dependencies.py -@@ -82,9 +82,7 @@ +@@ -84,9 +84,7 @@ REQUIREMENTS = [ "Jinja2>=2.9", "bleach>=1.4.3", "typing-extensions>=3.7.4", @@ -25,7 +25,7 @@ index 271c17c22..e8a71d477 100644 + "cryptography>=3.4", "ijson>=3.1", "matrix-common==1.0.0", - + ] -- -2.31.1 +2.34.1 diff --git a/0002-Fix-type-errors-introduced-by-new-annotations-in-the.patch b/0002-Fix-type-errors-introduced-by-new-annotations-in-the.patch new file mode 100644 index 0000000..ccb9e5d --- /dev/null +++ b/0002-Fix-type-errors-introduced-by-new-annotations-in-the.patch @@ -0,0 +1,74 @@ +From b5a1489e0c00701aee43ca207cdde093726890e4 Mon Sep 17 00:00:00 2001 +From: reivilibre +Date: Wed, 2 Feb 2022 16:51:00 +0000 +Subject: [PATCH 2/2] Fix type errors introduced by new annotations in the + Prometheus Client library. (#11832) + +Co-authored-by: David Robertson +--- + changelog.d/11832.misc | 1 + + synapse/metrics/__init__.py | 10 +++++++++- + synapse/python_dependencies.py | 3 +-- + 3 files changed, 11 insertions(+), 3 deletions(-) + create mode 100644 changelog.d/11832.misc + +diff --git a/changelog.d/11832.misc b/changelog.d/11832.misc +new file mode 100644 +index 0000000000..5ff117d933 +--- /dev/null ++++ b/changelog.d/11832.misc +@@ -0,0 +1 @@ ++Fix type errors introduced by new annotations in the Prometheus Client library. +\ No newline at end of file +diff --git a/synapse/metrics/__init__.py b/synapse/metrics/__init__.py +index 9e6c1b2f3b..cca084c18c 100644 +--- a/synapse/metrics/__init__.py ++++ b/synapse/metrics/__init__.py +@@ -30,6 +30,7 @@ from typing import ( + Type, + TypeVar, + Union, ++ cast, + ) + + import attr +@@ -60,7 +61,7 @@ all_gauges: "Dict[str, Union[LaterGauge, InFlightGauge]]" = {} + HAVE_PROC_SELF_STAT = os.path.exists("/proc/self/stat") + + +-class RegistryProxy: ++class _RegistryProxy: + @staticmethod + def collect() -> Iterable[Metric]: + for metric in REGISTRY.collect(): +@@ -68,6 +69,13 @@ class RegistryProxy: + yield metric + + ++# A little bit nasty, but collect() above is static so a Protocol doesn't work. ++# _RegistryProxy matches the signature of a CollectorRegistry instance enough ++# for it to be usable in the contexts in which we use it. ++# TODO Do something nicer about this. ++RegistryProxy = cast(CollectorRegistry, _RegistryProxy) ++ ++ + @attr.s(slots=True, hash=True, auto_attribs=True) + class LaterGauge: + +diff --git a/synapse/python_dependencies.py b/synapse/python_dependencies.py +index d25f6e18e3..c7cfa9ae87 100644 +--- a/synapse/python_dependencies.py ++++ b/synapse/python_dependencies.py +@@ -76,8 +76,7 @@ REQUIREMENTS = [ + "msgpack>=0.5.2", + "phonenumbers>=8.2.0", + # we use GaugeHistogramMetric, which was added in prom-client 0.4.0. +- # 0.13.0 has an incorrect type annotation, see #11832. +- "prometheus_client>=0.4.0,<0.13.0", ++ "prometheus_client>=0.4.0", + # we use `order`, which arrived in attrs 19.2.0. + # Note: 21.1.0 broke `/sync`, see #9936 + "attrs>=19.2.0,!=21.1.0", +-- +2.34.1 + diff --git a/0002-Remove-dependency-on-non-standard-mock.patch b/0002-Remove-dependency-on-non-standard-mock.patch deleted file mode 100644 index e138743..0000000 --- a/0002-Remove-dependency-on-non-standard-mock.patch +++ /dev/null @@ -1,42 +0,0 @@ -From 1b7558ed4060acd4ca34a88c7b14ce7da2baab13 Mon Sep 17 00:00:00 2001 -From: "Kai A. Hiller" -Date: Tue, 14 Dec 2021 18:16:37 +0100 -Subject: [PATCH] Remove dependency on non-standard mock - ---- - setup.py | 4 +--- - tests/storage/test_background_update.py | 3 +-- - 2 files changed, 2 insertions(+), 5 deletions(-) - -diff --git a/setup.py b/setup.py -index 2c6fb9aac..bfca16727 100755 ---- a/setup.py -+++ b/setup.py -@@ -119,9 +119,7 @@ CONDITIONAL_REQUIREMENTS["mypy"] = [ - # Tests assume that all optional dependencies are installed. - # - # parameterized_class decorator was introduced in parameterized 0.7.0 --# --# We use `mock` library as that backports `AsyncMock` to Python 3.6 --CONDITIONAL_REQUIREMENTS["test"] = ["parameterized>=0.7.0", "mock>=4.0.0"] -+CONDITIONAL_REQUIREMENTS["test"] = ["parameterized>=0.7.0"] - - CONDITIONAL_REQUIREMENTS["dev"] = ( - CONDITIONAL_REQUIREMENTS["lint"] -diff --git a/tests/storage/test_background_update.py b/tests/storage/test_background_update.py -index d77c00150..542b70a1e 100644 ---- a/tests/storage/test_background_update.py -+++ b/tests/storage/test_background_update.py -@@ -12,8 +12,7 @@ - # See the License for the specific language governing permissions and - # limitations under the License. - --# Use backported mock for AsyncMock support on Python 3.6. --from mock import Mock -+from unittest.mock import Mock - - from twisted.internet.defer import Deferred, ensureDeferred - --- -2.33.1 - diff --git a/0003-Fix-losing-incoming-EDUs-if-debug-logging-enabled-11.patch b/0003-Fix-losing-incoming-EDUs-if-debug-logging-enabled-11.patch new file mode 100644 index 0000000..650be19 --- /dev/null +++ b/0003-Fix-losing-incoming-EDUs-if-debug-logging-enabled-11.patch @@ -0,0 +1,48 @@ +From a160ac1d4e42e2a753172f939bead7d6c21ce0cd Mon Sep 17 00:00:00 2001 +From: David Robertson +Date: Wed, 2 Feb 2022 16:25:17 +0000 +Subject: [PATCH 3/3] Fix losing incoming EDUs if debug logging enabled + (#11890) + +* Fix losing incoming EDUs if debug logging enabled + +Fixes #11889. Homeservers should only be affected if the +`synapse.8631_debug` logger was enabled for DEBUG mode. + +I am not sure if this merits a bugfix release: I think the logging can +be disabled in config if anyone is affected? But it is still pretty bad. +--- + changelog.d/11890.bugfix | 1 + + synapse/federation/transport/server/federation.py | 4 ++-- + 2 files changed, 3 insertions(+), 2 deletions(-) + create mode 100644 changelog.d/11890.bugfix + +diff --git a/changelog.d/11890.bugfix b/changelog.d/11890.bugfix +new file mode 100644 +index 0000000000..6b696692e3 +--- /dev/null ++++ b/changelog.d/11890.bugfix +@@ -0,0 +1 @@ ++Fix a bug introduced in Synapse 1.51.0rc1 where incoming federation transactions containing at least one EDU would be dropped if debug logging was enabled for `synapse.8631_debug`. +\ No newline at end of file +diff --git a/synapse/federation/transport/server/federation.py b/synapse/federation/transport/server/federation.py +index 9c1ad5851f..d86dfede4e 100644 +--- a/synapse/federation/transport/server/federation.py ++++ b/synapse/federation/transport/server/federation.py +@@ -109,11 +109,11 @@ class FederationSendServlet(BaseFederationServerServlet): + ) + + if issue_8631_logger.isEnabledFor(logging.DEBUG): +- DEVICE_UPDATE_EDUS = {"m.device_list_update", "m.signing_key_update"} ++ DEVICE_UPDATE_EDUS = ["m.device_list_update", "m.signing_key_update"] + device_list_updates = [ + edu.content + for edu in transaction_data.get("edus", []) +- if edu.edu_type in DEVICE_UPDATE_EDUS ++ if edu.get("edu_type") in DEVICE_UPDATE_EDUS + ] + if device_list_updates: + issue_8631_logger.debug( +-- +2.34.1 + diff --git a/matrix-synapse.spec b/matrix-synapse.spec index 62044e3..df57840 100644 --- a/matrix-synapse.spec +++ b/matrix-synapse.spec @@ -2,7 +2,7 @@ # Version suffix in URL when building release candidates %global rcx %{nil} -%global ghversion 1.51.0 +%global ghversion 1.52.0 %{?python_enable_dependency_generator} @@ -23,9 +23,12 @@ Source1: synapse.sysconfig Source2: synapse.service Source4: synapse@.service +Source3: matrix-synapse.sysusers # non-upstreamable patch to accept any version of python-cryptography, see RHBZ#1978949 -#Patch1: 0001-relax-cryptography-dependency-version-requirement.patch -#Patch2: 0002-Remove-dependency-on-non-standard-mock.patch +Patch1: 0001-relax-cryptography-dependency-version-requirement.patch +Patch2: 0002-Fix-type-errors-introduced-by-new-annotations-in-the.patch +Patch3: 0003-Fix-losing-incoming-EDUs-if-debug-logging-enabled-11.patch + BuildArch: noarch BuildRequires: python3-devel @@ -51,13 +54,13 @@ BuildRequires: python3-ijson BuildRequires: python3-jinja2 >= 2.9 BuildRequires: python3-jsonschema BuildRequires: python3-jwt -BuildRequires: python3-lxml >= 3.5.0 +BuildRequires: python3-lxml BuildRequires: python3-matrix-common BuildRequires: python3-matrix-synapse-ldap3 >= 0.1 BuildRequires: python3-msgpack >= 0.5.2 BuildRequires: python3-netaddr >= 0.7.18 BuildRequires: python3-phonenumbers >= 8.2.0 -BuildRequires: python3-pillow >= 4.3.0 +BuildRequires: python3-pillow BuildRequires: python3-prometheus_client BuildRequires: python3-pyOpenSSL >= 16.0.0 BuildRequires: python3-pyasn1 >= 0.1.9 @@ -93,8 +96,8 @@ the ecosystem. %prep %autosetup -p1 -n %{srcname}-%{ghversion}%{rcx} -sed -i 's|"cryptography>=3.4.7",|"cryptography>=3.4",|' synapse/python_dependencies.py -rm tests/storage/test_background_update.py +#sed -i 's|"cryptography>=3.4.7",|"cryptography>=3.4",|' synapse/python_dependencies.py +#rm tests/storage/test_background_update.py # We don't support the built-in client so remove all the bundled JS. rm -rf synapse/static @@ -117,17 +120,14 @@ install -p -D -T -m 0644 %{SOURCE1} %{buildroot}%{_sysconfdir}/sysconfig/synapse install -p -D -T -m 0644 %{SOURCE2} %{buildroot}%{_unitdir}/synapse.service install -p -D -T -m 0644 %{SOURCE2} %{buildroot}%{_unitdir}/synapse@.service install -p -d -m 755 %{buildroot}/%{_sharedstatedir}/synapse +install -p -D -m 0644 %{SOURCE3} %{buildroot}%{_sysusersdir}/%{name}.conf %check PYTHONPATH=. trial-3 tests %pre -getent group synapse >/dev/null || groupadd -r synapse -getent passwd synapse >/dev/null || \ - useradd -r -g synapse -d %{_sharedstatedir}/synapse -s /sbin/nologin \ - -c "The user for the Synapse Matrix server" synapse -exit 0 +%sysusers_create_compat %{SOURCE3} %post %systemd_post synapse.service @@ -153,11 +153,22 @@ exit 0 %attr(755,synapse,synapse) %dir %{_sharedstatedir}/synapse %attr(755,synapse,synapse) %dir %{_sysconfdir}/synapse %attr(644,synapse,synapse) %config(noreplace) %{_sysconfdir}/synapse/* +%{_sysusersdir}/%{name}.conf %changelog -* Mon Jan 10 2022 Kai A. Hiller - 1.50.0-0.1 -- Update to v1.50.0 +* Wed Feb 09 2022 Kai A. Hiller - 1.52.0-2 +- Backport: Fix losing incoming EDUs if debug logging enabled + +* Tue Feb 08 2022 Kai A. Hiller - 1.52.0-1 +- Update to v1.52.0 +- Create synapse user and group declaratively + +* Thu Jan 27 2022 Kai A. Hiller - 1.51.0-1 +- Update to v1.51.0 + +* Thu Jan 20 2022 Fedora Release Engineering - 1.49.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild * Tue Dec 21 2021 Kai A. Hiller - 1.49.2-1 - Update to v1.49.2 diff --git a/matrix-synapse.sysusers b/matrix-synapse.sysusers new file mode 100644 index 0000000..97adeeb --- /dev/null +++ b/matrix-synapse.sysusers @@ -0,0 +1,2 @@ +#Type Name ID GECOS Home directory Shell +u synapse - "Runs the Synapse Matrix homeserver" /run/synapse /sbin/nologin