diff --git a/_service b/_service
index 9ffa763..005ce84 100644
--- a/_service
+++ b/_service
@@ -4,11 +4,11 @@
     <param name="versionformat">@PARENT_TAG@</param>
     <param name="url">https://github.com/matrix-org/synapse.git</param>
     <param name="scm">git</param>
-    <param name="revision">v1.60.0</param>
+    <param name="revision">v1.61.0</param>
     <param name="versionrewrite-pattern">v(.*)</param>
     <param name="versionrewrite-replacement">\1</param>
     <!--
-    <param name="revision">v1.60.0rc2</param>
+    <param name="revision">v1.62.0rc1</param>
     <param name="versionrewrite-pattern">v([\.\d]+)(rc.*)</param>
     <param name="versionrewrite-replacement">\1~\2</param>
     -->
diff --git a/matrix-synapse-1.60.0.obscpio b/matrix-synapse-1.60.0.obscpio
deleted file mode 100644
index dfb0ca9..0000000
--- a/matrix-synapse-1.60.0.obscpio
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:4b945b94d7f6fa93e06a449a08308782b8584a527f2bd5d322662000f4e905f4
-size 33331213
diff --git a/matrix-synapse-1.61.0.obscpio b/matrix-synapse-1.61.0.obscpio
new file mode 100644
index 0000000..8806ba9
--- /dev/null
+++ b/matrix-synapse-1.61.0.obscpio
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d29e69b36fb0c89d8cf2bb5ee6bedf120d63487c8eac277f6a416133449442a4
+size 33012749
diff --git a/matrix-synapse-test.spec b/matrix-synapse-test.spec
index 1a47daa..115acc9 100644
--- a/matrix-synapse-test.spec
+++ b/matrix-synapse-test.spec
@@ -27,7 +27,7 @@
 
 %define         pkgname matrix-synapse
 Name:           %{pkgname}-test
-Version:        1.60.0
+Version:        1.61.0
 Release:        0
 Summary:        Test package for %{pkgname}
 License:        Apache-2.0
diff --git a/matrix-synapse.changes b/matrix-synapse.changes
index 09d823a..4390153 100644
--- a/matrix-synapse.changes
+++ b/matrix-synapse.changes
@@ -1,3 +1,155 @@
+-------------------------------------------------------------------
+Tue Jun 14 15:39:50 UTC 2022 - Marcus Rueckert <mrueckert@suse.de>
+
+- update the dependencies
+  - drop PyNaCL dependency as it is not longer needed
+  - refreshed some of the version dependencies to use poetry.lock
+    for version numbers instead of the pyproject.toml
+
+-------------------------------------------------------------------
+Tue Jun 14 15:37:21 UTC 2022 - Marcus Rueckert <mrueckert@suse.de>
+
+- Update to 1.61.0
+  This release removes support for the non-standard feature known
+  both as 'groups' and as 'communities', which have been superseded
+  by Spaces.
+
+  - Features
+    - Add new media_retention options to the homeserver config for
+      routinely cleaning up non-recently accessed media. (#12732,
+      #12972, #12977)
+    - Experimental support for MSC3772: Push rule for mutually
+      related events. (#12740, #12859)
+    - Update to the check_event_for_spam module callback: Deprecate
+      the current callback signature, replace it with a new
+      signature that is both less ambiguous (replacing booleans
+      with explicit allow/block) and more powerful (ability to
+      return explicit error codes). (#12808)
+    - Add storage and module API methods to get monthly active
+      users (and their corresponding appservices) within an
+      optionally specified time range. (#12838, #12917)
+    - Support the new error code
+      ORG.MATRIX.MSC3823.USER_ACCOUNT_SUSPENDED from MSC3823.
+      (#12845, #12923)
+    - Add a configurable background job to delete stale devices.
+      (#12855)
+    - Improve URL previews for pages with empty elements. (#12951)
+    - Allow updating a user's password using the admin API without
+      logging out their devices. Contributed by @jcgruenhage.
+      (#12952)
+  - Bugfixes
+    - Always send an access_token in /thirdparty/ requests to
+      appservices, as required by the Application Service API
+      specification. (#12746)
+    - Implement MSC3816: sending the root event in a thread should
+      count as having 'participated' in it. (#12766)
+    - Delete events from the federation_inbound_events_staging
+      table when a room is purged through the admin API. (#12784)
+    - Fix a bug where we did not correctly handle invalid device
+      list updates over federation. Contributed by Carl Bordum
+      Hansen. (#12829)
+    - Fix a bug which allowed multiple async operations to access
+      database locks concurrently. Contributed by @sumnerevans @
+      Beeper. (#12832)
+    - Fix an issue introduced in Synapse 0.34 where the
+      /notifications endpoint would only return notifications if a
+      user registered at least one pusher. Contributed by Famedly.
+      (#12840)
+    - Fix a bug where servers using a Postgres database would fail
+      to backfill from an insertion event when MSC2716 is enabled
+      (experimental_features.msc2716_enabled). (#12843)
+    - Fix MSC3787 rooms being omitted from room directory, room
+      summary and space hierarchy responses. (#12858)
+    - Fix a bug introduced in Synapse 1.54.0 which could sometimes
+      cause exceptions when handling federated traffic. (#12877)
+    - Fix a bug introduced in Synapse 1.59.0 which caused room
+      deletion to fail with a foreign key violation error. (#12889)
+    - Fix a long-standing bug which caused the /messages endpoint
+      to return an incorrect end attribute when there were no more
+      events. Contributed by @Vetchu. (#12903)
+    - Fix a bug introduced in Synapse 1.58.0 where /sync would fail
+      if the most recent event in a room was a redaction of an
+      event that has since been purged. (#12905)
+    - Fix a potential memory leak when generating thumbnails.
+      (#12932)
+    - Fix a long-standing bug where a URL preview would break if
+      the image failed to download. (#12950)
+  - Improved Documentation
+    - Mention removed community/group worker endpoints in
+      upgrade.md. Contributed by @olmari. (#13023)
+    - Fix typographical errors in documentation. (#12863)
+    - Fix documentation incorrectly stating the sendToDevice
+      endpoint can be directed at generic workers. Contributed by
+      Nick @ Beeper. (#12867)
+  - Deprecations and Removals
+    - Remove support for the non-standard groups/communities
+      feature from Synapse. (#12553, #12558, #12563, #12895,
+      #12897, #12899, #12900, #12936, #12966)
+    - Remove contributed kick_users.py script. This is broken under
+      Python 3, and is not added to the environment when pip
+      installing Synapse. (#12908)
+    - Remove contrib/jitsimeetbridge. This was an unused experiment
+      that hasn't been meaningfully changed since 2014. (#12909)
+    - Remove unused contrib/experiements/cursesio.py script, which
+      fails to run under Python 3. (#12910)
+    - Remove unused contrib/experiements/test_messaging.py script.
+      This fails to run on Python 3. (#12911)
+  - Internal Changes
+    - Test Synapse against Complement with workers. (#12810,
+      #12933)
+    - Reduce the amount of state we pull from the DB. (#12811,
+      #12964)
+    - Try other homeservers when re-syncing state for rooms with
+      partial state. (#12812)
+    - Resume state re-syncing for rooms with partial state after a
+      Synapse restart. (#12813)
+    - Remove Mutual Rooms' (MSC2666) endpoint dependency on the
+      User Directory. (#12836)
+    - Experimental: expand check_event_for_spam with ability to
+      return additional fields. This enables spam-checker
+      implementations to experiment with mechanisms to give users
+      more information about why they are blocked and whether any
+      action is needed from them to be unblocked. (#12846)
+    - Remove dont_notify from the .m.rule.room.server_acl rule.
+      (#12849)
+    - Remove the unstable /hierarchy endpoint from MSC2946.
+      (#12851)
+    - Pull out less state when handling gaps in room DAG. (#12852,
+      #12904)
+    - Clean-up the push rules datastore. (#12856)
+    - Correct a type annotation in the URL preview source code.
+      (#12860)
+    - Update pyjwt dependency to 2.4.0. (#12865)
+    - Enable the /account/whoami endpoint on synapse worker
+      processes. Contributed by Nick @ Beeper. (#12866)
+    - Enable the batch_send endpoint on synapse worker processes.
+      Contributed by Nick @ Beeper. (#12868)
+    - Don't generate empty AS transactions when the AS is flagged
+      as down. Contributed by Nick @ Beeper. (#12869)
+    - Fix up the variable state_store naming. (#12871)
+    - Faster room joins: when querying the current state of the
+      room, wait for state to be populated. (#12872)
+    - Avoid running queries which will never result in deletions.
+      (#12879)
+    - Use constants for EDU types. (#12884)
+    - Reduce database load of /sync when presence is enabled.
+      (#12885)
+    - Refactor have_seen_events to reduce memory consumed when
+      processing federation traffic. (#12886)
+    - Refactor receipt linearization code. (#12888)
+    - Add type annotations to synapse.logging.opentracing. (#12894)
+    - Remove PyNaCl occurrences directly used in Synapse code.
+      (#12902)
+    - Bump types-jsonschema from 4.4.1 to 4.4.6. (#12912)
+    - Rename storage classes. (#12913)
+    - Preparation for database schema simplifications: stop reading
+      from event_edges.room_id. (#12914)
+    - Check if we are in a virtual environment before overriding
+      the PYTHONPATH environment variable in the demo script.
+      (#12916)
+    - Improve the logging when signature checks on events fail.
+      (#12925)
+
 -------------------------------------------------------------------
 Tue May 31 16:57:15 UTC 2022 - Marcus Rueckert <mrueckert@suse.de>
 
diff --git a/matrix-synapse.obsinfo b/matrix-synapse.obsinfo
index 97f1d34..1b11ea2 100644
--- a/matrix-synapse.obsinfo
+++ b/matrix-synapse.obsinfo
@@ -1,4 +1,4 @@
 name: matrix-synapse
-version: 1.60.0
-mtime: 1654000909
-commit: 5984ada6bb340c736376ba94d766bf76ceeaf514
+version: 1.61.0
+mtime: 1655204205
+commit: b8bf61230c0d51231429b2d15973a8fd1cd76906
diff --git a/matrix-synapse.spec b/matrix-synapse.spec
index e3729bd..f2bc0ff 100644
--- a/matrix-synapse.spec
+++ b/matrix-synapse.spec
@@ -16,6 +16,102 @@
 #
 
 
+%bcond_without use_poetry_for_dependencies
+
+# NOTE: Keep this is in the same order as pyproject.toml.
+%if %{with use_poetry_for_dependencies}
+%global Jinja2_version                3.0.3
+%global Pillow_version                9.0.1
+%global PyYAML_version                6.0
+%global Twisted_version               22.4.0
+%global attrs_version                 21.4.0
+%global bcrypt_version                3.2.0
+%global bleach_version                3.3.0
+%global canonicaljson_version         1.6.0
+%global cryptography_version          36.0.1
+%global frozendict_version            2.3.0
+%global idna_version                  3.3
+%global ijson_version                 3.1.4
+%global jsonschema_version            4.4.6
+%global matrix_common_version         1.1.0
+%global msgpack_version               1.0.3
+%global netaddr_version               0.8.0
+%global phonenumbers_version          8.12.44
+%global prometheus_client_version     0.14.0
+%global psutil_version                2.0.0
+%global pyOpenSSL_version             22.0.0
+%global pyasn1_version                0.4.8
+%global pyasn1_modules_version        0.2.8
+%global pymacaroons_version           0.13.0
+%global service_identity_version      21.1.0
+%global signedjson_version            1.1.4
+%global six_version                   1.16.0
+%global sortedcontainers_version      2.4.0
+%global systemd_version               234
+%global typing_extensions_version     4.1.1
+%global treq_version                  22.2.0
+%global unpaddedbase64_version        2.1.0
+%global matrix_synapse_ldap3_version  0.2.0
+%global packaging_version             21.3
+%global psycopg2_version              2.9.3
+%global pysaml2_version               7.1.2
+%global Authlib_version               0.15.5
+%global lxml_version                  4.8.0
+%global sentry_sdk_version            1.5.11
+%global PyJWT_version                 2.4.0
+%global jaeger_client_version         4.8.0
+%global opentracing_version           2.4.0
+%global hiredis_version               2.0.0
+%global txredisapi_version            1.4.7
+%global Pympler_version               1.0.1
+%else
+# some version locks based on poetry.lock
+%global Jinja2_version                3.0
+%global Pillow_version                5.4.0
+%global PyYAML_version                3.11
+%global Twisted_version               18.9.0
+%global attrs_version                 21.1.1
+%global bcrypt_version                3.1.0
+%global bleach_version                1.4.3
+%global canonicaljson_version         1.4.0
+%global cryptography_version          3.4.7
+%global frozendict_version            2.1.3
+%global idna_version                  2.5
+%global ijson_version                 3.1.4
+%global jsonschema_version            3.0.0
+%global matrix_common_version         1.1.0
+%global msgpack_version               0.5.2
+%global netaddr_version               0.7.18
+%global phonenumbers_version          8.2.0
+%global prometheus_client_version     0.4.0
+%global psutil_version                2.0.0
+%global pyOpenSSL_version             16.0.0
+%global pyasn1_version                0.1.9
+%global pyasn1_modules_version        0.0.7
+%global pymacaroons_version           0.13.0
+%global service_identity_version      18.1.0
+%global signedjson_version            1.1.0
+%global six_version                   1.16.0
+%global sortedcontainers_version      1.4.4
+%global systemd_version               231
+%global typing_extensions_version     3.10.0
+%global treq_version                  15.1
+%global unpaddedbase64_version        2.1.0
+%global matrix_synapse_ldap3_version  0.1.0
+%global packaging_version             16.1
+%global psycopg2_version              2.8
+%global pysaml2_version               4.5.0
+%global Authlib_version               0.14.0
+%global lxml_version                  4.8.0
+%global sentry_sdk_version            1.5.11
+%global PyJWT_version                 1.6.4
+%global jaeger_client_version         4.0.0
+%global opentracing_version           2.2.0
+%global hiredis_version               2.0.0
+%global txredisapi_version            1.4.7
+%global Pympler_version               1.0.1
+%endif
+
 %define requires_peq() %(echo '%*' | LC_ALL=C xargs -r rpm -q --whatprovides --qf 'Requires: %%{name} = %%{epoch}:%%{version}\\n' | sed -e 's/ (none):/ /' -e 's/ 0:/ /' | grep -v "is not")
 %define pythons python3
 
@@ -51,7 +147,7 @@
 %define         pkgname matrix-synapse
 %define         eggname matrix_synapse
 Name:           %{pkgname}
-Version:        1.60.0
+Version:        1.61.0
 Release:        0
 Summary:        Matrix protocol reference homeserver
 License:        Apache-2.0
@@ -86,108 +182,107 @@ BuildRequires:  unzip
 %{?systemd_ordering}
 %{sysusers_requires}
 %requires_peq   %{use_python}-base
-# NOTE: Keep this is in the same order as synapse/python_dependencies.py.
-BuildRequires:  %{use_python}-Jinja2 >= 3.0
+# NOTE: Keep this is in the same order as pyproject.toml.
+# some version locks based on poetry.lock
+BuildRequires:  %{use_python}-Jinja2 >= %{Jinja2_version}
 %requires_peq   %{use_python}-Jinja2
-BuildRequires:  %{use_python}-Pillow >= 5.4.0
+BuildRequires:  %{use_python}-Pillow >= %{Pillow_version}
 %requires_peq   %{use_python}-Pillow
-BuildRequires:  %{use_python}-PyNaCl >= 1.2.1
-%requires_peq   %{use_python}-PyNaCl
-BuildRequires:  %{use_python}-PyYAML >= 3.11
+BuildRequires:  %{use_python}-PyYAML >= %{PyYAML_version}
 %requires_peq   %{use_python}-PyYAML
-BuildRequires:  %{use_python}-Twisted >= 20.3.0
+BuildRequires:  %{use_python}-Twisted >= %{Twisted_version}
 %requires_peq   %{use_python}-Twisted
-BuildRequires:  %{use_python}-attrs > 21.1.0
+BuildRequires:  %{use_python}-attrs >= %{attrs_version}
 %requires_peq   %{use_python}-attrs
-BuildRequires:  %{use_python}-bcrypt >= 3.2.0
+BuildRequires:  %{use_python}-bcrypt >= %{bcrypt_version}
 %requires_peq   %{use_python}-bcrypt
-BuildRequires:  %{use_python}-bleach >= 1.4.3
+BuildRequires:  %{use_python}-bleach >= %{bleach_version}
 %requires_peq   %{use_python}-bleach
-BuildRequires:  %{use_python}-canonicaljson >= 1.4.0
+BuildRequires:  %{use_python}-canonicaljson >= %{canonicaljson_version}
 %requires_peq   %{use_python}-canonicaljson
-BuildRequires:  %{use_python}-cryptography >= 3.4.7
+BuildRequires:  %{use_python}-cryptography >= %{cryptography_version}
 %requires_peq   %{use_python}-cryptography
-BuildRequires:  %{use_python}-frozendict >= 2.1.3
+BuildRequires:  %{use_python}-frozendict >= %{frozendict_version}
 %requires_peq   %{use_python}-frozendict
-BuildRequires:  %{use_python}-idna >= 2.5
+BuildRequires:  %{use_python}-idna >= %{idna_version}
 %requires_peq   %{use_python}-idna
-BuildRequires:  %{use_python}-ijson >= 3.1.4
+BuildRequires:  %{use_python}-ijson >= %{ijson_version}
 %requires_peq   %{use_python}-ijson
-BuildRequires:  %{use_python}-jsonschema >= 3.0.0
+BuildRequires:  %{use_python}-jsonschema >= %{jsonschema_version}
 %requires_peq   %{use_python}-jsonschema
-BuildRequires:  %{use_python}-matrix_common >= 1.1.0
+BuildRequires:  %{use_python}-matrix_common >= %{matrix_common_version}
 %requires_peq   %{use_python}-matrix_common
-BuildRequires:  %{use_python}-msgpack >= 0.5.2
+BuildRequires:  %{use_python}-msgpack >= %{msgpack_version}
 %requires_peq   %{use_python}-msgpack
-BuildRequires:  %{use_python}-netaddr >= 0.7.18
+BuildRequires:  %{use_python}-netaddr >= %{netaddr_version}
 %requires_peq   %{use_python}-netaddr
-BuildRequires:  %{use_python}-phonenumbers >= 8.2.0
+BuildRequires:  %{use_python}-phonenumbers >= %{phonenumbers_version}
 %requires_peq   %{use_python}-phonenumbers
-BuildRequires:  %{use_python}-prometheus_client >= 0.13.1
+BuildRequires:  %{use_python}-prometheus_client >= %{prometheus_client_version}
 %requires_peq   %{use_python}-prometheus_client
-BuildRequires:  %{use_python}-psutil >= 2.0.0
+BuildRequires:  %{use_python}-psutil >= %{psutil_version}
 %requires_peq   %{use_python}-psutil
-BuildRequires:  %{use_python}-pyOpenSSL >= 16.0.0
+BuildRequires:  %{use_python}-pyOpenSSL >= %{pyOpenSSL_version}
 %requires_peq   %{use_python}-pyOpenSSL
-BuildRequires:  %{use_python}-pyasn1 >= 0.1.9
+BuildRequires:  %{use_python}-pyasn1 >= %{pyasn1_version}
 %requires_peq   %{use_python}-pyasn1
-BuildRequires:  %{use_python}-pyasn1-modules >= 0.0.7
+BuildRequires:  %{use_python}-pyasn1-modules >= %{pyasn1_modules_version}
 %requires_peq   %{use_python}-pyasn1-modules
-BuildRequires:  %{use_python}-pymacaroons >= 0.13.0
+BuildRequires:  %{use_python}-pymacaroons >= %{pymacaroons_version}
 %requires_peq   %{use_python}-pymacaroons
-BuildRequires:  %{use_python}-service_identity >= 18.1.0
+BuildRequires:  %{use_python}-service_identity >= %{service_identity_version}
 %requires_peq   %{use_python}-service_identity
-BuildRequires:  %{use_python}-signedjson >= 1.1.0
+BuildRequires:  %{use_python}-signedjson >= %{signedjson_version}
 %requires_peq   %{use_python}-signedjson
-BuildRequires:  %{use_python}-six >= 1.10
+BuildRequires:  %{use_python}-six >= %{six_version}
 %requires_peq   %{use_python}-six
-BuildRequires:  %{use_python}-sortedcontainers >= 1.4.4
+BuildRequires:  %{use_python}-sortedcontainers >= %{sortedcontainers_version}
 %requires_peq   %{use_python}-sortedcontainers
-BuildRequires:  %{use_python}-systemd  >= 231
+BuildRequires:  %{use_python}-systemd  >= %{systemd_version}
 %requires_peq   %{use_python}-systemd
-BuildRequires:  %{use_python}-typing_extensions >= 3.10.0.1
+BuildRequires:  %{use_python}-typing_extensions >= %{typing_extensions_version}
 %requires_peq   %{use_python}-typing_extensions
-BuildRequires:  %{use_python}-treq >= 15.1
+BuildRequires:  %{use_python}-treq >= %{treq_version}
 %requires_peq   %{use_python}-treq
-BuildRequires:  %{use_python}-unpaddedbase64 >= 1.1.0
+BuildRequires:  %{use_python}-unpaddedbase64 >= %{unpaddedbase64_version}
 %requires_peq   %{use_python}-unpaddedbase64
 # Specify all CONDITIONAL_REQUIREMENTS (we Require them to avoid no-recommends
 # breaking very commonly-used bits of matrix-synapse such as postgresql).
 %if %{with synapse_ldap}
-BuildRequires:  %{use_python}-matrix-synapse-ldap3 >= 0.1
+BuildRequires:  %{use_python}-matrix-synapse-ldap3 >= %{matrix_synapse_ldap3_version}
 %requires_peq   %{use_python}-matrix-synapse-ldap3
 %endif
-BuildRequires:  %{use_python}-packaging >= 16.1
+BuildRequires:  %{use_python}-packaging >= %{packaging_version}
 %requires_peq   %{use_python}-packaging
-BuildRequires:  %{use_python}-psycopg2 >= 2.8
+BuildRequires:  %{use_python}-psycopg2 >= %{psycopg2_version}
 %requires_peq   %{use_python}-psycopg2
-BuildRequires:  %{use_python}-pysaml2 >= 4.5.0
+BuildRequires:  %{use_python}-pysaml2 >= %{pysaml2_version}
 %requires_peq   %{use_python}-pysaml2
 %if %{with synapse_oidc}
-BuildRequires:  %{use_python}-Authlib >= 0.15.1
+BuildRequires:  %{use_python}-Authlib >= %{Authlib_version}
 %requires_peq   %{use_python}-Authlib
 %endif
-BuildRequires:  %{use_python}-lxml >= 4.2.0
+BuildRequires:  %{use_python}-lxml >= %{lxml_version}
 %requires_peq   %{use_python}-lxml
 %if %{with synapse_sentry}
-BuildRequires:  %{use_python}-sentry-sdk >= 0.7.2
+BuildRequires:  %{use_python}-sentry-sdk >= %{sentry_sdk_version}
 %requires_peq   %{use_python}-sentry-sdk
 %endif
-BuildRequires:  %{use_python}-PyJWT >= 1.6.4
+BuildRequires:  %{use_python}-PyJWT >= %{PyJWT_version}
 %requires_peq   %{use_python}-PyJWT
 %if %{with synapse_opentracing}
-BuildRequires:  %{use_python}-jaeger-client >= 4.0.0
+BuildRequires:  %{use_python}-jaeger-client >= %{jaeger_client_version}
 %requires_peq   %{use_python}-jaeger-client
-BuildRequires:  %{use_python}-opentracing   >= 2.2.0
+BuildRequires:  %{use_python}-opentracing   >= %{opentracing_version}
 %requires_peq   %{use_python}-opentracing
 %endif
 %if %{with synapse_redis}
-BuildRequires:  %{use_python}-hiredis >= 1.0.1
+BuildRequires:  %{use_python}-hiredis >= %{hiredis_version}
 %requires_peq   %{use_python}-hiredis
-BuildRequires:  %{use_python}-txredisapi >= 1.4.7
+BuildRequires:  %{use_python}-txredisapi >= %{txredisapi_version}
 %requires_peq   %{use_python}-txredisapi
 %endif
-BuildRequires:  %{use_python}-Pympler >= 0.8
+BuildRequires:  %{use_python}-Pympler >= %{Pympler_version}
 %requires_peq   %{use_python}-Pympler
 BuildArch:      noarch
 # We only provide/obsolete python2 to ensure that users upgrade.