all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* [bug#39841] [WIP PATCH] synapse
@ 2020-02-29 17:53 Alex ter Weele
  2020-02-29 19:12 ` Alex ter Weele
  2020-03-29 20:03 ` Marius Bakke
  0 siblings, 2 replies; 9+ messages in thread
From: Alex ter Weele @ 2020-02-29 17:53 UTC (permalink / raw)
  To: 39841

[-- Attachment #1: Type: text/plain, Size: 772 bytes --]

Hello,

These are some patches to add Synapse
<https://github.com/matrix-org/synapse>.

I would appreciate some help getting the tests to run for some of the
Python dependencies, they're marked with TODOs.

Synapse appears to have some optional dependencies. I haven't packaged
all of them. The remaining ones are also marked with TODOs.

But, it seems to run! Here's what I had to do to start it:

guix environment guix -- make -j4 && ./pre-inst-env guix environment synapse

cd ~/src/synapse/

python -m synapse.app.homeserver --server-name test.local --config-path /tmp/homeserver.yaml --generate-config --report-stats=no

exit

guix environment guix -- make -j4 && ./pre-inst-env guix environment --ad-hoc synapse -- synctl --no-daemonize start /tmp/homeserver.yaml



[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-gnu-python-typing-extensions-Update-to-3.7.4.1.patch --]
[-- Type: text/x-patch, Size: 1185 bytes --]

From 713a8bf6905ccd49ff53a5a06526816ca0a98535 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Sat, 29 Feb 2020 11:03:02 -0600
Subject: [PATCH 01/12] gnu: python-typing-extensions: Update to 3.7.4.1.

* gnu/packages/python-xyz (python-typing-extensions): Update to 3.7.4.1.
---
 gnu/packages/python-xyz.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 4ea09b756e..abd3ff775a 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -14907,14 +14907,14 @@ and other tools.")
 (define-public python-typing-extensions
   (package
     (name "python-typing-extensions")
-    (version "3.7.2")
+    (version "3.7.4.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "typing_extensions" version))
        (sha256
         (base32
-         "0wfsv71pvkyf2na938l579jh0v3kzl6g744ijgnahcwd4d9x0b7v"))))
+         "1wj1vcgbnm20aiinmphyxfrbv3qi9xdhvw89ab3qm42y9n4wq7h9"))))
     (build-system python-build-system)
     (home-page
      "https://github.com/python/typing/blob/master/typing_extensions/README.rst")
-- 
2.25.1


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: 0002-gnu-Add-python-frozendict.patch --]
[-- Type: text/x-patch, Size: 1378 bytes --]

From 7a9128fe9a1199349557f6a442ed410b099fe049 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Sat, 29 Feb 2020 11:06:27 -0600
Subject: [PATCH 02/12] gnu: Add python-frozendict.

* gnu/packages/python-xyz.scm (python-frozendict): New variable.
---
 gnu/packages/python-xyz.scm | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index abd3ff775a..9007c4f3fa 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -17576,3 +17576,22 @@ sequences.")
 
 (define-public python2-fuzzywuzzy
   (package-with-python2 python-fuzzywuzzy))
+
+(define-public python-frozendict
+  (package
+    (name "python-frozendict")
+    (version "1.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "frozendict" version))
+       (sha256
+        (base32 "0ibf1wipidz57giy53dh7mh68f2hz38x8f4wdq88mvxj5pr7jhbp"))))
+    (build-system python-build-system)
+    (home-page "https://github.com/slezica/python-frozendict")
+    (synopsis "A simple immutable mapping for python")
+    (description
+     "frozendict is an immutable wrapper around dictionaries that implements
+the complete mapping interface. It can be used as a drop-in replacement for
+dictionaries where immutability is desired.")
+    (license license:expat)))
-- 
2.25.1


[-- Attachment #4: 0003-gnu-Add-python-unpaddedbase64.patch --]
[-- Type: text/x-patch, Size: 1706 bytes --]

From 6efc1c329f39fc9290601b368dde4e5283397563 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Sat, 29 Feb 2020 11:07:34 -0600
Subject: [PATCH 03/12] gnu: Add python-unpaddedbase64.

* gnu/packages/python-xyz.scm (python-unpaddedbase64): New variable.
---
 gnu/packages/python-xyz.scm | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 9007c4f3fa..847a4fe7e0 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -17595,3 +17595,26 @@ sequences.")
 the complete mapping interface. It can be used as a drop-in replacement for
 dictionaries where immutability is desired.")
     (license license:expat)))
+
+(define-public python-unpaddedbase64
+  (package
+    (name "python-unpaddedbase64")
+    (version "1.1.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/matrix-org/python-unpaddedbase64.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0if3fjfxga0bwdq47v77fs9hrcqpmwdxry2i2a7pdqsp95258nxd"))))
+    (build-system python-build-system)
+    (home-page "https://pypi.org/project/unpaddedbase64/")
+    (synopsis "Encode and decode Base64 without “=” padding.")
+    (description
+     "RFC 4648 specifies that Base64 should be padded to a multiple of 4 bytes
+using “=” characters. However this conveys no benefit so many protocols choose
+to use Base64 without the “=” padding.")
+    (license license:asl2.0)))
-- 
2.25.1


[-- Attachment #5: 0004-gnu-Add-python-canonicaljson.patch --]
[-- Type: text/x-patch, Size: 2029 bytes --]

From 85cfe8b9df96aa7b500ee88baa274310a8ab0e20 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Sat, 29 Feb 2020 11:08:29 -0600
Subject: [PATCH 04/12] gnu: Add python-canonicaljson.

* gnu/packages/python-xyz.scm (python-canonicaljson): New variable.
---
 gnu/packages/python-xyz.scm | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 847a4fe7e0..5b401a0ad3 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -17618,3 +17618,33 @@ dictionaries where immutability is desired.")
 using “=” characters. However this conveys no benefit so many protocols choose
 to use Base64 without the “=” padding.")
     (license license:asl2.0)))
+
+(define-public python-canonicaljson
+  (package
+    (name "python-canonicaljson")
+    (version "1.1.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "canonicaljson" version))
+       (sha256
+        (base32 "09cpacc8yvcc74i63pdmlfaahh77dnvbyw9zf29wml2zzwqfbg25"))))
+    (build-system python-build-system)
+    (inputs
+     `(("python-six" ,python-six)
+       ("python-frozendict" ,python-frozendict)
+       ("python-simplejson" ,python-simplejson)))
+    (home-page "https://github.com/matrix-org/python-canonicaljson")
+    (synopsis "Canonical JSON")
+    (description
+     "@enumerate
+@item Encodes objects and arrays as RFC 7159 JSON.
+@item Sorts object keys so that you get the same result each time.
+@item Has no insignificant whitespace to make the output as small as possible.
+@item Escapes only the characters that must be escaped, U+0000 to
+ U+0019 / U+0022 / U+0056, to keep the output as small as possible.
+@item Uses the shortest escape sequence for each escaped character.
+@item Encodes the JSON as UTF-8.
+@item Can encode frozendict immutable dictionaries.
+@end enumerate ")
+    (license license:asl2.0)))
-- 
2.25.1


[-- Attachment #6: 0005-gnu-Add-python-signedjson.patch --]
[-- Type: text/x-patch, Size: 2171 bytes --]

From f071df94857709c1bb586463ad28e58cc940bfaf Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Sat, 29 Feb 2020 11:09:58 -0600
Subject: [PATCH 05/12] gnu: Add python-signedjson.

* gnu/packages/python-xyz.scm (python-signedjson): New variable.
---
 gnu/packages/python-xyz.scm | 37 +++++++++++++++++++++++++++++++++++++
 1 file changed, 37 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 5b401a0ad3..7200b3218e 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -17648,3 +17648,40 @@ to use Base64 without the “=” padding.")
 @item Can encode frozendict immutable dictionaries.
 @end enumerate ")
     (license license:asl2.0)))
+
+(define-public python-signedjson
+  (package
+    (name "python-signedjson")
+    (version "1.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "signedjson" version))
+       (sha256
+        (base32 "13wfi50wzz38j6xsz7hmx26vf0zvk0fj7516wavzpsyfk9xy3g5v"))))
+    (build-system python-build-system)
+    (arguments
+     ;; TODO "AttributeError: type object 'Callable' has no attribute
+     ;; '_abc_registry'"
+     `(#:tests? #f))
+    (inputs
+     `(("python-canonicaljson" ,python-canonicaljson)
+       ("python-unpaddedbase64" ,python-unpaddedbase64)
+       ("python-pynacl" ,python-pynacl)
+       ("python-typing-extensions" ,python-typing-extensions)
+       ("python-typing" ,python-typing)))
+    (native-inputs
+     `(("python-simplejson" ,python-simplejson)
+       ("python-frozendict" ,python-frozendict)))
+    (home-page "https://github.com/matrix-org/python-signedjson")
+    (synopsis "Sign JSON objects with ED25519 signatures")
+    (description
+     "@enumerate
+@item More than one entity can sign the same object.
+@item Each entity can sign the object with more than one key making it easier to
+rotate keys
+@item ED25519 can be replaced with a different algorithm.
+@item Unprotected data can be added to the object under the @dfn{\"unsigned\"}
+key.
+@end enumerate")
+    (license license:asl2.0)))
-- 
2.25.1


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #7: 0006-gnu-Add-python-daemonize.patch --]
[-- Type: text/x-patch, Size: 1209 bytes --]

From 420e1f58df9d5f8d39d39fff97cea0f592607afa Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Sat, 29 Feb 2020 11:10:35 -0600
Subject: [PATCH 06/12] gnu: Add python-daemonize.

* gnu/packages/python-xyz.scm (python-daemonize): New variable.
---
 gnu/packages/python-xyz.scm | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 7200b3218e..58cc7c197d 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -17685,3 +17685,19 @@ rotate keys
 key.
 @end enumerate")
     (license license:asl2.0)))
+
+(define-public python-daemonize
+  (package
+    (name "python-daemonize")
+    (version "2.5.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "daemonize" version))
+       (sha256
+        (base32 "1hwbl3gf9fdds9sc14zgjyjisjvxidrvqc11xlbb0b6jz17nw0nx"))))
+    (build-system python-build-system)
+    (home-page "https://github.com/thesharp/daemonize")
+    (synopsis "A library for writing system daemons in Python")
+    (description "daemonize is a library for writing system daemons in Python.")
+    (license license:expat)))
-- 
2.25.1


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #8: 0007-gnu-Add-python-pymacaroons.patch --]
[-- Type: text/x-patch, Size: 1835 bytes --]

From 290caa3269f9cfc121af8350d223089925c9b801 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Sat, 29 Feb 2020 11:11:11 -0600
Subject: [PATCH 07/12] gnu: Add python-pymacaroons.

* gnu/packages/python-xyz.scm (python-pymacaroons): New variable.
---
 gnu/packages/python-xyz.scm | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 58cc7c197d..7d8653a99d 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -17701,3 +17701,30 @@ key.
     (synopsis "A library for writing system daemons in Python")
     (description "daemonize is a library for writing system daemons in Python.")
     (license license:expat)))
+
+(define-public python-pymacaroons
+  (package
+    (name "python-pymacaroons")
+    (version "0.13.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "pymacaroons" version))
+       (sha256
+        (base32 "1f0357a6g1h96sk6wy030xmc1p4rd80a999qvxd28v7nlm1blsqy"))))
+    (build-system python-build-system)
+    (inputs
+     `(("python-six" ,python-six)
+       ("python-pynacl" ,python-pynacl)))
+    (home-page "https://github.com/ecordell/pymacaroons")
+    (synopsis "A Python Macaroon Library")
+    (description
+     "Macaroons, like cookies, are a form of bearer credential. Unlike opaque
+tokens, macaroons embed caveats that define specific authorization
+requirements for the target service, the service that issued the root macaroon
+and which is capable of verifying the integrity of macaroons it receives.
+
+Macaroons allow for delegation and attenuation of authorization. They are
+simple and fast to verify, and decouple authorization policy from the
+enforcement of that policy.")
+    (license license:expat)))
-- 
2.25.1


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #9: 0008-gnu-Add-python-prometheus-client.patch --]
[-- Type: text/x-patch, Size: 1618 bytes --]

From 87db6e10a67ad872ad9de6dcf4c9e6cc5a57ab15 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Sat, 29 Feb 2020 11:11:35 -0600
Subject: [PATCH 08/12] gnu: Add python-prometheus-client.

* gnu/packages/python-xyz.scm (python-prometheus-client): New variable.
---
 gnu/packages/python-xyz.scm | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 7d8653a99d..ee7f4cd239 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -17728,3 +17728,26 @@ Macaroons allow for delegation and attenuation of authorization. They are
 simple and fast to verify, and decouple authorization policy from the
 enforcement of that policy.")
     (license license:expat)))
+
+(define-public python-prometheus-client
+  (package
+    (name "python-prometheus-client")
+    (version "0.7.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "prometheus_client" version))
+       (sha256
+        (base32 "1ni2yv4ixwz32nz39ckia76lvggi7m19y5f702w5qczbnfi29kbi"))))
+    (build-system python-build-system)
+    (arguments
+     ;; TODO "ModuleNotFoundError: No module named 'tests'"
+     `(#:tests? #f))
+    (inputs
+     `(("python-twisted" ,python-twisted)))
+    (native-inputs
+     `(("python-tox" ,python-tox)))
+    (home-page "https://github.com/prometheus/client_python")
+    (synopsis "Prometheus instrumentation library for Python applications")
+    (description "The official Python 2 and 3 client for Prometheus.")
+    (license license:asl2.0)))
-- 
2.25.1


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #10: 0009-gnu-Add-python-ldap3.patch --]
[-- Type: text/x-patch, Size: 1635 bytes --]

From 8bb5a61b0e865a4bb31ccba7777a964e51d51fc7 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Sat, 29 Feb 2020 11:12:08 -0600
Subject: [PATCH 09/12] gnu: Add python-ldap3.

* gnu/packages/python-xyz.scm (python-ldap3): New variable.
---
 gnu/packages/python-xyz.scm | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index ee7f4cd239..8313d620de 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -17751,3 +17751,27 @@ enforcement of that policy.")
     (synopsis "Prometheus instrumentation library for Python applications")
     (description "The official Python 2 and 3 client for Prometheus.")
     (license license:asl2.0)))
+
+(define-public python-ldap3
+  (package
+    (name "python-ldap3")
+    (version "2.6.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "ldap3" version))
+       (sha256
+        (base32 "0ag5xqlki6pjk3f50b8ar8vynx2fmkna7rfampv3kdgwg8z6gjr7"))))
+    (build-system python-build-system)
+    (arguments
+     ;; TODO "ImportError: Failed to import test module: ordDict"
+     `(#:tests? #f))
+    (inputs
+     `(("python-pyasn1" ,python-pyasn1)
+       ("python-gssapi" ,python-gssapi)))
+    (home-page "https://github.com/ecordell/ldap3")
+    (synopsis "A strictly RFC 4510 conforming LDAP V3 pure Python client.")
+    (description
+     "ldap3 is a strictly RFC 4510 conforming LDAP V3 pure Python client
+library. The same codebase runs in Python 2, Python 3, PyPy and PyPy3.")
+    (license license:lgpl3+)))
-- 
2.25.1


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #11: 0010-gnu-Add-python-txacme.patch --]
[-- Type: text/x-patch, Size: 1758 bytes --]

From 6385d8d65cf0022b6f893b8fc3e8216d942a629a Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Sat, 29 Feb 2020 11:13:26 -0600
Subject: [PATCH 10/12] gnu: Add python-txacme.

* gnu/packages/python-xyz.scm (python-txacme): New variable.
---
 gnu/packages/python-xyz.scm | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 8313d620de..8735a6c220 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -17775,3 +17775,31 @@ enforcement of that policy.")
      "ldap3 is a strictly RFC 4510 conforming LDAP V3 pure Python client
 library. The same codebase runs in Python 2, Python 3, PyPy and PyPy3.")
     (license license:lgpl3+)))
+
+(define-public python-txacme
+  (package
+    (name "python-txacme")
+    (version "0.9.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "txacme" version))
+       (sha256
+        (base32 "1cplx4llq7i508w6fgwjdv9di7rsz9k9irfmzdfbiz6q6a0ykf1d"))))
+    (build-system python-build-system)
+    (inputs
+     ;; TODO many unpackaged inputs needed
+     `())
+    (home-page "https://github.com/twisted/txacme")
+    (synopsis
+     "Twisted implementation of the Automatic Certificate Management
+Environment (ACME) protocol")
+    (description
+     "ACME is Automatic Certificate Management Environment, a protocol that
+allows clients and certificate authorities to automate verification and
+certificate issuance. The ACME protocol is used by the free Let's Encrypt
+Certificate Authority.
+
+txacme is an implementation of the protocol for Twisted, the event-driven
+networking engine for Python.")
+    (license license:expat)))
-- 
2.25.1


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #12: 0011-gnu-Add-python-matrix-synapse-ldap3.patch --]
[-- Type: text/x-patch, Size: 2348 bytes --]

From 0b37dabdf6691b314a89c099cbf0e97c7d2c202e Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Sat, 29 Feb 2020 11:19:28 -0600
Subject: [PATCH 11/12] gnu: Add python-matrix-synapse-ldap3.

* gnu/packages/matrix.scm: New file. (python-matrix-synapse-ldap3) New
  variable.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add matrix.scm.
---
 gnu/local.mk            |  1 +
 gnu/packages/matrix.scm | 33 +++++++++++++++++++++++++++++++++
 2 files changed, 34 insertions(+)
 create mode 100644 gnu/packages/matrix.scm

diff --git a/gnu/local.mk b/gnu/local.mk
index 857345cfad..5c87561eaf 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -340,6 +340,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/marst.scm			\
   %D%/packages/mate.scm             \
   %D%/packages/maths.scm			\
+  %D%/packages/matrix.scm			\
   %D%/packages/maven.scm			\
   %D%/packages/mc.scm				\
   %D%/packages/mcrypt.scm			\
diff --git a/gnu/packages/matrix.scm b/gnu/packages/matrix.scm
new file mode 100644
index 0000000000..83c314ffe4
--- /dev/null
+++ b/gnu/packages/matrix.scm
@@ -0,0 +1,33 @@
+(define-module (gnu packages matrix)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (gnu packages python-crypto)
+  #:use-module (gnu packages python-xyz)
+  #:use-module (guix build-system python)
+  #:use-module (guix download)
+  #:use-module (guix packages))
+
+(define-public python-matrix-synapse-ldap3
+  (package
+    (name "python-matrix-synapse-ldap3")
+    (version "0.1.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "matrix-synapse-ldap3" version))
+       (sha256
+        (base32
+         "01bms89sl16nyh9f141idsz4mnhxvjrc3gj721wxh1fhikps0djx"))))
+    (build-system python-build-system)
+    (arguments
+     ;; tests require synapse, creating a circular dependency.
+     '(#:tests? #f))
+    (inputs
+     `(("python-twisted" ,python-twisted)
+       ("python-ldap3" ,python-ldap3)
+       ("python-service-identity" ,python-service-identity)))
+    (home-page "https://github.com/matrix-org/matrix-synapse-ldap3")
+    (synopsis "An LDAP3 auth provider for Synapse")
+    (description
+     "Allows synapse to use LDAP as a password provider. This allows users to
+log in to synapse with their username and password from an LDAP server.")
+    (license license:asl2.0)))
-- 
2.25.1


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #13: 0012-gnu-Add-synapse.patch --]
[-- Type: text/x-patch, Size: 4074 bytes --]

From 60769229bc80fcd800e5a4a325c4dcdf7591ae21 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Sat, 29 Feb 2020 11:22:06 -0600
Subject: [PATCH 12/12] gnu: Add synapse.

* gnu/packages/matrix.scm (synapse): New variable.
---
 gnu/packages/matrix.scm | 70 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 70 insertions(+)

diff --git a/gnu/packages/matrix.scm b/gnu/packages/matrix.scm
index 83c314ffe4..93ec726465 100644
--- a/gnu/packages/matrix.scm
+++ b/gnu/packages/matrix.scm
@@ -1,7 +1,11 @@
 (define-module (gnu packages matrix)
   #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (gnu packages check)
+  #:use-module (gnu packages databases)
   #:use-module (gnu packages python-crypto)
+  #:use-module (gnu packages python-web)
   #:use-module (gnu packages python-xyz)
+  #:use-module (gnu packages xml)
   #:use-module (guix build-system python)
   #:use-module (guix download)
   #:use-module (guix packages))
@@ -31,3 +35,69 @@
      "Allows synapse to use LDAP as a password provider. This allows users to
 log in to synapse with their username and password from an LDAP server.")
     (license license:asl2.0)))
+
+(define-public synapse
+  (package
+    (name "synapse")
+    (version "1.11.0")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "matrix-synapse" version))
+              (sha256
+               (base32
+                "0cqbwcz0fi4w413s1kcxvf696qi4n46n1k4ggnygqri5yq26qlfy"))))
+    (build-system python-build-system)
+    ;; TODO I think there are custom tests
+    (inputs
+     `(("python-simplejson" ,python-simplejson) ; not attested but required
+       ;; requirements (synapse/python_dependencies.py)
+       ("python-jsonschema" ,python-jsonschema)
+       ("python-frozendict" ,python-frozendict)
+       ("python-unpaddedbase64" ,python-unpaddedbase64)
+       ("python-canonicaljson" ,python-canonicaljson)
+       ("python-signedjson" ,python-signedjson)
+       ("python-pynacl" ,python-pynacl)
+       ("python-idna" ,python-idna)
+       ("python-service-identity" ,python-service-identity)
+       ("python-twisted" ,python-twisted)
+       ("python-treq" ,python-treq)
+       ("python-pyopenssl" ,python-pyopenssl)
+       ("python-pyyaml" ,python-pyyaml)
+       ("python-pyasn1" ,python-pyasn1)
+       ("python-pyasn1-modules" ,python-pyasn1-modules)
+       ("python-daemonize" ,python-daemonize)
+       ("python-bcrypt" ,python-bcrypt)
+       ("python-pillow" ,python-pillow)
+       ("python-sortedcontainers" ,python-sortedcontainers)
+       ("python-pymacaroons" ,python-pymacaroons)
+       ("python-msgpack" ,python-msgpack)
+       ("python-phonenumbers" ,python-phonenumbers)
+       ("python-six" ,python-six)
+       ("python-prometheus-client" ,python-prometheus-client)
+       ("python-attrs" ,python-attrs)
+       ("python-netaddr" ,python-netaddr)
+       ("python-jinja2" ,python-jinja2)
+       ("python-bleach" ,python-bleach)
+       ("python-typing-extensions" ,python-typing-extensions)
+       ;; conditional requirements (synapse/python_dependencies.py)
+       ("python-matrix-synapse-ldap3" ,python-matrix-synapse-ldap3)
+       ("python-psycopg2" ,python-psycopg2)
+       ("python-jinja2" ,python-jinja2)
+       ;; TODO txacme, eliot, pysaml2
+       ("python-lxml" ,python-lxml)
+       ;; TODO sentry-sdk, jaeger-client, opentracing
+       ("python-pyjwt" ,python-pyjwt)
+       ))
+    (native-inputs
+     `(("python-mock" ,python-mock)
+       ("python-parameterized" ,python-parameterized)))
+    (home-page "https://github.com/matrix-org/synapse")
+    (synopsis "Matrix reference homeserver")
+    (description "Synapse is a reference \"homeserver\" implementation of
+Matrix from the core development team at matrix.org, written in
+Python/Twisted. It is intended to showcase the concept of Matrix and let folks
+see the spec in the context of a codebase and let you run your own homeserver
+and generally help bootstrap the ecosystem.")
+    (license license:asl2.0)))
+
+
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [bug#39841] [WIP PATCH] synapse
  2020-02-29 17:53 [bug#39841] [WIP PATCH] synapse Alex ter Weele
@ 2020-02-29 19:12 ` Alex ter Weele
  2020-02-29 19:14   ` Alex ter Weele
  2020-03-29 20:03 ` Marius Bakke
  1 sibling, 1 reply; 9+ messages in thread
From: Alex ter Weele @ 2020-02-29 19:12 UTC (permalink / raw)
  To: 39841

[-- Attachment #1: Type: text/plain, Size: 82 bytes --]

This patch series is the same as the last but cleaned up according to
guix lint.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-gnu-Add-emacs-punpun-theme.patch --]
[-- Type: text/x-patch, Size: 1736 bytes --]

From 965546778c1824eb7efe90c02ffc6878a1ed907e Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Thu, 19 Dec 2019 20:43:34 -0500
Subject: [PATCH] gnu: Add emacs-punpun-theme.

* gnu/packages/emacs-xyz.scm (emacs-punpun-theme): New variable.
---
 gnu/packages/emacs-xyz.scm | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 8ff7a23f51..45636f87f9 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -19876,6 +19876,31 @@ is cast on a light backdrop (Modus Operandi) and another where light text is
 displayed against a dark background (Modus Vivendi).")
     (license license:gpl3+)))
 
+(define-public emacs-punpun-theme
+  (let ((commit "2f78125609277b2478abdebd8f9d5ee10a823b65")
+        (revision "0"))
+    (package
+      (name "emacs-punpun-theme")
+      (version (git-version "0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/wasamasa/punpun-theme.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1sgxrj3igzq86h3whfymxf4qzv9kpvcrlhbvjmnp7fwrplys0n7d"))))
+      (build-system emacs-build-system)
+      (home-page "https://github.com/wasamasa/punpun-theme")
+      (synopsis "Bleak Emacs theme")
+      (description
+       "A bleak theme.  Uses shades of gray and the occasional splash of
+color.  Designed for 256-color terminals.  Comes in light and dark!")
+      (license license:gpl3+))))
+
+
 (define-public emacs-elixir-mode
   (package
     (name "emacs-elixir-mode")
-- 
2.24.1


[-- Attachment #3: 0001-gnu-Add-fennel.patch --]
[-- Type: text/x-patch, Size: 3542 bytes --]

From 5156cfff4e0e9c8b7223213ab28c891c97641e6c Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Sat, 7 Sep 2019 16:18:38 -0500
Subject: [PATCH] gnu: Add fennel.

* gnu/packages/fennel.scm: New file.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add fennel.scm.
---
 gnu/local.mk            |  1 +
 gnu/packages/fennel.scm | 63 +++++++++++++++++++++++++++++++++++++++++
 2 files changed, 64 insertions(+)
 create mode 100644 gnu/packages/fennel.scm

diff --git a/gnu/local.mk b/gnu/local.mk
index b7a5ef825b..84bfc8df2c 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -176,6 +176,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/erlang.scm			\
   %D%/packages/fabric-management.scm		\
   %D%/packages/fcitx.scm			\
+  %D%/packages/fennel.scm			\
   %D%/packages/figlet.scm			\
   %D%/packages/file.scm				\
   %D%/packages/file-systems.scm			\
diff --git a/gnu/packages/fennel.scm b/gnu/packages/fennel.scm
new file mode 100644
index 0000000000..0bce77fa66
--- /dev/null
+++ b/gnu/packages/fennel.scm
@@ -0,0 +1,63 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2019 Alex ter Weele <alex.ter.weele@gmail.com>
+
+(define-module (gnu packages fennel)
+  #:use-module (gnu packages lua)
+  #:use-module (guix packages)
+  #:use-module (guix build-system gnu)
+  #:use-module (guix git-download)
+  #:use-module ((guix licenses) #:prefix license:))
+
+(define-public fennel
+  (package
+    (name "fennel")
+    (version "0.3.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/bakpakin/Fennel.git")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1d5kzgb9l2gdya1jqvp4ni03rd8v270fbhy5wxkjbhr9xf2xb14k"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:test-target "test"
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (delete 'build)
+         (replace 'install
+           (lambda _
+             (let* ((out (assoc-ref %outputs "out"))
+                    (data (string-append out "/share/"))
+                    (bin (string-append out "/bin/")))
+               (copy-recursively (assoc-ref %build-inputs "source") data)
+               (install-file "fennel" bin)
+               (wrap-program (string-append bin "fennel")
+                 `("LUA_PATH" ";" prefix (,(string-append data "?.lua")))
+                 `("FENNEL_PATH" ";" prefix (,(string-append data "?.fnl"))))))))))
+    (inputs
+     `(("lua" ,lua)))
+    (home-page "https://fennel-lang.org/")
+    (synopsis "Lua lisp language")
+    (description "Fennel is a programming language that brings together the
+speed, simplicity, and reach of Lua with the flexibility of a lisp syntax and
+macro system.
+
+    * Full Lua compatibility: Easily call any Lua function or library from
+Fennel and vice-versa.
+
+    * Zero overhead: Compiled code should be just as or more efficient than
+hand-written Lua.
+
+    * Compile-time macros: Ship compiled code with no runtime dependency on
+Fennel.
+
+    * Embeddable: Fennel is a one-file library as well as an executable.
+Embed it in other programs to support runtime extensibility and interactive
+development.
+
+Anywhere you can run Lua code, you can run Fennel code.")
+    (license license:x11)))
-- 
2.23.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #4: 0001-gnu-python-typing-extensions-Update-to-3.7.4.1.patch --]
[-- Type: text/x-patch, Size: 1185 bytes --]

From 713a8bf6905ccd49ff53a5a06526816ca0a98535 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Sat, 29 Feb 2020 11:03:02 -0600
Subject: [PATCH 01/12] gnu: python-typing-extensions: Update to 3.7.4.1.

* gnu/packages/python-xyz (python-typing-extensions): Update to 3.7.4.1.
---
 gnu/packages/python-xyz.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 4ea09b756e..abd3ff775a 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -14907,14 +14907,14 @@ and other tools.")
 (define-public python-typing-extensions
   (package
     (name "python-typing-extensions")
-    (version "3.7.2")
+    (version "3.7.4.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "typing_extensions" version))
        (sha256
         (base32
-         "0wfsv71pvkyf2na938l579jh0v3kzl6g744ijgnahcwd4d9x0b7v"))))
+         "1wj1vcgbnm20aiinmphyxfrbv3qi9xdhvw89ab3qm42y9n4wq7h9"))))
     (build-system python-build-system)
     (home-page
      "https://github.com/python/typing/blob/master/typing_extensions/README.rst")
-- 
2.25.1


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #5: 0002-gnu-Add-python-frozendict.patch --]
[-- Type: text/x-patch, Size: 1383 bytes --]

From d53f6249c0b1adf07f850b65c08bfefc9951bae9 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Sat, 29 Feb 2020 11:06:27 -0600
Subject: [PATCH 02/12] gnu: Add python-frozendict.

* gnu/packages/python-xyz.scm (python-frozendict): New variable.
---
 gnu/packages/python-xyz.scm | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index abd3ff775a..6dfa16cc67 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -17576,3 +17576,22 @@ sequences.")
 
 (define-public python2-fuzzywuzzy
   (package-with-python2 python-fuzzywuzzy))
+
+(define-public python-frozendict
+  (package
+    (name "python-frozendict")
+    (version "1.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "frozendict" version))
+       (sha256
+        (base32 "0ibf1wipidz57giy53dh7mh68f2hz38x8f4wdq88mvxj5pr7jhbp"))))
+    (build-system python-build-system)
+    (home-page "https://github.com/slezica/python-frozendict")
+    (synopsis "Simple immutable mapping for Python")
+    (description
+     "@dfn{frozendict} is an immutable wrapper around dictionaries that
+implements the complete mapping interface.  It can be used as a drop-in
+replacement for dictionaries where immutability is desired.")
+    (license license:expat)))
-- 
2.25.1


[-- Attachment #6: 0003-gnu-Add-python-unpaddedbase64.patch --]
[-- Type: text/x-patch, Size: 1718 bytes --]

From e3571a4a5229026c4bd3c12632056239adfca9f2 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Sat, 29 Feb 2020 11:07:34 -0600
Subject: [PATCH 03/12] gnu: Add python-unpaddedbase64.

* gnu/packages/python-xyz.scm (python-unpaddedbase64): New variable.
---
 gnu/packages/python-xyz.scm | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 6dfa16cc67..20cd3d78a9 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -17595,3 +17595,26 @@ sequences.")
 implements the complete mapping interface.  It can be used as a drop-in
 replacement for dictionaries where immutability is desired.")
     (license license:expat)))
+
+(define-public python-unpaddedbase64
+  (package
+    (name "python-unpaddedbase64")
+    (version "1.1.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/matrix-org/python-unpaddedbase64.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0if3fjfxga0bwdq47v77fs9hrcqpmwdxry2i2a7pdqsp95258nxd"))))
+    (build-system python-build-system)
+    (home-page "https://pypi.org/project/unpaddedbase64/")
+    (synopsis "Encode and decode Base64 without “=” padding")
+    (description
+     "RFC 4648 specifies that Base64 should be padded to a multiple of 4 bytes
+using “=” characters.  However this conveys no benefit so many protocols
+choose to use Base64 without the “=” padding.")
+    (license license:asl2.0)))
-- 
2.25.1


[-- Attachment #7: 0004-gnu-Add-python-canonicaljson.patch --]
[-- Type: text/x-patch, Size: 2084 bytes --]

From 3302ceb0ba579a346e66ed29b14d6a0e2e8b7d1e Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Sat, 29 Feb 2020 11:08:29 -0600
Subject: [PATCH 04/12] gnu: Add python-canonicaljson.

* gnu/packages/python-xyz.scm (python-canonicaljson): New variable.
---
 gnu/packages/python-xyz.scm | 32 ++++++++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 20cd3d78a9..1d7b850b1d 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -17618,3 +17618,35 @@ replacement for dictionaries where immutability is desired.")
 using “=” characters.  However this conveys no benefit so many protocols
 choose to use Base64 without the “=” padding.")
     (license license:asl2.0)))
+
+(define-public python-canonicaljson
+  (package
+    (name "python-canonicaljson")
+    (version "1.1.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "canonicaljson" version))
+       (sha256
+        (base32 "09cpacc8yvcc74i63pdmlfaahh77dnvbyw9zf29wml2zzwqfbg25"))))
+    (build-system python-build-system)
+    (inputs
+     `(("python-six" ,python-six)
+       ("python-frozendict" ,python-frozendict)
+       ("python-simplejson" ,python-simplejson)))
+    (home-page "https://github.com/matrix-org/python-canonicaljson")
+    (synopsis "Canonical JSON")
+    (description
+     "Deterministically encode JSON.
+
+@enumerate
+@item Encodes objects and arrays as RFC 7159 JSON.
+@item Sorts object keys so that you get the same result each time.
+@item Has no insignificant whitespace to make the output as small as possible.
+@item Escapes only the characters that must be escaped, U+0000 to
+ U+0019 / U+0022 / U+0056, to keep the output as small as possible.
+@item Uses the shortest escape sequence for each escaped character.
+@item Encodes the JSON as UTF-8.
+@item Can encode frozendict immutable dictionaries.
+@end enumerate ")
+    (license license:asl2.0)))
-- 
2.25.1


[-- Attachment #8: 0005-gnu-Add-python-signedjson.patch --]
[-- Type: text/x-patch, Size: 2226 bytes --]

From 21f226843fda4770fdef04cf9824525376e2b33b Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Sat, 29 Feb 2020 11:09:58 -0600
Subject: [PATCH 05/12] gnu: Add python-signedjson.

* gnu/packages/python-xyz.scm (python-signedjson): New variable.
---
 gnu/packages/python-xyz.scm | 39 +++++++++++++++++++++++++++++++++++++
 1 file changed, 39 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 1d7b850b1d..3b8210e54f 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -17650,3 +17650,42 @@ choose to use Base64 without the “=” padding.")
 @item Can encode frozendict immutable dictionaries.
 @end enumerate ")
     (license license:asl2.0)))
+
+(define-public python-signedjson
+  (package
+    (name "python-signedjson")
+    (version "1.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "signedjson" version))
+       (sha256
+        (base32 "13wfi50wzz38j6xsz7hmx26vf0zvk0fj7516wavzpsyfk9xy3g5v"))))
+    (build-system python-build-system)
+    (arguments
+     ;; TODO "AttributeError: type object 'Callable' has no attribute
+     ;; '_abc_registry'"
+     `(#:tests? #f))
+    (inputs
+     `(("python-canonicaljson" ,python-canonicaljson)
+       ("python-unpaddedbase64" ,python-unpaddedbase64)
+       ("python-pynacl" ,python-pynacl)
+       ("python-typing-extensions" ,python-typing-extensions)
+       ("python-typing" ,python-typing)))
+    (native-inputs
+     `(("python-simplejson" ,python-simplejson)
+       ("python-frozendict" ,python-frozendict)))
+    (home-page "https://github.com/matrix-org/python-signedjson")
+    (synopsis "Sign JSON objects with ED25519 signatures")
+    (description
+     "Sign JSON objects with ED25519 signatures.
+
+@enumerate
+@item More than one entity can sign the same object.
+@item Each entity can sign the object with more than one key making it easier to
+rotate keys
+@item ED25519 can be replaced with a different algorithm.
+@item Unprotected data can be added to the object under the @dfn{\"unsigned\"}
+key.
+@end enumerate")
+    (license license:asl2.0)))
-- 
2.25.1


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #9: 0006-gnu-Add-python-daemonize.patch --]
[-- Type: text/x-patch, Size: 1207 bytes --]

From 2b3849e4e806f78e05f1bb4a7f4df585442b6aa7 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Sat, 29 Feb 2020 11:10:35 -0600
Subject: [PATCH 06/12] gnu: Add python-daemonize.

* gnu/packages/python-xyz.scm (python-daemonize): New variable.
---
 gnu/packages/python-xyz.scm | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 3b8210e54f..8506e47e26 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -17689,3 +17689,19 @@ rotate keys
 key.
 @end enumerate")
     (license license:asl2.0)))
+
+(define-public python-daemonize
+  (package
+    (name "python-daemonize")
+    (version "2.5.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "daemonize" version))
+       (sha256
+        (base32 "1hwbl3gf9fdds9sc14zgjyjisjvxidrvqc11xlbb0b6jz17nw0nx"))))
+    (build-system python-build-system)
+    (home-page "https://github.com/thesharp/daemonize")
+    (synopsis "Library for writing system daemons in Python")
+    (description "Daemonize is a library for writing system daemons in Python.")
+    (license license:expat)))
-- 
2.25.1


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #10: 0007-gnu-Add-python-pymacaroons.patch --]
[-- Type: text/x-patch, Size: 1833 bytes --]

From 3deff6285a2a24059378b9b7a0248f2dbd96176e Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Sat, 29 Feb 2020 11:11:11 -0600
Subject: [PATCH 07/12] gnu: Add python-pymacaroons.

* gnu/packages/python-xyz.scm (python-pymacaroons): New variable.
---
 gnu/packages/python-xyz.scm | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 8506e47e26..dd100dd1c6 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -17705,3 +17705,30 @@ key.
     (synopsis "Library for writing system daemons in Python")
     (description "Daemonize is a library for writing system daemons in Python.")
     (license license:expat)))
+
+(define-public python-pymacaroons
+  (package
+    (name "python-pymacaroons")
+    (version "0.13.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "pymacaroons" version))
+       (sha256
+        (base32 "1f0357a6g1h96sk6wy030xmc1p4rd80a999qvxd28v7nlm1blsqy"))))
+    (build-system python-build-system)
+    (inputs
+     `(("python-six" ,python-six)
+       ("python-pynacl" ,python-pynacl)))
+    (home-page "https://github.com/ecordell/pymacaroons")
+    (synopsis "Python Macaroon Library")
+    (description
+     "Macaroons, like cookies, are a form of bearer credential.  Unlike opaque
+tokens, macaroons embed caveats that define specific authorization
+requirements for the target service, the service that issued the root macaroon
+and which is capable of verifying the integrity of macaroons it receives.
+
+Macaroons allow for delegation and attenuation of authorization.  They are
+simple and fast to verify, and decouple authorization policy from the
+enforcement of that policy.")
+    (license license:expat)))
-- 
2.25.1


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #11: 0008-gnu-Add-python-prometheus-client.patch --]
[-- Type: text/x-patch, Size: 1619 bytes --]

From 34a1fd90d996608ae33fab3f91b28f81e0c83d99 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Sat, 29 Feb 2020 11:11:35 -0600
Subject: [PATCH 08/12] gnu: Add python-prometheus-client.

* gnu/packages/python-xyz.scm (python-prometheus-client): New variable.
---
 gnu/packages/python-xyz.scm | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index dd100dd1c6..d054b3ef60 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -17732,3 +17732,26 @@ Macaroons allow for delegation and attenuation of authorization.  They are
 simple and fast to verify, and decouple authorization policy from the
 enforcement of that policy.")
     (license license:expat)))
+
+(define-public python-prometheus-client
+  (package
+    (name "python-prometheus-client")
+    (version "0.7.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "prometheus_client" version))
+       (sha256
+        (base32 "1ni2yv4ixwz32nz39ckia76lvggi7m19y5f702w5qczbnfi29kbi"))))
+    (build-system python-build-system)
+    (arguments
+     ;; TODO "ModuleNotFoundError: No module named 'tests'"
+     `(#:tests? #f))
+    (inputs
+     `(("python-twisted" ,python-twisted)))
+    (native-inputs
+     `(("python-tox" ,python-tox)))
+    (home-page "https://github.com/prometheus/client_python")
+    (synopsis "Prometheus instrumentation library for Python applications")
+    (description "The official Python 2 and 3 client for Prometheus.")
+    (license license:asl2.0)))
-- 
2.25.1


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #12: 0009-gnu-Add-python-ldap3.patch --]
[-- Type: text/x-patch, Size: 1633 bytes --]

From e9bc8cab5e24476e9074c1d77a11342ec5b17453 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Sat, 29 Feb 2020 11:12:08 -0600
Subject: [PATCH 09/12] gnu: Add python-ldap3.

* gnu/packages/python-xyz.scm (python-ldap3): New variable.
---
 gnu/packages/python-xyz.scm | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index d054b3ef60..3f4e6c0d68 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -17755,3 +17755,27 @@ enforcement of that policy.")
     (synopsis "Prometheus instrumentation library for Python applications")
     (description "The official Python 2 and 3 client for Prometheus.")
     (license license:asl2.0)))
+
+(define-public python-ldap3
+  (package
+    (name "python-ldap3")
+    (version "2.6.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "ldap3" version))
+       (sha256
+        (base32 "0ag5xqlki6pjk3f50b8ar8vynx2fmkna7rfampv3kdgwg8z6gjr7"))))
+    (build-system python-build-system)
+    (arguments
+     ;; TODO "ImportError: Failed to import test module: ordDict"
+     `(#:tests? #f))
+    (inputs
+     `(("python-pyasn1" ,python-pyasn1)
+       ("python-gssapi" ,python-gssapi)))
+    (home-page "https://github.com/cannatag/ldap3")
+    (synopsis "Strictly RFC 4510 conforming LDAP V3 pure Python client")
+    (description
+     "LDAP3 is a strictly RFC 4510 conforming LDAP V3 pure Python client
+library.  The same codebase runs in Python 2, Python 3, PyPy and PyPy3.")
+    (license license:lgpl3+)))
-- 
2.25.1


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #13: 0010-gnu-Add-python-txacme.patch --]
[-- Type: text/x-patch, Size: 1711 bytes --]

From 365c26db7babe3a1aca1d50740001aa071c0bdb9 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Sat, 29 Feb 2020 11:13:26 -0600
Subject: [PATCH 10/12] gnu: Add python-txacme.

* gnu/packages/python-xyz.scm (python-txacme): New variable.
---
 gnu/packages/python-xyz.scm | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 3f4e6c0d68..8d197d73ba 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -17779,3 +17779,30 @@ enforcement of that policy.")
      "LDAP3 is a strictly RFC 4510 conforming LDAP V3 pure Python client
 library.  The same codebase runs in Python 2, Python 3, PyPy and PyPy3.")
     (license license:lgpl3+)))
+
+(define-public python-txacme
+  (package
+    (name "python-txacme")
+    (version "0.9.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "txacme" version))
+       (sha256
+        (base32 "1cplx4llq7i508w6fgwjdv9di7rsz9k9irfmzdfbiz6q6a0ykf1d"))))
+    (build-system python-build-system)
+    (inputs
+     ;; TODO many unpackaged inputs needed
+     `())
+    (home-page "https://github.com/twisted/txacme")
+    (synopsis
+     "Twisted implementation of the ACME protocol")
+    (description
+     "ACME is Automatic Certificate Management Environment, a protocol that
+allows clients and certificate authorities to automate verification and
+certificate issuance.  The ACME protocol is used by the free Let's Encrypt
+Certificate Authority.
+
+txacme is an implementation of the protocol for Twisted, the event-driven
+networking engine for Python.")
+    (license license:expat)))
-- 
2.25.1


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #14: 0011-gnu-Add-python-matrix-synapse-ldap3.patch --]
[-- Type: text/x-patch, Size: 2346 bytes --]

From 8a7ae34ff4712ef8abb055c4807517f27af0eb06 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Sat, 29 Feb 2020 11:19:28 -0600
Subject: [PATCH 11/12] gnu: Add python-matrix-synapse-ldap3.

* gnu/packages/matrix.scm: New file. (python-matrix-synapse-ldap3) New
  variable.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add matrix.scm.
---
 gnu/local.mk            |  1 +
 gnu/packages/matrix.scm | 33 +++++++++++++++++++++++++++++++++
 2 files changed, 34 insertions(+)
 create mode 100644 gnu/packages/matrix.scm

diff --git a/gnu/local.mk b/gnu/local.mk
index 857345cfad..5c87561eaf 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -340,6 +340,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/marst.scm			\
   %D%/packages/mate.scm             \
   %D%/packages/maths.scm			\
+  %D%/packages/matrix.scm			\
   %D%/packages/maven.scm			\
   %D%/packages/mc.scm				\
   %D%/packages/mcrypt.scm			\
diff --git a/gnu/packages/matrix.scm b/gnu/packages/matrix.scm
new file mode 100644
index 0000000000..3d83195c82
--- /dev/null
+++ b/gnu/packages/matrix.scm
@@ -0,0 +1,33 @@
+(define-module (gnu packages matrix)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (gnu packages python-crypto)
+  #:use-module (gnu packages python-xyz)
+  #:use-module (guix build-system python)
+  #:use-module (guix download)
+  #:use-module (guix packages))
+
+(define-public python-matrix-synapse-ldap3
+  (package
+    (name "python-matrix-synapse-ldap3")
+    (version "0.1.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "matrix-synapse-ldap3" version))
+       (sha256
+        (base32
+         "01bms89sl16nyh9f141idsz4mnhxvjrc3gj721wxh1fhikps0djx"))))
+    (build-system python-build-system)
+    (arguments
+     ;; tests require synapse, creating a circular dependency.
+     '(#:tests? #f))
+    (inputs
+     `(("python-twisted" ,python-twisted)
+       ("python-ldap3" ,python-ldap3)
+       ("python-service-identity" ,python-service-identity)))
+    (home-page "https://github.com/matrix-org/matrix-synapse-ldap3")
+    (synopsis "LDAP3 auth provider for Synapse")
+    (description
+     "Allows synapse to use LDAP as a password provider.  This allows users to
+log in to synapse with their username and password from an LDAP server.")
+    (license license:asl2.0)))
-- 
2.25.1


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #15: 0012-gnu-Add-synapse.patch --]
[-- Type: text/x-patch, Size: 4063 bytes --]

From 705608cab6b94d3242686b18331d865257f2a751 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Sat, 29 Feb 2020 11:22:06 -0600
Subject: [PATCH 12/12] gnu: Add synapse.

* gnu/packages/matrix.scm (synapse): New variable.
---
 gnu/packages/matrix.scm | 67 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 67 insertions(+)

diff --git a/gnu/packages/matrix.scm b/gnu/packages/matrix.scm
index 3d83195c82..d74ce6f430 100644
--- a/gnu/packages/matrix.scm
+++ b/gnu/packages/matrix.scm
@@ -1,7 +1,11 @@
 (define-module (gnu packages matrix)
   #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (gnu packages check)
+  #:use-module (gnu packages databases)
   #:use-module (gnu packages python-crypto)
+  #:use-module (gnu packages python-web)
   #:use-module (gnu packages python-xyz)
+  #:use-module (gnu packages xml)
   #:use-module (guix build-system python)
   #:use-module (guix download)
   #:use-module (guix packages))
@@ -31,3 +35,66 @@
      "Allows synapse to use LDAP as a password provider.  This allows users to
 log in to synapse with their username and password from an LDAP server.")
     (license license:asl2.0)))
+
+(define-public synapse
+  (package
+    (name "synapse")
+    (version "1.11.0")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "matrix-synapse" version))
+              (sha256
+               (base32
+                "0cqbwcz0fi4w413s1kcxvf696qi4n46n1k4ggnygqri5yq26qlfy"))))
+    (build-system python-build-system)
+    ;; TODO I think there are custom tests
+    (inputs
+     `(("python-simplejson" ,python-simplejson) ; not attested but required
+       ;; requirements (synapse/python_dependencies.py)
+       ("python-jsonschema" ,python-jsonschema)
+       ("python-frozendict" ,python-frozendict)
+       ("python-unpaddedbase64" ,python-unpaddedbase64)
+       ("python-canonicaljson" ,python-canonicaljson)
+       ("python-signedjson" ,python-signedjson)
+       ("python-pynacl" ,python-pynacl)
+       ("python-idna" ,python-idna)
+       ("python-service-identity" ,python-service-identity)
+       ("python-twisted" ,python-twisted)
+       ("python-treq" ,python-treq)
+       ("python-pyopenssl" ,python-pyopenssl)
+       ("python-pyyaml" ,python-pyyaml)
+       ("python-pyasn1" ,python-pyasn1)
+       ("python-pyasn1-modules" ,python-pyasn1-modules)
+       ("python-daemonize" ,python-daemonize)
+       ("python-bcrypt" ,python-bcrypt)
+       ("python-pillow" ,python-pillow)
+       ("python-sortedcontainers" ,python-sortedcontainers)
+       ("python-pymacaroons" ,python-pymacaroons)
+       ("python-msgpack" ,python-msgpack)
+       ("python-phonenumbers" ,python-phonenumbers)
+       ("python-six" ,python-six)
+       ("python-prometheus-client" ,python-prometheus-client)
+       ("python-attrs" ,python-attrs)
+       ("python-netaddr" ,python-netaddr)
+       ("python-jinja2" ,python-jinja2)
+       ("python-bleach" ,python-bleach)
+       ("python-typing-extensions" ,python-typing-extensions)
+       ;; conditional requirements (synapse/python_dependencies.py)
+       ("python-matrix-synapse-ldap3" ,python-matrix-synapse-ldap3)
+       ("python-psycopg2" ,python-psycopg2)
+       ("python-jinja2" ,python-jinja2)
+       ;; TODO txacme, eliot, pysaml2
+       ("python-lxml" ,python-lxml)
+       ;; TODO sentry-sdk, jaeger-client, opentracing
+       ("python-pyjwt" ,python-pyjwt)))
+    (native-inputs
+     `(("python-mock" ,python-mock)
+       ("python-parameterized" ,python-parameterized)))
+    (home-page "https://github.com/matrix-org/synapse")
+    (synopsis "Matrix reference homeserver")
+    (description "Synapse is a reference \"homeserver\" implementation of
+Matrix from the core development team at matrix.org, written in
+Python/Twisted.  It is intended to showcase the concept of Matrix and let
+folks see the spec in the context of a codebase and let you run your own
+homeserver and generally help bootstrap the ecosystem.")
+    (license license:asl2.0)))
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [bug#39841] [WIP PATCH] synapse
  2020-02-29 19:12 ` Alex ter Weele
@ 2020-02-29 19:14   ` Alex ter Weele
  2020-03-28 22:22     ` Alex ter Weele
  0 siblings, 1 reply; 9+ messages in thread
From: Alex ter Weele @ 2020-02-29 19:14 UTC (permalink / raw)
  To: 39841

0001-gnu-Add-emacs-punpun-theme.patch and 0001-gnu-Add-fennel.patch were
included by mistake, sorry about that.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [bug#39841] [WIP PATCH] synapse
  2020-02-29 19:14   ` Alex ter Weele
@ 2020-03-28 22:22     ` Alex ter Weele
  0 siblings, 0 replies; 9+ messages in thread
From: Alex ter Weele @ 2020-03-28 22:22 UTC (permalink / raw)
  To: Alex ter Weele; +Cc: 39841

[-- Attachment #1: Type: text/plain, Size: 224 bytes --]

This new patch series should apply against master. There are a few more
packages and I have guix linted.

I'd appreciate help from people famaliar with Python testing to get
tests working. They should be marked with TODOs.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-gnu-python-typing-extensions-Update-to-3.7.4.1.patch --]
[-- Type: text/x-patch, Size: 1186 bytes --]

>From 333a46d0f0317a29ed1ff33b673f511537bc0233 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Sat, 29 Feb 2020 11:03:02 -0600
Subject: [PATCH 01/17] gnu: python-typing-extensions: Update to 3.7.4.1.

* gnu/packages/python-xyz (python-typing-extensions): Update to 3.7.4.1.
---
 gnu/packages/python-xyz.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index d63b71c14e..5e10d0a6ea 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -15637,14 +15637,14 @@ and other tools.")
 (define-public python-typing-extensions
   (package
     (name "python-typing-extensions")
-    (version "3.7.2")
+    (version "3.7.4.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "typing_extensions" version))
        (sha256
         (base32
-         "0wfsv71pvkyf2na938l579jh0v3kzl6g744ijgnahcwd4d9x0b7v"))))
+         "1wj1vcgbnm20aiinmphyxfrbv3qi9xdhvw89ab3qm42y9n4wq7h9"))))
     (build-system python-build-system)
     (home-page
      "https://github.com/python/typing/blob/master/typing_extensions/README.rst")
-- 
2.25.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: 0002-gnu-Add-python-frozendict.patch --]
[-- Type: text/x-patch, Size: 1464 bytes --]

>From 32800f04102e53acadf9fdd06b7e263c75c35534 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Sat, 29 Feb 2020 11:06:27 -0600
Subject: [PATCH 02/17] gnu: Add python-frozendict.

* gnu/packages/python-xyz.scm (python-frozendict): New variable.
---
 gnu/packages/python-xyz.scm | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 5e10d0a6ea..cd51e8cbc4 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -18732,3 +18732,22 @@ HTML-containing files.")
 usable as a configuration language.  This Python package implements parsing and
 dumping of JSON5 data structures.")
     (license license:asl2.0)))
+
+(define-public python-frozendict
+  (package
+    (name "python-frozendict")
+    (version "1.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "frozendict" version))
+       (sha256
+        (base32 "0ibf1wipidz57giy53dh7mh68f2hz38x8f4wdq88mvxj5pr7jhbp"))))
+    (build-system python-build-system)
+    (home-page "https://github.com/slezica/python-frozendict")
+    (synopsis "Simple immutable mapping for Python")
+    (description
+     "@dfn{frozendict} is an immutable wrapper around dictionaries that
+implements the complete mapping interface.  It can be used as a drop-in
+replacement for dictionaries where immutability is desired.")
+    (license license:expat)))
-- 
2.25.2


[-- Attachment #4: 0003-gnu-Add-python-unpaddedbase64.patch --]
[-- Type: text/x-patch, Size: 1742 bytes --]

>From 1372123f8ba023cfbe3c34610c0bb8efa70f6467 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Sat, 29 Feb 2020 11:07:34 -0600
Subject: [PATCH 03/17] gnu: Add python-unpaddedbase64.

* gnu/packages/python-xyz.scm (python-unpaddedbase64): New variable.
---
 gnu/packages/python-xyz.scm | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index cd51e8cbc4..38f1c286b2 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -18751,3 +18751,26 @@ dumping of JSON5 data structures.")
 implements the complete mapping interface.  It can be used as a drop-in
 replacement for dictionaries where immutability is desired.")
     (license license:expat)))
+
+(define-public python-unpaddedbase64
+  (package
+    (name "python-unpaddedbase64")
+    (version "1.1.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/matrix-org/python-unpaddedbase64.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0if3fjfxga0bwdq47v77fs9hrcqpmwdxry2i2a7pdqsp95258nxd"))))
+    (build-system python-build-system)
+    (home-page "https://pypi.org/project/unpaddedbase64/")
+    (synopsis "Encode and decode Base64 without “=” padding")
+    (description
+     "RFC 4648 specifies that Base64 should be padded to a multiple of 4 bytes
+using “=” characters.  However this conveys no benefit so many protocols
+choose to use Base64 without the “=” padding.")
+    (license license:asl2.0)))
-- 
2.25.2


[-- Attachment #5: 0004-gnu-Add-python-canonicaljson.patch --]
[-- Type: text/x-patch, Size: 2091 bytes --]

>From 45f8e99a585463c92bc02bcf81683c3184f663f5 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Sat, 29 Feb 2020 11:08:29 -0600
Subject: [PATCH 04/17] gnu: Add python-canonicaljson.

* gnu/packages/python-xyz.scm (python-canonicaljson): New variable.
---
 gnu/packages/python-xyz.scm | 32 ++++++++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 38f1c286b2..77d991c8aa 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -18774,3 +18774,35 @@ replacement for dictionaries where immutability is desired.")
 using “=” characters.  However this conveys no benefit so many protocols
 choose to use Base64 without the “=” padding.")
     (license license:asl2.0)))
+
+(define-public python-canonicaljson
+  (package
+    (name "python-canonicaljson")
+    (version "1.1.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "canonicaljson" version))
+       (sha256
+        (base32 "09cpacc8yvcc74i63pdmlfaahh77dnvbyw9zf29wml2zzwqfbg25"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-six" ,python-six)
+       ("python-frozendict" ,python-frozendict)
+       ("python-simplejson" ,python-simplejson)))
+    (home-page "https://github.com/matrix-org/python-canonicaljson")
+    (synopsis "Canonical JSON")
+    (description
+     "Deterministically encode JSON.
+
+@itemize
+@item Encodes objects and arrays as RFC 7159 JSON.
+@item Sorts object keys so that you get the same result each time.
+@item Has no insignificant whitespace to make the output as small as possible.
+@item Escapes only the characters that must be escaped, U+0000 to
+ U+0019 / U+0022 / U+0056, to keep the output as small as possible.
+@item Uses the shortest escape sequence for each escaped character.
+@item Encodes the JSON as UTF-8.
+@item Can encode frozendict immutable dictionaries.
+@end itemize")
+    (license license:asl2.0)))
-- 
2.25.2


[-- Attachment #6: 0005-gnu-Add-python-signedjson.patch --]
[-- Type: text/x-patch, Size: 2231 bytes --]

>From 4945c826db27840dc0157cc14d5aba583ec45164 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Sat, 29 Feb 2020 11:09:58 -0600
Subject: [PATCH 05/17] gnu: Add python-signedjson.

* gnu/packages/python-xyz.scm (python-signedjson): New variable.
---
 gnu/packages/python-xyz.scm | 39 +++++++++++++++++++++++++++++++++++++
 1 file changed, 39 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 77d991c8aa..eca84e170b 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -18806,3 +18806,42 @@ choose to use Base64 without the “=” padding.")
 @item Can encode frozendict immutable dictionaries.
 @end itemize")
     (license license:asl2.0)))
+
+(define-public python-signedjson
+  (package
+    (name "python-signedjson")
+    (version "1.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "signedjson" version))
+       (sha256
+        (base32 "13wfi50wzz38j6xsz7hmx26vf0zvk0fj7516wavzpsyfk9xy3g5v"))))
+    (build-system python-build-system)
+    (arguments
+     ;; TODO "AttributeError: type object 'Callable' has no attribute
+     ;; '_abc_registry'"
+     `(#:tests? #f))
+    (propagated-inputs
+     `(("python-canonicaljson" ,python-canonicaljson)
+       ("python-unpaddedbase64" ,python-unpaddedbase64)
+       ("python-pynacl" ,python-pynacl)
+       ("python-typing-extensions" ,python-typing-extensions)
+       ("python-typing" ,python-typing)))
+    (native-inputs
+     `(("python-simplejson" ,python-simplejson)
+       ("python-frozendict" ,python-frozendict)))
+    (home-page "https://github.com/matrix-org/python-signedjson")
+    (synopsis "Sign JSON objects with ED25519 signatures")
+    (description
+     "Sign JSON objects with ED25519 signatures.
+
+@itemize
+@item More than one entity can sign the same object.
+@item Each entity can sign the object with more than one key making it easier to
+rotate keys
+@item ED25519 can be replaced with a different algorithm.
+@item Unprotected data can be added to the object under the @dfn{\"unsigned\"}
+key.
+@end itemize")
+    (license license:asl2.0)))
-- 
2.25.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #7: 0006-gnu-Add-python-daemonize.patch --]
[-- Type: text/x-patch, Size: 1206 bytes --]

>From c7e1b8d06f308787239ea9857738caec05c5b369 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Sat, 29 Feb 2020 11:10:35 -0600
Subject: [PATCH 06/17] gnu: Add python-daemonize.

* gnu/packages/python-xyz.scm (python-daemonize): New variable.
---
 gnu/packages/python-xyz.scm | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index eca84e170b..1e1b062fd9 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -18845,3 +18845,19 @@ rotate keys
 key.
 @end itemize")
     (license license:asl2.0)))
+
+(define-public python-daemonize
+  (package
+    (name "python-daemonize")
+    (version "2.5.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "daemonize" version))
+       (sha256
+        (base32 "1hwbl3gf9fdds9sc14zgjyjisjvxidrvqc11xlbb0b6jz17nw0nx"))))
+    (build-system python-build-system)
+    (home-page "https://github.com/thesharp/daemonize")
+    (synopsis "Library for writing system daemons in Python")
+    (description "Daemonize is a library for writing system daemons in Python.")
+    (license license:expat)))
-- 
2.25.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #8: 0007-gnu-Add-python-pymacaroons.patch --]
[-- Type: text/x-patch, Size: 1845 bytes --]

>From 6065dcd69856aee9de073b6ad4b6d545b7f3e16c Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Sat, 29 Feb 2020 11:11:11 -0600
Subject: [PATCH 07/17] gnu: Add python-pymacaroons.

* gnu/packages/python-xyz.scm (python-pymacaroons): New variable.
---
 gnu/packages/python-xyz.scm | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 1e1b062fd9..7b75d24c92 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -18861,3 +18861,30 @@ key.
     (synopsis "Library for writing system daemons in Python")
     (description "Daemonize is a library for writing system daemons in Python.")
     (license license:expat)))
+
+(define-public python-pymacaroons
+  (package
+    (name "python-pymacaroons")
+    (version "0.13.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "pymacaroons" version))
+       (sha256
+        (base32 "1f0357a6g1h96sk6wy030xmc1p4rd80a999qvxd28v7nlm1blsqy"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-six" ,python-six)
+       ("python-pynacl" ,python-pynacl)))
+    (home-page "https://github.com/ecordell/pymacaroons")
+    (synopsis "Python Macaroon Library")
+    (description
+     "Macaroons, like cookies, are a form of bearer credential.  Unlike opaque
+tokens, macaroons embed caveats that define specific authorization
+requirements for the target service, the service that issued the root macaroon
+and which is capable of verifying the integrity of macaroons it receives.
+
+Macaroons allow for delegation and attenuation of authorization.  They are
+simple and fast to verify, and decouple authorization policy from the
+enforcement of that policy.")
+    (license license:expat)))
-- 
2.25.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #9: 0008-gnu-Add-python-prometheus-client.patch --]
[-- Type: text/x-patch, Size: 1631 bytes --]

>From 2722ce29a52b99d42205be476fa133cac75385ce Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Sat, 29 Feb 2020 11:11:35 -0600
Subject: [PATCH 08/17] gnu: Add python-prometheus-client.

* gnu/packages/python-xyz.scm (python-prometheus-client): New variable.
---
 gnu/packages/python-xyz.scm | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 7b75d24c92..76ff670022 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -18888,3 +18888,26 @@ Macaroons allow for delegation and attenuation of authorization.  They are
 simple and fast to verify, and decouple authorization policy from the
 enforcement of that policy.")
     (license license:expat)))
+
+(define-public python-prometheus-client
+  (package
+    (name "python-prometheus-client")
+    (version "0.7.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "prometheus_client" version))
+       (sha256
+        (base32 "1ni2yv4ixwz32nz39ckia76lvggi7m19y5f702w5qczbnfi29kbi"))))
+    (build-system python-build-system)
+    (arguments
+     ;; TODO "ModuleNotFoundError: No module named 'tests'"
+     `(#:tests? #f))
+    (propagated-inputs
+     `(("python-twisted" ,python-twisted)))
+    (native-inputs
+     `(("python-tox" ,python-tox)))
+    (home-page "https://github.com/prometheus/client_python")
+    (synopsis "Prometheus instrumentation library for Python applications")
+    (description "The official Python 2 and 3 client for Prometheus.")
+    (license license:asl2.0)))
-- 
2.25.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #10: 0009-gnu-Add-python-ldap3.patch --]
[-- Type: text/x-patch, Size: 1645 bytes --]

>From 475ebc3de9557456da67a824d3f68aa579a4d0ad Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Sat, 29 Feb 2020 11:12:08 -0600
Subject: [PATCH 09/17] gnu: Add python-ldap3.

* gnu/packages/python-xyz.scm (python-ldap3): New variable.
---
 gnu/packages/python-xyz.scm | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 76ff670022..896123e998 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -18911,3 +18911,27 @@ enforcement of that policy.")
     (synopsis "Prometheus instrumentation library for Python applications")
     (description "The official Python 2 and 3 client for Prometheus.")
     (license license:asl2.0)))
+
+(define-public python-ldap3
+  (package
+    (name "python-ldap3")
+    (version "2.6.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "ldap3" version))
+       (sha256
+        (base32 "0ag5xqlki6pjk3f50b8ar8vynx2fmkna7rfampv3kdgwg8z6gjr7"))))
+    (build-system python-build-system)
+    (arguments
+     ;; TODO "ImportError: Failed to import test module: ordDict"
+     `(#:tests? #f))
+    (propagated-inputs
+     `(("python-pyasn1" ,python-pyasn1)
+       ("python-gssapi" ,python-gssapi)))
+    (home-page "https://github.com/cannatag/ldap3")
+    (synopsis "Strictly RFC 4510 conforming LDAP V3 pure Python client")
+    (description
+     "LDAP3 is a strictly RFC 4510 conforming LDAP V3 pure Python client
+library.  The same codebase runs in Python 2, Python 3, PyPy and PyPy3.")
+    (license license:lgpl3+)))
-- 
2.25.2


[-- Attachment #11: 0010-gnu-Add-python-boltons.patch --]
[-- Type: text/x-patch, Size: 2020 bytes --]

>From 45f5731eb7b2e14e06c99427b5831eef1394a8dc Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Tue, 24 Mar 2020 19:32:46 -0500
Subject: [PATCH 10/17] gnu: Add python-boltons.

* gnu/packages/python-xyz.scm: (python-boltons) New variable.
---
 gnu/packages/python-xyz.scm | 33 +++++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 896123e998..8642f062ee 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -18935,3 +18935,36 @@ enforcement of that policy.")
      "LDAP3 is a strictly RFC 4510 conforming LDAP V3 pure Python client
 library.  The same codebase runs in Python 2, Python 3, PyPy and PyPy3.")
     (license license:lgpl3+)))
+
+(define-public python-boltons
+  (package
+    (name "python-boltons")
+    (version "20.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "boltons" version))
+       (sha256
+        (base32
+         "0lrr40qqj3ch8xarvyzbnbjs79pz5aywklllq53l347h1b8xnkg4"))))
+    (build-system python-build-system)
+    (home-page "https://github.com/mahmoud/boltons")
+    (synopsis
+     "When they're not builtins, they're boltons.")
+    (description
+     "Boltons is a set of over 230 BSD-licensed, pure-Python utilities in the
+same spirit as — and yet conspicuously missing from — the standard library,
+including:
+
+@itemize
+@item Atomic file saving, bolted on with fileutils
+@item A highly-optimized OrderedMultiDict, in dictutils
+@item Two types of PriorityQueue, in queueutils
+@item Chunked and windowed iteration, in iterutils
+@item Recursive data structure iteration and merging, with iterutils.remap
+@item Exponential backoff functionality, including jitter, through
+iterutils.backoff
+@item A full-featured TracebackInfo type, for representing stack traces, in
+tbutils
+@end itemize")
+    (license license:bsd-3)))
-- 
2.25.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #12: 0011-gnu-Add-python-eliot.patch --]
[-- Type: text/x-patch, Size: 2804 bytes --]

>From e9b95095fd03956aeb4f7814d7a268f67ed38707 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Tue, 24 Mar 2020 19:33:36 -0500
Subject: [PATCH 11/17] gnu: Add python-eliot.

* gnu/packages/python-xyz.scm: (python-eliot) New variable.
---
 gnu/packages/python-xyz.scm | 53 +++++++++++++++++++++++++++++++++++++
 1 file changed, 53 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 8642f062ee..e0d102b681 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -18968,3 +18968,56 @@ iterutils.backoff
 tbutils
 @end itemize")
     (license license:bsd-3)))
+
+(define-public python-eliot
+  (package
+    (name "python-eliot")
+    (version "1.12.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "eliot" version))
+       (sha256
+        (base32 "0wabv7hk63l12881f4zw02mmj06583qsx2im0yywdjlj8f56vqdn"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'remove-journald-support
+           (lambda _
+             (invoke "rm"
+                     "eliot/tests/test_journald.py"
+                     "eliot/journald.py")
+             #t))
+         (add-after 'remove-journald-support 'remove-eliot-prettyprint-tests
+           ;; remove command-line tool's tests. TODO eliot-prettyprint should
+           ;; be installed and these tests should pass.
+           (lambda _
+             (invoke "rm" "eliot/tests/test_prettyprint.py")
+             #t)))))
+    (propagated-inputs
+     `(("python-boltons" ,python-boltons)
+       ("python-pyrsistent" ,python-pyrsistent)
+       ("python-six" ,python-six)
+       ("python-zope-interface" ,python-zope-interface)))
+    (native-inputs
+     `(("python-black" ,python-black)
+       ("python-coverage" ,python-coverage)
+       ("python-dask" ,python-dask)
+       ("python-flake8" ,python-flake8)
+       ("python-hypothesis" ,python-hypothesis)
+       ("python-pytest" ,python-pytest)
+       ("python-setuptools" ,python-setuptools)
+       ("python-sphinx" ,python-sphinx)
+       ("python-sphinx-rtd-theme" ,python-sphinx-rtd-theme)
+       ("python-testtools" ,python-testtools)
+       ("python-twine" ,python-twine)
+       ("python-twisted" ,python-twisted)))
+    (home-page "https://github.com/itamarst/eliot/")
+    (synopsis "Eliot: the logging system that tells you why it happened")
+    (description
+     "@dfn{eliot} is a Python logging system that outputs causal chains of
+actions: actions can spawn other actions, and eventually they either succeed
+or fail. The resulting logs tell you the story of what your software did: what
+happened, and what caused it.")
+    (license license:asl2.0)))
-- 
2.25.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #13: 0012-gnu-Add-python-pem.patch --]
[-- Type: text/x-patch, Size: 1627 bytes --]

>From 9f89671dcb4932aedc0ea38a28b7b95c3458e9ee Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Tue, 24 Mar 2020 19:49:10 -0500
Subject: [PATCH 12/17] gnu: Add python-pem.

* gnu/packages/python-xyz.scm: (python-pem) New variable.
---
 gnu/packages/python-xyz.scm | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index e0d102b681..d3dfa8951d 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -19021,3 +19021,28 @@ actions: actions can spawn other actions, and eventually they either succeed
 or fail. The resulting logs tell you the story of what your software did: what
 happened, and what caused it.")
     (license license:asl2.0)))
+
+(define-public python-pem
+  (package
+    (name "python-pem")
+    (version "20.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "pem" version))
+       (sha256
+        (base32
+         "1xh88ss279fprxnzd10dczmqwjhppbyvljm33zrg2mgybwd66qr7"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-certifi" ,python-certifi)
+       ("python-coverage" ,python-coverage)
+       ("python-pretend" ,python-pretend)
+       ("python-pyopenssl" ,python-pyopenssl)
+       ("python-pytest" ,python-pytest)
+       ("python-sphinx" ,python-sphinx)
+       ("python-twisted" ,python-twisted)))
+    (home-page "https://pem.readthedocs.io/")
+    (synopsis "Easy PEM file parsing in Python.")
+    (description "Easy PEM file parsing in Python.")
+    (license license:expat)))
-- 
2.25.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #14: 0013-gnu-Add-python-txsni.patch --]
[-- Type: text/x-patch, Size: 1526 bytes --]

>From 850fd6dc4c9a5149718916441fe775913ca9d17c Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Tue, 24 Mar 2020 19:49:55 -0500
Subject: [PATCH 13/17] gnu: Add python-txsni.

* gnu/packages/python-xyz.scm: (python-txsni) New variable.
---
 gnu/packages/python-xyz.scm | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index d3dfa8951d..3a8756fdac 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -19046,3 +19046,28 @@ happened, and what caused it.")
     (synopsis "Easy PEM file parsing in Python.")
     (description "Easy PEM file parsing in Python.")
     (license license:expat)))
+
+(define-public python-txsni
+  (package
+    (name "python-txsni")
+    (version "0.1.9")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "TxSNI" version))
+       (sha256
+        (base32
+         "1c72nbhx4z0v5djb89yzrcqlmjdlyryj7qgwl9ivnn816126z5kj"))))
+    (build-system python-build-system)
+    (arguments
+     ;; TODO confusing test failure
+     `(#:tests? #f))
+    (propagated-inputs
+     `(("python-pyopenssl" ,python-pyopenssl)
+       ("python-service-identity" ,python-service-identity)
+       ("python-twisted" ,python-twisted)))
+    (home-page "https://github.com/glyph/txsni")
+    (synopsis "easy-to-use SNI endpoint for twisted")
+    (description
+     "easy-to-use SNI endpoint for twisted")
+    (license license:expat)))
-- 
2.25.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #15: 0014-gnu-Add-python-txacme.patch --]
[-- Type: text/x-patch, Size: 2281 bytes --]

>From ca6ec637b59fca634b1f826b93557a2316096c09 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Sat, 29 Feb 2020 11:13:26 -0600
Subject: [PATCH 14/17] gnu: Add python-txacme.

* gnu/packages/python-xyz.scm (python-txacme): New variable.
---
 gnu/packages/python-xyz.scm | 42 +++++++++++++++++++++++++++++++++++++
 1 file changed, 42 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 3a8756fdac..c0f55c06b8 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -19071,3 +19071,45 @@ happened, and what caused it.")
     (description
      "easy-to-use SNI endpoint for twisted")
     (license license:expat)))
+
+(define-public python-txacme
+  (package
+    (name "python-txacme")
+    (version "0.9.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "txacme" version))
+       (sha256
+        (base32 "1cplx4llq7i508w6fgwjdv9di7rsz9k9irfmzdfbiz6q6a0ykf1d"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-acme" ,python-acme)
+       ("python-attrs" ,python-attrs)
+       ("python-eliot" ,python-eliot)
+       ("python-josepy" ,python-josepy)
+       ("python-pem" ,python-pem)
+       ("python-treq" ,python-treq)
+       ("python-twisted" ,python-twisted)
+       ("python-txsni" ,python-txsni)))
+    (native-inputs
+    `(("python-fixtures" ,python-fixtures)
+      ("python-hypothesis" ,python-hypothesis)
+      ("python-mock" ,python-mock)
+      ("python-service-identity"
+       ,python-service-identity)
+      ("python-testrepository" ,python-testrepository)
+      ("python-testscenarios" ,python-testscenarios)
+      ("python-testtools" ,python-testtools)))
+    (home-page "https://github.com/twisted/txacme")
+    (synopsis
+     "Twisted implexmentation of the ACME protocol")
+    (description
+     "ACME is Automatic Certificate Management Environment, a protocol that
+allows clients and certificate authorities to automate verification and
+certificate issuance.  The ACME protocol is used by the free Let's Encrypt
+Certificate Authority.
+
+txacme is an implementation of the protocol for Twisted, the event-driven
+networking engine for Python.")
+    (license license:expat)))
-- 
2.25.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #16: 0015-gnu-Add-python-pysaml2.patch --]
[-- Type: text/x-patch, Size: 1637 bytes --]

>From a0a9b1418301e22a3c5c260c4bd62c4be952b5e2 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Tue, 24 Mar 2020 19:38:36 -0500
Subject: [PATCH 15/17] gnu: Add python-pysaml2.

* gnu/packages/python-xyz.scm: (python-pysaml2) New variable.
---
 gnu/packages/python-xyz.scm | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index c0f55c06b8..e6d4aa0eae 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -19113,3 +19113,31 @@ Certificate Authority.
 txacme is an implementation of the protocol for Twisted, the event-driven
 networking engine for Python.")
     (license license:expat)))
+
+(define-public python-pysaml2
+  (package
+    (name "python-pysaml2")
+    (version "5.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "pysaml2" version))
+       (sha256
+        (base32
+         "1h8cmxh9cvxhrdfmkh92wg6zpxmhi2fixq1cy4hxismmaar7bsny"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-cryptography" ,python-cryptography)
+       ("python-dateutil" ,python-dateutil)
+       ("python-defusedxml" ,python-defusedxml)
+       ("python-pyopenssl" ,python-pyopenssl)
+       ("python-pytz" ,python-pytz)
+       ("python-requests" ,python-requests)
+       ("python-six" ,python-six)))
+    (home-page "https://idpy.org")
+    (synopsis
+     "Python implementation of SAML Version 2 Standard")
+    (description
+     "Python implementation of SAML Version 2 Standard")
+    (license license:asl2.0)))
+
-- 
2.25.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #17: 0016-gnu-Add-python-matrix-synapse-ldap3.patch --]
[-- Type: text/x-patch, Size: 2358 bytes --]

>From b9644bb5c73c0162c13ef736e33305e11de38644 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Sat, 29 Feb 2020 11:19:28 -0600
Subject: [PATCH 16/17] gnu: Add python-matrix-synapse-ldap3.

* gnu/packages/matrix.scm: New file. (python-matrix-synapse-ldap3) New
  variable.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add matrix.scm.
---
 gnu/local.mk            |  1 +
 gnu/packages/matrix.scm | 33 +++++++++++++++++++++++++++++++++
 2 files changed, 34 insertions(+)
 create mode 100644 gnu/packages/matrix.scm

diff --git a/gnu/local.mk b/gnu/local.mk
index b8649b39b1..c8f0ae5543 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -343,6 +343,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/marst.scm			\
   %D%/packages/mate.scm             \
   %D%/packages/maths.scm			\
+  %D%/packages/matrix.scm			\
   %D%/packages/maven.scm			\
   %D%/packages/mc.scm				\
   %D%/packages/mcrypt.scm			\
diff --git a/gnu/packages/matrix.scm b/gnu/packages/matrix.scm
new file mode 100644
index 0000000000..f399d2aabc
--- /dev/null
+++ b/gnu/packages/matrix.scm
@@ -0,0 +1,33 @@
+(define-module (gnu packages matrix)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (gnu packages python-crypto)
+  #:use-module (gnu packages python-xyz)
+  #:use-module (guix build-system python)
+  #:use-module (guix download)
+  #:use-module (guix packages))
+
+(define-public python-matrix-synapse-ldap3
+  (package
+    (name "python-matrix-synapse-ldap3")
+    (version "0.1.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "matrix-synapse-ldap3" version))
+       (sha256
+        (base32
+         "01bms89sl16nyh9f141idsz4mnhxvjrc3gj721wxh1fhikps0djx"))))
+    (build-system python-build-system)
+    (arguments
+     ;; tests require synapse, creating a circular dependency.
+     '(#:tests? #f))
+    (porpagated-inputs
+     `(("python-twisted" ,python-twisted)
+       ("python-ldap3" ,python-ldap3)
+       ("python-service-identity" ,python-service-identity)))
+    (home-page "https://github.com/matrix-org/matrix-synapse-ldap3")
+    (synopsis "LDAP3 auth provider for Synapse")
+    (description
+     "Allows synapse to use LDAP as a password provider.  This allows users to
+log in to synapse with their username and password from an LDAP server.")
+    (license license:asl2.0)))
-- 
2.25.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #18: 0017-gnu-Add-synapse.patch --]
[-- Type: text/x-patch, Size: 4196 bytes --]

>From b82005d735c4c14cf8686004ea683512a098b0b0 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Sat, 29 Feb 2020 11:22:06 -0600
Subject: [PATCH 17/17] gnu: Add synapse.

* gnu/packages/matrix.scm (synapse): New variable.
---
 gnu/packages/matrix.scm | 69 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 69 insertions(+)

diff --git a/gnu/packages/matrix.scm b/gnu/packages/matrix.scm
index f399d2aabc..0b56c66bbb 100644
--- a/gnu/packages/matrix.scm
+++ b/gnu/packages/matrix.scm
@@ -1,7 +1,11 @@
 (define-module (gnu packages matrix)
   #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (gnu packages check)
+  #:use-module (gnu packages databases)
   #:use-module (gnu packages python-crypto)
+  #:use-module (gnu packages python-web)
   #:use-module (gnu packages python-xyz)
+  #:use-module (gnu packages xml)
   #:use-module (guix build-system python)
   #:use-module (guix download)
   #:use-module (guix packages))
@@ -31,3 +35,68 @@
      "Allows synapse to use LDAP as a password provider.  This allows users to
 log in to synapse with their username and password from an LDAP server.")
     (license license:asl2.0)))
+
+(define-public synapse
+  (package
+    (name "synapse")
+    (version "1.11.0")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "matrix-synapse" version))
+              (sha256
+               (base32
+                "0cqbwcz0fi4w413s1kcxvf696qi4n46n1k4ggnygqri5yq26qlfy"))))
+    (build-system python-build-system)
+    ;; TODO I think there are custom tests
+    (propagated-inputs
+     `(("python-simplejson" ,python-simplejson) ; not attested but required
+       ;; requirements (synapse/python_dependencies.py)
+       ("python-jsonschema" ,python-jsonschema)
+       ("python-frozendict" ,python-frozendict)
+       ("python-unpaddedbase64" ,python-unpaddedbase64)
+       ("python-canonicaljson" ,python-canonicaljson)
+       ("python-signedjson" ,python-signedjson)
+       ("python-pynacl" ,python-pynacl)
+       ("python-idna" ,python-idna)
+       ("python-service-identity" ,python-service-identity)
+       ("python-twisted" ,python-twisted)
+       ("python-treq" ,python-treq)
+       ("python-pyopenssl" ,python-pyopenssl)
+       ("python-pyyaml" ,python-pyyaml)
+       ("python-pyasn1" ,python-pyasn1)
+       ("python-pyasn1-modules" ,python-pyasn1-modules)
+       ("python-daemonize" ,python-daemonize)
+       ("python-bcrypt" ,python-bcrypt)
+       ("python-pillow" ,python-pillow)
+       ("python-sortedcontainers" ,python-sortedcontainers)
+       ("python-pymacaroons" ,python-pymacaroons)
+       ("python-msgpack" ,python-msgpack)
+       ("python-phonenumbers" ,python-phonenumbers)
+       ("python-six" ,python-six)
+       ("python-prometheus-client" ,python-prometheus-client)
+       ("python-attrs" ,python-attrs)
+       ("python-netaddr" ,python-netaddr)
+       ("python-jinja2" ,python-jinja2)
+       ("python-bleach" ,python-bleach)
+       ("python-typing-extensions" ,python-typing-extensions)
+       ;; conditional requirements (synapse/python_dependencies.py)
+       ("python-matrix-synapse-ldap3" ,python-matrix-synapse-ldap3)
+       ("python-psycopg2" ,python-psycopg2)
+       ("python-jinja2" ,python-jinja2)
+       ("python-txacme" ,python-txacme)
+       ("python-pysaml2" ,python-pysaml2)
+       ("python-lxml" ,python-lxml)
+       ;; sentry-sdk, jaeger-client, and opentracing could be included, but
+       ;; all are monitoring aids and not essential.
+       ("python-pyjwt" ,python-pyjwt)))
+    (native-inputs
+     `(("python-mock" ,python-mock)
+       ("python-parameterized" ,python-parameterized)))
+    (home-page "https://github.com/matrix-org/synapse")
+    (synopsis "Matrix reference homeserver")
+    (description "Synapse is a reference \"homeserver\" implementation of
+Matrix from the core development team at matrix.org, written in
+Python/Twisted.  It is intended to showcase the concept of Matrix and let
+folks see the spec in the context of a codebase and let you run your own
+homeserver and generally help bootstrap the ecosystem.")
+    (license license:asl2.0)))
-- 
2.25.2


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [bug#39841] [WIP PATCH] synapse
  2020-02-29 17:53 [bug#39841] [WIP PATCH] synapse Alex ter Weele
  2020-02-29 19:12 ` Alex ter Weele
@ 2020-03-29 20:03 ` Marius Bakke
  2020-03-30  0:28   ` Alex ter Weele
  1 sibling, 1 reply; 9+ messages in thread
From: Marius Bakke @ 2020-03-29 20:03 UTC (permalink / raw)
  To: Alex ter Weele, 39841

[-- Attachment #1: Type: text/plain, Size: 620 bytes --]

Alex ter Weele <alex.ter.weele@gmail.com> writes:

> Hello,
>
> These are some patches to add Synapse
> <https://github.com/matrix-org/synapse>.

Cool!  Now Guix users can run their own Matrix home servers!

Can you rebase this series on the current master branch?  Let's try to
merge the patches that are not marked with TODO, to make reviewing the
remainder easier.

I've applied the first patch already!  :-)

Short feedback on the series: inputs should probably be
propagated-inputs in all of these.  Please also run 'guix lint' on each
package to catch cosmetic issues.

Thanks in advance, and sorry for the delay!

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [bug#39841] [WIP PATCH] synapse
  2020-03-29 20:03 ` Marius Bakke
@ 2020-03-30  0:28   ` Alex ter Weele
  2020-03-30  0:35     ` Alex ter Weele
  2020-03-30  0:42     ` [bug#39841] " Alex ter Weele
  0 siblings, 2 replies; 9+ messages in thread
From: Alex ter Weele @ 2020-03-30  0:28 UTC (permalink / raw)
  To: Marius Bakke; +Cc: 39841

Marius Bakke <mbakke@fastmail.com> writes:

> Alex ter Weele <alex.ter.weele@gmail.com> writes:
>
>> Hello,
>>
>> These are some patches to add Synapse
>> <https://github.com/matrix-org/synapse>.
>
> Cool!  Now Guix users can run their own Matrix home servers!
>
> Can you rebase this series on the current master branch?  Let's try to
> merge the patches that are not marked with TODO, to make reviewing the
> remainder easier.
>
> I've applied the first patch already!  :-)
>
> Short feedback on the series: inputs should probably be
> propagated-inputs in all of these.  Please also run 'guix lint' on each
> package to catch cosmetic issues.
>
> Thanks in advance, and sorry for the delay!

Here is  a new patch series atop current master. It should be
guix-linted and use propagated-inputs.

I also want to mention: I indiscriminately put everything in
python-xyz.scm, some of these packages may be a better fit for other
python-*.scm files.

Thanks for the review!

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [bug#39841] [WIP PATCH] synapse
  2020-03-30  0:28   ` Alex ter Weele
@ 2020-03-30  0:35     ` Alex ter Weele
  2020-04-02 18:49       ` bug#39841: " Marius Bakke
  2020-03-30  0:42     ` [bug#39841] " Alex ter Weele
  1 sibling, 1 reply; 9+ messages in thread
From: Alex ter Weele @ 2020-03-30  0:35 UTC (permalink / raw)
  To: Marius Bakke; +Cc: 39841

[-- Attachment #1: Type: text/plain, Size: 1139 bytes --]

Alex ter Weele <alex.ter.weele@gmail.com> writes:

> Marius Bakke <mbakke@fastmail.com> writes:
>
>> Alex ter Weele <alex.ter.weele@gmail.com> writes:
>>
>>> Hello,
>>>
>>> These are some patches to add Synapse
>>> <https://github.com/matrix-org/synapse>.
>>
>> Cool!  Now Guix users can run their own Matrix home servers!
>>
>> Can you rebase this series on the current master branch?  Let's try to
>> merge the patches that are not marked with TODO, to make reviewing the
>> remainder easier.
>>
>> I've applied the first patch already!  :-)
>>
>> Short feedback on the series: inputs should probably be
>> propagated-inputs in all of these.  Please also run 'guix lint' on each
>> package to catch cosmetic issues.
>>
>> Thanks in advance, and sorry for the delay!
>
> Here is  a new patch series atop current master. It should be
> guix-linted and use propagated-inputs.
>
> I also want to mention: I indiscriminately put everything in
> python-xyz.scm, some of these packages may be a better fit for other
> python-*.scm files.
>
> Thanks for the review!

I forgot to attach the patch series 🤦


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-gnu-Add-python-frozendict.patch --]
[-- Type: text/x-patch, Size: 1463 bytes --]

From 4f5271954642ffa9d4abda51b8be6c0e0ed66ca7 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Sat, 29 Feb 2020 11:06:27 -0600
Subject: [PATCH 01/16] gnu: Add python-frozendict.

* gnu/packages/python-xyz.scm (python-frozendict): New variable.
---
 gnu/packages/python-xyz.scm | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index daf129c3c4..1fb3ea021c 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -18726,3 +18726,22 @@ HTML-containing files.")
 usable as a configuration language.  This Python package implements parsing and
 dumping of JSON5 data structures.")
     (license license:asl2.0)))
+
+(define-public python-frozendict
+  (package
+    (name "python-frozendict")
+    (version "1.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "frozendict" version))
+       (sha256
+        (base32 "0ibf1wipidz57giy53dh7mh68f2hz38x8f4wdq88mvxj5pr7jhbp"))))
+    (build-system python-build-system)
+    (home-page "https://github.com/slezica/python-frozendict")
+    (synopsis "Simple immutable mapping for Python")
+    (description
+     "@dfn{frozendict} is an immutable wrapper around dictionaries that
+implements the complete mapping interface.  It can be used as a drop-in
+replacement for dictionaries where immutability is desired.")
+    (license license:expat)))
-- 
2.25.2


[-- Attachment #3: 0002-gnu-Add-python-unpaddedbase64.patch --]
[-- Type: text/x-patch, Size: 1741 bytes --]

From 907fa11b8309843e6e6915e65496142d4597b071 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Sat, 29 Feb 2020 11:07:34 -0600
Subject: [PATCH 02/16] gnu: Add python-unpaddedbase64.

* gnu/packages/python-xyz.scm (python-unpaddedbase64): New variable.
---
 gnu/packages/python-xyz.scm | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 1fb3ea021c..f0d0c1b450 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -18745,3 +18745,26 @@ dumping of JSON5 data structures.")
 implements the complete mapping interface.  It can be used as a drop-in
 replacement for dictionaries where immutability is desired.")
     (license license:expat)))
+
+(define-public python-unpaddedbase64
+  (package
+    (name "python-unpaddedbase64")
+    (version "1.1.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/matrix-org/python-unpaddedbase64.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0if3fjfxga0bwdq47v77fs9hrcqpmwdxry2i2a7pdqsp95258nxd"))))
+    (build-system python-build-system)
+    (home-page "https://pypi.org/project/unpaddedbase64/")
+    (synopsis "Encode and decode Base64 without “=” padding")
+    (description
+     "RFC 4648 specifies that Base64 should be padded to a multiple of 4 bytes
+using “=” characters.  However this conveys no benefit so many protocols
+choose to use Base64 without the “=” padding.")
+    (license license:asl2.0)))
-- 
2.25.2


[-- Attachment #4: 0003-gnu-Add-python-canonicaljson.patch --]
[-- Type: text/x-patch, Size: 2090 bytes --]

From 58d8abab399b4a56c8b0058bab90edc19d92a2a6 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Sat, 29 Feb 2020 11:08:29 -0600
Subject: [PATCH 03/16] gnu: Add python-canonicaljson.

* gnu/packages/python-xyz.scm (python-canonicaljson): New variable.
---
 gnu/packages/python-xyz.scm | 32 ++++++++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index f0d0c1b450..003f9ca22c 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -18768,3 +18768,35 @@ replacement for dictionaries where immutability is desired.")
 using “=” characters.  However this conveys no benefit so many protocols
 choose to use Base64 without the “=” padding.")
     (license license:asl2.0)))
+
+(define-public python-canonicaljson
+  (package
+    (name "python-canonicaljson")
+    (version "1.1.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "canonicaljson" version))
+       (sha256
+        (base32 "09cpacc8yvcc74i63pdmlfaahh77dnvbyw9zf29wml2zzwqfbg25"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-six" ,python-six)
+       ("python-frozendict" ,python-frozendict)
+       ("python-simplejson" ,python-simplejson)))
+    (home-page "https://github.com/matrix-org/python-canonicaljson")
+    (synopsis "Canonical JSON")
+    (description
+     "Deterministically encode JSON.
+
+@itemize
+@item Encodes objects and arrays as RFC 7159 JSON.
+@item Sorts object keys so that you get the same result each time.
+@item Has no insignificant whitespace to make the output as small as possible.
+@item Escapes only the characters that must be escaped, U+0000 to
+ U+0019 / U+0022 / U+0056, to keep the output as small as possible.
+@item Uses the shortest escape sequence for each escaped character.
+@item Encodes the JSON as UTF-8.
+@item Can encode frozendict immutable dictionaries.
+@end itemize")
+    (license license:asl2.0)))
-- 
2.25.2


[-- Attachment #5: 0004-gnu-Add-python-signedjson.patch --]
[-- Type: text/x-patch, Size: 2230 bytes --]

From 64c20964e4ac4ddc5cd58a0e3da3c1e8fa538fee Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Sat, 29 Feb 2020 11:09:58 -0600
Subject: [PATCH 04/16] gnu: Add python-signedjson.

* gnu/packages/python-xyz.scm (python-signedjson): New variable.
---
 gnu/packages/python-xyz.scm | 39 +++++++++++++++++++++++++++++++++++++
 1 file changed, 39 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 003f9ca22c..6f3e40f0a0 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -18800,3 +18800,42 @@ choose to use Base64 without the “=” padding.")
 @item Can encode frozendict immutable dictionaries.
 @end itemize")
     (license license:asl2.0)))
+
+(define-public python-signedjson
+  (package
+    (name "python-signedjson")
+    (version "1.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "signedjson" version))
+       (sha256
+        (base32 "13wfi50wzz38j6xsz7hmx26vf0zvk0fj7516wavzpsyfk9xy3g5v"))))
+    (build-system python-build-system)
+    (arguments
+     ;; TODO "AttributeError: type object 'Callable' has no attribute
+     ;; '_abc_registry'"
+     `(#:tests? #f))
+    (propagated-inputs
+     `(("python-canonicaljson" ,python-canonicaljson)
+       ("python-unpaddedbase64" ,python-unpaddedbase64)
+       ("python-pynacl" ,python-pynacl)
+       ("python-typing-extensions" ,python-typing-extensions)
+       ("python-typing" ,python-typing)))
+    (native-inputs
+     `(("python-simplejson" ,python-simplejson)
+       ("python-frozendict" ,python-frozendict)))
+    (home-page "https://github.com/matrix-org/python-signedjson")
+    (synopsis "Sign JSON objects with ED25519 signatures")
+    (description
+     "Sign JSON objects with ED25519 signatures.
+
+@itemize
+@item More than one entity can sign the same object.
+@item Each entity can sign the object with more than one key making it easier to
+rotate keys
+@item ED25519 can be replaced with a different algorithm.
+@item Unprotected data can be added to the object under the @dfn{\"unsigned\"}
+key.
+@end itemize")
+    (license license:asl2.0)))
-- 
2.25.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #6: 0005-gnu-Add-python-daemonize.patch --]
[-- Type: text/x-patch, Size: 1205 bytes --]

From 61ca5e708307bf4febad635a513fa8b685d70f67 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Sat, 29 Feb 2020 11:10:35 -0600
Subject: [PATCH 05/16] gnu: Add python-daemonize.

* gnu/packages/python-xyz.scm (python-daemonize): New variable.
---
 gnu/packages/python-xyz.scm | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 6f3e40f0a0..c908658197 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -18839,3 +18839,19 @@ rotate keys
 key.
 @end itemize")
     (license license:asl2.0)))
+
+(define-public python-daemonize
+  (package
+    (name "python-daemonize")
+    (version "2.5.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "daemonize" version))
+       (sha256
+        (base32 "1hwbl3gf9fdds9sc14zgjyjisjvxidrvqc11xlbb0b6jz17nw0nx"))))
+    (build-system python-build-system)
+    (home-page "https://github.com/thesharp/daemonize")
+    (synopsis "Library for writing system daemons in Python")
+    (description "Daemonize is a library for writing system daemons in Python.")
+    (license license:expat)))
-- 
2.25.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #7: 0006-gnu-Add-python-pymacaroons.patch --]
[-- Type: text/x-patch, Size: 1844 bytes --]

From c63dc12a55fc1fc925dbac294dedf0d1c63d3759 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Sat, 29 Feb 2020 11:11:11 -0600
Subject: [PATCH 06/16] gnu: Add python-pymacaroons.

* gnu/packages/python-xyz.scm (python-pymacaroons): New variable.
---
 gnu/packages/python-xyz.scm | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index c908658197..b1aa9592d7 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -18855,3 +18855,30 @@ key.
     (synopsis "Library for writing system daemons in Python")
     (description "Daemonize is a library for writing system daemons in Python.")
     (license license:expat)))
+
+(define-public python-pymacaroons
+  (package
+    (name "python-pymacaroons")
+    (version "0.13.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "pymacaroons" version))
+       (sha256
+        (base32 "1f0357a6g1h96sk6wy030xmc1p4rd80a999qvxd28v7nlm1blsqy"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-six" ,python-six)
+       ("python-pynacl" ,python-pynacl)))
+    (home-page "https://github.com/ecordell/pymacaroons")
+    (synopsis "Python Macaroon Library")
+    (description
+     "Macaroons, like cookies, are a form of bearer credential.  Unlike opaque
+tokens, macaroons embed caveats that define specific authorization
+requirements for the target service, the service that issued the root macaroon
+and which is capable of verifying the integrity of macaroons it receives.
+
+Macaroons allow for delegation and attenuation of authorization.  They are
+simple and fast to verify, and decouple authorization policy from the
+enforcement of that policy.")
+    (license license:expat)))
-- 
2.25.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #8: 0007-gnu-Add-python-prometheus-client.patch --]
[-- Type: text/x-patch, Size: 1630 bytes --]

From 1a923dc1a6e8fbc15bd66655db872965786f45b1 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Sat, 29 Feb 2020 11:11:35 -0600
Subject: [PATCH 07/16] gnu: Add python-prometheus-client.

* gnu/packages/python-xyz.scm (python-prometheus-client): New variable.
---
 gnu/packages/python-xyz.scm | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index b1aa9592d7..bf34511bc3 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -18882,3 +18882,26 @@ Macaroons allow for delegation and attenuation of authorization.  They are
 simple and fast to verify, and decouple authorization policy from the
 enforcement of that policy.")
     (license license:expat)))
+
+(define-public python-prometheus-client
+  (package
+    (name "python-prometheus-client")
+    (version "0.7.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "prometheus_client" version))
+       (sha256
+        (base32 "1ni2yv4ixwz32nz39ckia76lvggi7m19y5f702w5qczbnfi29kbi"))))
+    (build-system python-build-system)
+    (arguments
+     ;; TODO "ModuleNotFoundError: No module named 'tests'"
+     `(#:tests? #f))
+    (propagated-inputs
+     `(("python-twisted" ,python-twisted)))
+    (native-inputs
+     `(("python-tox" ,python-tox)))
+    (home-page "https://github.com/prometheus/client_python")
+    (synopsis "Prometheus instrumentation library for Python applications")
+    (description "The official Python 2 and 3 client for Prometheus.")
+    (license license:asl2.0)))
-- 
2.25.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #9: 0008-gnu-Add-python-ldap3.patch --]
[-- Type: text/x-patch, Size: 1644 bytes --]

From f56af1a76217dba56249aff64559e228d68218bf Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Sat, 29 Feb 2020 11:12:08 -0600
Subject: [PATCH 08/16] gnu: Add python-ldap3.

* gnu/packages/python-xyz.scm (python-ldap3): New variable.
---
 gnu/packages/python-xyz.scm | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index bf34511bc3..1cabc8ecaa 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -18905,3 +18905,27 @@ enforcement of that policy.")
     (synopsis "Prometheus instrumentation library for Python applications")
     (description "The official Python 2 and 3 client for Prometheus.")
     (license license:asl2.0)))
+
+(define-public python-ldap3
+  (package
+    (name "python-ldap3")
+    (version "2.6.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "ldap3" version))
+       (sha256
+        (base32 "0ag5xqlki6pjk3f50b8ar8vynx2fmkna7rfampv3kdgwg8z6gjr7"))))
+    (build-system python-build-system)
+    (arguments
+     ;; TODO "ImportError: Failed to import test module: ordDict"
+     `(#:tests? #f))
+    (propagated-inputs
+     `(("python-pyasn1" ,python-pyasn1)
+       ("python-gssapi" ,python-gssapi)))
+    (home-page "https://github.com/cannatag/ldap3")
+    (synopsis "Strictly RFC 4510 conforming LDAP V3 pure Python client")
+    (description
+     "LDAP3 is a strictly RFC 4510 conforming LDAP V3 pure Python client
+library.  The same codebase runs in Python 2, Python 3, PyPy and PyPy3.")
+    (license license:lgpl3+)))
-- 
2.25.2


[-- Attachment #10: 0009-gnu-Add-python-boltons.patch --]
[-- Type: text/x-patch, Size: 2019 bytes --]

From 2cc8719b50b8c1618f4b36792155a242aa823e84 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Tue, 24 Mar 2020 19:32:46 -0500
Subject: [PATCH 09/16] gnu: Add python-boltons.

* gnu/packages/python-xyz.scm: (python-boltons) New variable.
---
 gnu/packages/python-xyz.scm | 33 +++++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 1cabc8ecaa..19b318915e 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -18929,3 +18929,36 @@ enforcement of that policy.")
      "LDAP3 is a strictly RFC 4510 conforming LDAP V3 pure Python client
 library.  The same codebase runs in Python 2, Python 3, PyPy and PyPy3.")
     (license license:lgpl3+)))
+
+(define-public python-boltons
+  (package
+    (name "python-boltons")
+    (version "20.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "boltons" version))
+       (sha256
+        (base32
+         "0lrr40qqj3ch8xarvyzbnbjs79pz5aywklllq53l347h1b8xnkg4"))))
+    (build-system python-build-system)
+    (home-page "https://github.com/mahmoud/boltons")
+    (synopsis
+     "When they're not builtins, they're boltons.")
+    (description
+     "Boltons is a set of over 230 BSD-licensed, pure-Python utilities in the
+same spirit as — and yet conspicuously missing from — the standard library,
+including:
+
+@itemize
+@item Atomic file saving, bolted on with fileutils
+@item A highly-optimized OrderedMultiDict, in dictutils
+@item Two types of PriorityQueue, in queueutils
+@item Chunked and windowed iteration, in iterutils
+@item Recursive data structure iteration and merging, with iterutils.remap
+@item Exponential backoff functionality, including jitter, through
+iterutils.backoff
+@item A full-featured TracebackInfo type, for representing stack traces, in
+tbutils
+@end itemize")
+    (license license:bsd-3)))
-- 
2.25.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #11: 0010-gnu-Add-python-eliot.patch --]
[-- Type: text/x-patch, Size: 2803 bytes --]

From 278750c17316101616815f69bfa878e8d1105166 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Tue, 24 Mar 2020 19:33:36 -0500
Subject: [PATCH 10/16] gnu: Add python-eliot.

* gnu/packages/python-xyz.scm: (python-eliot) New variable.
---
 gnu/packages/python-xyz.scm | 53 +++++++++++++++++++++++++++++++++++++
 1 file changed, 53 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 19b318915e..e2f78af00d 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -18962,3 +18962,56 @@ iterutils.backoff
 tbutils
 @end itemize")
     (license license:bsd-3)))
+
+(define-public python-eliot
+  (package
+    (name "python-eliot")
+    (version "1.12.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "eliot" version))
+       (sha256
+        (base32 "0wabv7hk63l12881f4zw02mmj06583qsx2im0yywdjlj8f56vqdn"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'remove-journald-support
+           (lambda _
+             (invoke "rm"
+                     "eliot/tests/test_journald.py"
+                     "eliot/journald.py")
+             #t))
+         (add-after 'remove-journald-support 'remove-eliot-prettyprint-tests
+           ;; remove command-line tool's tests. TODO eliot-prettyprint should
+           ;; be installed and these tests should pass.
+           (lambda _
+             (invoke "rm" "eliot/tests/test_prettyprint.py")
+             #t)))))
+    (propagated-inputs
+     `(("python-boltons" ,python-boltons)
+       ("python-pyrsistent" ,python-pyrsistent)
+       ("python-six" ,python-six)
+       ("python-zope-interface" ,python-zope-interface)))
+    (native-inputs
+     `(("python-black" ,python-black)
+       ("python-coverage" ,python-coverage)
+       ("python-dask" ,python-dask)
+       ("python-flake8" ,python-flake8)
+       ("python-hypothesis" ,python-hypothesis)
+       ("python-pytest" ,python-pytest)
+       ("python-setuptools" ,python-setuptools)
+       ("python-sphinx" ,python-sphinx)
+       ("python-sphinx-rtd-theme" ,python-sphinx-rtd-theme)
+       ("python-testtools" ,python-testtools)
+       ("python-twine" ,python-twine)
+       ("python-twisted" ,python-twisted)))
+    (home-page "https://github.com/itamarst/eliot/")
+    (synopsis "Eliot: the logging system that tells you why it happened")
+    (description
+     "@dfn{eliot} is a Python logging system that outputs causal chains of
+actions: actions can spawn other actions, and eventually they either succeed
+or fail. The resulting logs tell you the story of what your software did: what
+happened, and what caused it.")
+    (license license:asl2.0)))
-- 
2.25.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #12: 0011-gnu-Add-python-pem.patch --]
[-- Type: text/x-patch, Size: 1626 bytes --]

From fc0016250f0d1a2c0a3461ec819762c762090438 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Tue, 24 Mar 2020 19:49:10 -0500
Subject: [PATCH 11/16] gnu: Add python-pem.

* gnu/packages/python-xyz.scm: (python-pem) New variable.
---
 gnu/packages/python-xyz.scm | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index e2f78af00d..96150879c4 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -19015,3 +19015,28 @@ actions: actions can spawn other actions, and eventually they either succeed
 or fail. The resulting logs tell you the story of what your software did: what
 happened, and what caused it.")
     (license license:asl2.0)))
+
+(define-public python-pem
+  (package
+    (name "python-pem")
+    (version "20.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "pem" version))
+       (sha256
+        (base32
+         "1xh88ss279fprxnzd10dczmqwjhppbyvljm33zrg2mgybwd66qr7"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-certifi" ,python-certifi)
+       ("python-coverage" ,python-coverage)
+       ("python-pretend" ,python-pretend)
+       ("python-pyopenssl" ,python-pyopenssl)
+       ("python-pytest" ,python-pytest)
+       ("python-sphinx" ,python-sphinx)
+       ("python-twisted" ,python-twisted)))
+    (home-page "https://pem.readthedocs.io/")
+    (synopsis "Easy PEM file parsing in Python.")
+    (description "Easy PEM file parsing in Python.")
+    (license license:expat)))
-- 
2.25.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #13: 0012-gnu-Add-python-txsni.patch --]
[-- Type: text/x-patch, Size: 1525 bytes --]

From b257432434f38f47b875b7cb6f5fccd90b75693d Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Tue, 24 Mar 2020 19:49:55 -0500
Subject: [PATCH 12/16] gnu: Add python-txsni.

* gnu/packages/python-xyz.scm: (python-txsni) New variable.
---
 gnu/packages/python-xyz.scm | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 96150879c4..3ff5f4c60a 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -19040,3 +19040,28 @@ happened, and what caused it.")
     (synopsis "Easy PEM file parsing in Python.")
     (description "Easy PEM file parsing in Python.")
     (license license:expat)))
+
+(define-public python-txsni
+  (package
+    (name "python-txsni")
+    (version "0.1.9")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "TxSNI" version))
+       (sha256
+        (base32
+         "1c72nbhx4z0v5djb89yzrcqlmjdlyryj7qgwl9ivnn816126z5kj"))))
+    (build-system python-build-system)
+    (arguments
+     ;; TODO confusing test failure
+     `(#:tests? #f))
+    (propagated-inputs
+     `(("python-pyopenssl" ,python-pyopenssl)
+       ("python-service-identity" ,python-service-identity)
+       ("python-twisted" ,python-twisted)))
+    (home-page "https://github.com/glyph/txsni")
+    (synopsis "easy-to-use SNI endpoint for twisted")
+    (description
+     "easy-to-use SNI endpoint for twisted")
+    (license license:expat)))
-- 
2.25.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #14: 0013-gnu-Add-python-txacme.patch --]
[-- Type: text/x-patch, Size: 2280 bytes --]

From 11ce910f6e783f86773fea5bab18ba0c07dfbafb Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Sat, 29 Feb 2020 11:13:26 -0600
Subject: [PATCH 13/16] gnu: Add python-txacme.

* gnu/packages/python-xyz.scm (python-txacme): New variable.
---
 gnu/packages/python-xyz.scm | 42 +++++++++++++++++++++++++++++++++++++
 1 file changed, 42 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 3ff5f4c60a..2d4c82d6c3 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -19065,3 +19065,45 @@ happened, and what caused it.")
     (description
      "easy-to-use SNI endpoint for twisted")
     (license license:expat)))
+
+(define-public python-txacme
+  (package
+    (name "python-txacme")
+    (version "0.9.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "txacme" version))
+       (sha256
+        (base32 "1cplx4llq7i508w6fgwjdv9di7rsz9k9irfmzdfbiz6q6a0ykf1d"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-acme" ,python-acme)
+       ("python-attrs" ,python-attrs)
+       ("python-eliot" ,python-eliot)
+       ("python-josepy" ,python-josepy)
+       ("python-pem" ,python-pem)
+       ("python-treq" ,python-treq)
+       ("python-twisted" ,python-twisted)
+       ("python-txsni" ,python-txsni)))
+    (native-inputs
+    `(("python-fixtures" ,python-fixtures)
+      ("python-hypothesis" ,python-hypothesis)
+      ("python-mock" ,python-mock)
+      ("python-service-identity"
+       ,python-service-identity)
+      ("python-testrepository" ,python-testrepository)
+      ("python-testscenarios" ,python-testscenarios)
+      ("python-testtools" ,python-testtools)))
+    (home-page "https://github.com/twisted/txacme")
+    (synopsis
+     "Twisted implexmentation of the ACME protocol")
+    (description
+     "ACME is Automatic Certificate Management Environment, a protocol that
+allows clients and certificate authorities to automate verification and
+certificate issuance.  The ACME protocol is used by the free Let's Encrypt
+Certificate Authority.
+
+txacme is an implementation of the protocol for Twisted, the event-driven
+networking engine for Python.")
+    (license license:expat)))
-- 
2.25.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #15: 0014-gnu-Add-python-pysaml2.patch --]
[-- Type: text/x-patch, Size: 1636 bytes --]

From 0ae8b2347df79250c5e2e0f48f825875a218fb43 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Tue, 24 Mar 2020 19:38:36 -0500
Subject: [PATCH 14/16] gnu: Add python-pysaml2.

* gnu/packages/python-xyz.scm: (python-pysaml2) New variable.
---
 gnu/packages/python-xyz.scm | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 2d4c82d6c3..64e3b68821 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -19107,3 +19107,31 @@ Certificate Authority.
 txacme is an implementation of the protocol for Twisted, the event-driven
 networking engine for Python.")
     (license license:expat)))
+
+(define-public python-pysaml2
+  (package
+    (name "python-pysaml2")
+    (version "5.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "pysaml2" version))
+       (sha256
+        (base32
+         "1h8cmxh9cvxhrdfmkh92wg6zpxmhi2fixq1cy4hxismmaar7bsny"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-cryptography" ,python-cryptography)
+       ("python-dateutil" ,python-dateutil)
+       ("python-defusedxml" ,python-defusedxml)
+       ("python-pyopenssl" ,python-pyopenssl)
+       ("python-pytz" ,python-pytz)
+       ("python-requests" ,python-requests)
+       ("python-six" ,python-six)))
+    (home-page "https://idpy.org")
+    (synopsis
+     "Python implementation of SAML Version 2 Standard")
+    (description
+     "Python implementation of SAML Version 2 Standard")
+    (license license:asl2.0)))
+
-- 
2.25.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #16: 0015-gnu-Add-python-matrix-synapse-ldap3.patch --]
[-- Type: text/x-patch, Size: 2357 bytes --]

From 56d73f7249273da6b645aa1d4be38074f8d4ced4 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Sat, 29 Feb 2020 11:19:28 -0600
Subject: [PATCH 15/16] gnu: Add python-matrix-synapse-ldap3.

* gnu/packages/matrix.scm: New file. (python-matrix-synapse-ldap3) New
  variable.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add matrix.scm.
---
 gnu/local.mk            |  1 +
 gnu/packages/matrix.scm | 33 +++++++++++++++++++++++++++++++++
 2 files changed, 34 insertions(+)
 create mode 100644 gnu/packages/matrix.scm

diff --git a/gnu/local.mk b/gnu/local.mk
index 7d8145b10d..8c50da9c10 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -343,6 +343,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/marst.scm			\
   %D%/packages/mate.scm             \
   %D%/packages/maths.scm			\
+  %D%/packages/matrix.scm			\
   %D%/packages/maven.scm			\
   %D%/packages/mc.scm				\
   %D%/packages/mcrypt.scm			\
diff --git a/gnu/packages/matrix.scm b/gnu/packages/matrix.scm
new file mode 100644
index 0000000000..f399d2aabc
--- /dev/null
+++ b/gnu/packages/matrix.scm
@@ -0,0 +1,33 @@
+(define-module (gnu packages matrix)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (gnu packages python-crypto)
+  #:use-module (gnu packages python-xyz)
+  #:use-module (guix build-system python)
+  #:use-module (guix download)
+  #:use-module (guix packages))
+
+(define-public python-matrix-synapse-ldap3
+  (package
+    (name "python-matrix-synapse-ldap3")
+    (version "0.1.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "matrix-synapse-ldap3" version))
+       (sha256
+        (base32
+         "01bms89sl16nyh9f141idsz4mnhxvjrc3gj721wxh1fhikps0djx"))))
+    (build-system python-build-system)
+    (arguments
+     ;; tests require synapse, creating a circular dependency.
+     '(#:tests? #f))
+    (porpagated-inputs
+     `(("python-twisted" ,python-twisted)
+       ("python-ldap3" ,python-ldap3)
+       ("python-service-identity" ,python-service-identity)))
+    (home-page "https://github.com/matrix-org/matrix-synapse-ldap3")
+    (synopsis "LDAP3 auth provider for Synapse")
+    (description
+     "Allows synapse to use LDAP as a password provider.  This allows users to
+log in to synapse with their username and password from an LDAP server.")
+    (license license:asl2.0)))
-- 
2.25.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #17: 0016-gnu-Add-synapse.patch --]
[-- Type: text/x-patch, Size: 4195 bytes --]

From 737d69090c2c4d95ca9cb84468f756b0112f88a0 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Sat, 29 Feb 2020 11:22:06 -0600
Subject: [PATCH 16/16] gnu: Add synapse.

* gnu/packages/matrix.scm (synapse): New variable.
---
 gnu/packages/matrix.scm | 69 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 69 insertions(+)

diff --git a/gnu/packages/matrix.scm b/gnu/packages/matrix.scm
index f399d2aabc..0b56c66bbb 100644
--- a/gnu/packages/matrix.scm
+++ b/gnu/packages/matrix.scm
@@ -1,7 +1,11 @@
 (define-module (gnu packages matrix)
   #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (gnu packages check)
+  #:use-module (gnu packages databases)
   #:use-module (gnu packages python-crypto)
+  #:use-module (gnu packages python-web)
   #:use-module (gnu packages python-xyz)
+  #:use-module (gnu packages xml)
   #:use-module (guix build-system python)
   #:use-module (guix download)
   #:use-module (guix packages))
@@ -31,3 +35,68 @@
      "Allows synapse to use LDAP as a password provider.  This allows users to
 log in to synapse with their username and password from an LDAP server.")
     (license license:asl2.0)))
+
+(define-public synapse
+  (package
+    (name "synapse")
+    (version "1.11.0")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "matrix-synapse" version))
+              (sha256
+               (base32
+                "0cqbwcz0fi4w413s1kcxvf696qi4n46n1k4ggnygqri5yq26qlfy"))))
+    (build-system python-build-system)
+    ;; TODO I think there are custom tests
+    (propagated-inputs
+     `(("python-simplejson" ,python-simplejson) ; not attested but required
+       ;; requirements (synapse/python_dependencies.py)
+       ("python-jsonschema" ,python-jsonschema)
+       ("python-frozendict" ,python-frozendict)
+       ("python-unpaddedbase64" ,python-unpaddedbase64)
+       ("python-canonicaljson" ,python-canonicaljson)
+       ("python-signedjson" ,python-signedjson)
+       ("python-pynacl" ,python-pynacl)
+       ("python-idna" ,python-idna)
+       ("python-service-identity" ,python-service-identity)
+       ("python-twisted" ,python-twisted)
+       ("python-treq" ,python-treq)
+       ("python-pyopenssl" ,python-pyopenssl)
+       ("python-pyyaml" ,python-pyyaml)
+       ("python-pyasn1" ,python-pyasn1)
+       ("python-pyasn1-modules" ,python-pyasn1-modules)
+       ("python-daemonize" ,python-daemonize)
+       ("python-bcrypt" ,python-bcrypt)
+       ("python-pillow" ,python-pillow)
+       ("python-sortedcontainers" ,python-sortedcontainers)
+       ("python-pymacaroons" ,python-pymacaroons)
+       ("python-msgpack" ,python-msgpack)
+       ("python-phonenumbers" ,python-phonenumbers)
+       ("python-six" ,python-six)
+       ("python-prometheus-client" ,python-prometheus-client)
+       ("python-attrs" ,python-attrs)
+       ("python-netaddr" ,python-netaddr)
+       ("python-jinja2" ,python-jinja2)
+       ("python-bleach" ,python-bleach)
+       ("python-typing-extensions" ,python-typing-extensions)
+       ;; conditional requirements (synapse/python_dependencies.py)
+       ("python-matrix-synapse-ldap3" ,python-matrix-synapse-ldap3)
+       ("python-psycopg2" ,python-psycopg2)
+       ("python-jinja2" ,python-jinja2)
+       ("python-txacme" ,python-txacme)
+       ("python-pysaml2" ,python-pysaml2)
+       ("python-lxml" ,python-lxml)
+       ;; sentry-sdk, jaeger-client, and opentracing could be included, but
+       ;; all are monitoring aids and not essential.
+       ("python-pyjwt" ,python-pyjwt)))
+    (native-inputs
+     `(("python-mock" ,python-mock)
+       ("python-parameterized" ,python-parameterized)))
+    (home-page "https://github.com/matrix-org/synapse")
+    (synopsis "Matrix reference homeserver")
+    (description "Synapse is a reference \"homeserver\" implementation of
+Matrix from the core development team at matrix.org, written in
+Python/Twisted.  It is intended to showcase the concept of Matrix and let
+folks see the spec in the context of a codebase and let you run your own
+homeserver and generally help bootstrap the ecosystem.")
+    (license license:asl2.0)))
-- 
2.25.2


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [bug#39841] [WIP PATCH] synapse
  2020-03-30  0:28   ` Alex ter Weele
  2020-03-30  0:35     ` Alex ter Weele
@ 2020-03-30  0:42     ` Alex ter Weele
  1 sibling, 0 replies; 9+ messages in thread
From: Alex ter Weele @ 2020-03-30  0:42 UTC (permalink / raw)
  To: Marius Bakke; +Cc: 39841

[-- Attachment #1: Type: text/plain, Size: 1114 bytes --]

Alex ter Weele <alex.ter.weele@gmail.com> writes:

> Marius Bakke <mbakke@fastmail.com> writes:
>
>> Alex ter Weele <alex.ter.weele@gmail.com> writes:
>>
>>> Hello,
>>>
>>> These are some patches to add Synapse
>>> <https://github.com/matrix-org/synapse>.
>>
>> Cool!  Now Guix users can run their own Matrix home servers!
>>
>> Can you rebase this series on the current master branch?  Let's try
>> to
>> merge the patches that are not marked with TODO, to make reviewing
>> the
>> remainder easier.
>>
>> I've applied the first patch already!  :-)
>>
>> Short feedback on the series: inputs should probably be
>> propagated-inputs in all of these.  Please also run 'guix lint' on
>> each
>> package to catch cosmetic issues.
>>
>> Thanks in advance, and sorry for the delay!
>
> Here is a new patch series atop current master. It should be
> guix-linted and use propagated-inputs.
>
> I also want to mention: I indiscriminately put everything in
> python-xyz.scm, some of these packages may be a better fit for other
> python-*.scm files.
>
> Thanks for the review!

I forgot to attach the patch series, whoops


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-gnu-Add-python-frozendict.patch --]
[-- Type: text/x-patch, Size: 1463 bytes --]

From 4f5271954642ffa9d4abda51b8be6c0e0ed66ca7 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Sat, 29 Feb 2020 11:06:27 -0600
Subject: [PATCH 01/16] gnu: Add python-frozendict.

* gnu/packages/python-xyz.scm (python-frozendict): New variable.
---
 gnu/packages/python-xyz.scm | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index daf129c3c4..1fb3ea021c 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -18726,3 +18726,22 @@ HTML-containing files.")
 usable as a configuration language.  This Python package implements parsing and
 dumping of JSON5 data structures.")
     (license license:asl2.0)))
+
+(define-public python-frozendict
+  (package
+    (name "python-frozendict")
+    (version "1.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "frozendict" version))
+       (sha256
+        (base32 "0ibf1wipidz57giy53dh7mh68f2hz38x8f4wdq88mvxj5pr7jhbp"))))
+    (build-system python-build-system)
+    (home-page "https://github.com/slezica/python-frozendict")
+    (synopsis "Simple immutable mapping for Python")
+    (description
+     "@dfn{frozendict} is an immutable wrapper around dictionaries that
+implements the complete mapping interface.  It can be used as a drop-in
+replacement for dictionaries where immutability is desired.")
+    (license license:expat)))
-- 
2.25.2


[-- Attachment #3: 0002-gnu-Add-python-unpaddedbase64.patch --]
[-- Type: text/x-patch, Size: 1741 bytes --]

From 907fa11b8309843e6e6915e65496142d4597b071 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Sat, 29 Feb 2020 11:07:34 -0600
Subject: [PATCH 02/16] gnu: Add python-unpaddedbase64.

* gnu/packages/python-xyz.scm (python-unpaddedbase64): New variable.
---
 gnu/packages/python-xyz.scm | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 1fb3ea021c..f0d0c1b450 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -18745,3 +18745,26 @@ dumping of JSON5 data structures.")
 implements the complete mapping interface.  It can be used as a drop-in
 replacement for dictionaries where immutability is desired.")
     (license license:expat)))
+
+(define-public python-unpaddedbase64
+  (package
+    (name "python-unpaddedbase64")
+    (version "1.1.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/matrix-org/python-unpaddedbase64.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0if3fjfxga0bwdq47v77fs9hrcqpmwdxry2i2a7pdqsp95258nxd"))))
+    (build-system python-build-system)
+    (home-page "https://pypi.org/project/unpaddedbase64/")
+    (synopsis "Encode and decode Base64 without “=” padding")
+    (description
+     "RFC 4648 specifies that Base64 should be padded to a multiple of 4 bytes
+using “=” characters.  However this conveys no benefit so many protocols
+choose to use Base64 without the “=” padding.")
+    (license license:asl2.0)))
-- 
2.25.2


[-- Attachment #4: 0003-gnu-Add-python-canonicaljson.patch --]
[-- Type: text/x-patch, Size: 2090 bytes --]

From 58d8abab399b4a56c8b0058bab90edc19d92a2a6 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Sat, 29 Feb 2020 11:08:29 -0600
Subject: [PATCH 03/16] gnu: Add python-canonicaljson.

* gnu/packages/python-xyz.scm (python-canonicaljson): New variable.
---
 gnu/packages/python-xyz.scm | 32 ++++++++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index f0d0c1b450..003f9ca22c 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -18768,3 +18768,35 @@ replacement for dictionaries where immutability is desired.")
 using “=” characters.  However this conveys no benefit so many protocols
 choose to use Base64 without the “=” padding.")
     (license license:asl2.0)))
+
+(define-public python-canonicaljson
+  (package
+    (name "python-canonicaljson")
+    (version "1.1.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "canonicaljson" version))
+       (sha256
+        (base32 "09cpacc8yvcc74i63pdmlfaahh77dnvbyw9zf29wml2zzwqfbg25"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-six" ,python-six)
+       ("python-frozendict" ,python-frozendict)
+       ("python-simplejson" ,python-simplejson)))
+    (home-page "https://github.com/matrix-org/python-canonicaljson")
+    (synopsis "Canonical JSON")
+    (description
+     "Deterministically encode JSON.
+
+@itemize
+@item Encodes objects and arrays as RFC 7159 JSON.
+@item Sorts object keys so that you get the same result each time.
+@item Has no insignificant whitespace to make the output as small as possible.
+@item Escapes only the characters that must be escaped, U+0000 to
+ U+0019 / U+0022 / U+0056, to keep the output as small as possible.
+@item Uses the shortest escape sequence for each escaped character.
+@item Encodes the JSON as UTF-8.
+@item Can encode frozendict immutable dictionaries.
+@end itemize")
+    (license license:asl2.0)))
-- 
2.25.2


[-- Attachment #5: 0004-gnu-Add-python-signedjson.patch --]
[-- Type: text/x-patch, Size: 2230 bytes --]

From 64c20964e4ac4ddc5cd58a0e3da3c1e8fa538fee Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Sat, 29 Feb 2020 11:09:58 -0600
Subject: [PATCH 04/16] gnu: Add python-signedjson.

* gnu/packages/python-xyz.scm (python-signedjson): New variable.
---
 gnu/packages/python-xyz.scm | 39 +++++++++++++++++++++++++++++++++++++
 1 file changed, 39 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 003f9ca22c..6f3e40f0a0 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -18800,3 +18800,42 @@ choose to use Base64 without the “=” padding.")
 @item Can encode frozendict immutable dictionaries.
 @end itemize")
     (license license:asl2.0)))
+
+(define-public python-signedjson
+  (package
+    (name "python-signedjson")
+    (version "1.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "signedjson" version))
+       (sha256
+        (base32 "13wfi50wzz38j6xsz7hmx26vf0zvk0fj7516wavzpsyfk9xy3g5v"))))
+    (build-system python-build-system)
+    (arguments
+     ;; TODO "AttributeError: type object 'Callable' has no attribute
+     ;; '_abc_registry'"
+     `(#:tests? #f))
+    (propagated-inputs
+     `(("python-canonicaljson" ,python-canonicaljson)
+       ("python-unpaddedbase64" ,python-unpaddedbase64)
+       ("python-pynacl" ,python-pynacl)
+       ("python-typing-extensions" ,python-typing-extensions)
+       ("python-typing" ,python-typing)))
+    (native-inputs
+     `(("python-simplejson" ,python-simplejson)
+       ("python-frozendict" ,python-frozendict)))
+    (home-page "https://github.com/matrix-org/python-signedjson")
+    (synopsis "Sign JSON objects with ED25519 signatures")
+    (description
+     "Sign JSON objects with ED25519 signatures.
+
+@itemize
+@item More than one entity can sign the same object.
+@item Each entity can sign the object with more than one key making it easier to
+rotate keys
+@item ED25519 can be replaced with a different algorithm.
+@item Unprotected data can be added to the object under the @dfn{\"unsigned\"}
+key.
+@end itemize")
+    (license license:asl2.0)))
-- 
2.25.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #6: 0005-gnu-Add-python-daemonize.patch --]
[-- Type: text/x-patch, Size: 1205 bytes --]

From 61ca5e708307bf4febad635a513fa8b685d70f67 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Sat, 29 Feb 2020 11:10:35 -0600
Subject: [PATCH 05/16] gnu: Add python-daemonize.

* gnu/packages/python-xyz.scm (python-daemonize): New variable.
---
 gnu/packages/python-xyz.scm | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 6f3e40f0a0..c908658197 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -18839,3 +18839,19 @@ rotate keys
 key.
 @end itemize")
     (license license:asl2.0)))
+
+(define-public python-daemonize
+  (package
+    (name "python-daemonize")
+    (version "2.5.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "daemonize" version))
+       (sha256
+        (base32 "1hwbl3gf9fdds9sc14zgjyjisjvxidrvqc11xlbb0b6jz17nw0nx"))))
+    (build-system python-build-system)
+    (home-page "https://github.com/thesharp/daemonize")
+    (synopsis "Library for writing system daemons in Python")
+    (description "Daemonize is a library for writing system daemons in Python.")
+    (license license:expat)))
-- 
2.25.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #7: 0006-gnu-Add-python-pymacaroons.patch --]
[-- Type: text/x-patch, Size: 1844 bytes --]

From c63dc12a55fc1fc925dbac294dedf0d1c63d3759 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Sat, 29 Feb 2020 11:11:11 -0600
Subject: [PATCH 06/16] gnu: Add python-pymacaroons.

* gnu/packages/python-xyz.scm (python-pymacaroons): New variable.
---
 gnu/packages/python-xyz.scm | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index c908658197..b1aa9592d7 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -18855,3 +18855,30 @@ key.
     (synopsis "Library for writing system daemons in Python")
     (description "Daemonize is a library for writing system daemons in Python.")
     (license license:expat)))
+
+(define-public python-pymacaroons
+  (package
+    (name "python-pymacaroons")
+    (version "0.13.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "pymacaroons" version))
+       (sha256
+        (base32 "1f0357a6g1h96sk6wy030xmc1p4rd80a999qvxd28v7nlm1blsqy"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-six" ,python-six)
+       ("python-pynacl" ,python-pynacl)))
+    (home-page "https://github.com/ecordell/pymacaroons")
+    (synopsis "Python Macaroon Library")
+    (description
+     "Macaroons, like cookies, are a form of bearer credential.  Unlike opaque
+tokens, macaroons embed caveats that define specific authorization
+requirements for the target service, the service that issued the root macaroon
+and which is capable of verifying the integrity of macaroons it receives.
+
+Macaroons allow for delegation and attenuation of authorization.  They are
+simple and fast to verify, and decouple authorization policy from the
+enforcement of that policy.")
+    (license license:expat)))
-- 
2.25.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #8: 0007-gnu-Add-python-prometheus-client.patch --]
[-- Type: text/x-patch, Size: 1630 bytes --]

From 1a923dc1a6e8fbc15bd66655db872965786f45b1 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Sat, 29 Feb 2020 11:11:35 -0600
Subject: [PATCH 07/16] gnu: Add python-prometheus-client.

* gnu/packages/python-xyz.scm (python-prometheus-client): New variable.
---
 gnu/packages/python-xyz.scm | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index b1aa9592d7..bf34511bc3 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -18882,3 +18882,26 @@ Macaroons allow for delegation and attenuation of authorization.  They are
 simple and fast to verify, and decouple authorization policy from the
 enforcement of that policy.")
     (license license:expat)))
+
+(define-public python-prometheus-client
+  (package
+    (name "python-prometheus-client")
+    (version "0.7.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "prometheus_client" version))
+       (sha256
+        (base32 "1ni2yv4ixwz32nz39ckia76lvggi7m19y5f702w5qczbnfi29kbi"))))
+    (build-system python-build-system)
+    (arguments
+     ;; TODO "ModuleNotFoundError: No module named 'tests'"
+     `(#:tests? #f))
+    (propagated-inputs
+     `(("python-twisted" ,python-twisted)))
+    (native-inputs
+     `(("python-tox" ,python-tox)))
+    (home-page "https://github.com/prometheus/client_python")
+    (synopsis "Prometheus instrumentation library for Python applications")
+    (description "The official Python 2 and 3 client for Prometheus.")
+    (license license:asl2.0)))
-- 
2.25.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #9: 0008-gnu-Add-python-ldap3.patch --]
[-- Type: text/x-patch, Size: 1644 bytes --]

From f56af1a76217dba56249aff64559e228d68218bf Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Sat, 29 Feb 2020 11:12:08 -0600
Subject: [PATCH 08/16] gnu: Add python-ldap3.

* gnu/packages/python-xyz.scm (python-ldap3): New variable.
---
 gnu/packages/python-xyz.scm | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index bf34511bc3..1cabc8ecaa 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -18905,3 +18905,27 @@ enforcement of that policy.")
     (synopsis "Prometheus instrumentation library for Python applications")
     (description "The official Python 2 and 3 client for Prometheus.")
     (license license:asl2.0)))
+
+(define-public python-ldap3
+  (package
+    (name "python-ldap3")
+    (version "2.6.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "ldap3" version))
+       (sha256
+        (base32 "0ag5xqlki6pjk3f50b8ar8vynx2fmkna7rfampv3kdgwg8z6gjr7"))))
+    (build-system python-build-system)
+    (arguments
+     ;; TODO "ImportError: Failed to import test module: ordDict"
+     `(#:tests? #f))
+    (propagated-inputs
+     `(("python-pyasn1" ,python-pyasn1)
+       ("python-gssapi" ,python-gssapi)))
+    (home-page "https://github.com/cannatag/ldap3")
+    (synopsis "Strictly RFC 4510 conforming LDAP V3 pure Python client")
+    (description
+     "LDAP3 is a strictly RFC 4510 conforming LDAP V3 pure Python client
+library.  The same codebase runs in Python 2, Python 3, PyPy and PyPy3.")
+    (license license:lgpl3+)))
-- 
2.25.2


[-- Attachment #10: 0009-gnu-Add-python-boltons.patch --]
[-- Type: text/x-patch, Size: 2019 bytes --]

From 2cc8719b50b8c1618f4b36792155a242aa823e84 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Tue, 24 Mar 2020 19:32:46 -0500
Subject: [PATCH 09/16] gnu: Add python-boltons.

* gnu/packages/python-xyz.scm: (python-boltons) New variable.
---
 gnu/packages/python-xyz.scm | 33 +++++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 1cabc8ecaa..19b318915e 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -18929,3 +18929,36 @@ enforcement of that policy.")
      "LDAP3 is a strictly RFC 4510 conforming LDAP V3 pure Python client
 library.  The same codebase runs in Python 2, Python 3, PyPy and PyPy3.")
     (license license:lgpl3+)))
+
+(define-public python-boltons
+  (package
+    (name "python-boltons")
+    (version "20.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "boltons" version))
+       (sha256
+        (base32
+         "0lrr40qqj3ch8xarvyzbnbjs79pz5aywklllq53l347h1b8xnkg4"))))
+    (build-system python-build-system)
+    (home-page "https://github.com/mahmoud/boltons")
+    (synopsis
+     "When they're not builtins, they're boltons.")
+    (description
+     "Boltons is a set of over 230 BSD-licensed, pure-Python utilities in the
+same spirit as — and yet conspicuously missing from — the standard library,
+including:
+
+@itemize
+@item Atomic file saving, bolted on with fileutils
+@item A highly-optimized OrderedMultiDict, in dictutils
+@item Two types of PriorityQueue, in queueutils
+@item Chunked and windowed iteration, in iterutils
+@item Recursive data structure iteration and merging, with iterutils.remap
+@item Exponential backoff functionality, including jitter, through
+iterutils.backoff
+@item A full-featured TracebackInfo type, for representing stack traces, in
+tbutils
+@end itemize")
+    (license license:bsd-3)))
-- 
2.25.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #11: 0010-gnu-Add-python-eliot.patch --]
[-- Type: text/x-patch, Size: 2803 bytes --]

From 278750c17316101616815f69bfa878e8d1105166 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Tue, 24 Mar 2020 19:33:36 -0500
Subject: [PATCH 10/16] gnu: Add python-eliot.

* gnu/packages/python-xyz.scm: (python-eliot) New variable.
---
 gnu/packages/python-xyz.scm | 53 +++++++++++++++++++++++++++++++++++++
 1 file changed, 53 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 19b318915e..e2f78af00d 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -18962,3 +18962,56 @@ iterutils.backoff
 tbutils
 @end itemize")
     (license license:bsd-3)))
+
+(define-public python-eliot
+  (package
+    (name "python-eliot")
+    (version "1.12.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "eliot" version))
+       (sha256
+        (base32 "0wabv7hk63l12881f4zw02mmj06583qsx2im0yywdjlj8f56vqdn"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'remove-journald-support
+           (lambda _
+             (invoke "rm"
+                     "eliot/tests/test_journald.py"
+                     "eliot/journald.py")
+             #t))
+         (add-after 'remove-journald-support 'remove-eliot-prettyprint-tests
+           ;; remove command-line tool's tests. TODO eliot-prettyprint should
+           ;; be installed and these tests should pass.
+           (lambda _
+             (invoke "rm" "eliot/tests/test_prettyprint.py")
+             #t)))))
+    (propagated-inputs
+     `(("python-boltons" ,python-boltons)
+       ("python-pyrsistent" ,python-pyrsistent)
+       ("python-six" ,python-six)
+       ("python-zope-interface" ,python-zope-interface)))
+    (native-inputs
+     `(("python-black" ,python-black)
+       ("python-coverage" ,python-coverage)
+       ("python-dask" ,python-dask)
+       ("python-flake8" ,python-flake8)
+       ("python-hypothesis" ,python-hypothesis)
+       ("python-pytest" ,python-pytest)
+       ("python-setuptools" ,python-setuptools)
+       ("python-sphinx" ,python-sphinx)
+       ("python-sphinx-rtd-theme" ,python-sphinx-rtd-theme)
+       ("python-testtools" ,python-testtools)
+       ("python-twine" ,python-twine)
+       ("python-twisted" ,python-twisted)))
+    (home-page "https://github.com/itamarst/eliot/")
+    (synopsis "Eliot: the logging system that tells you why it happened")
+    (description
+     "@dfn{eliot} is a Python logging system that outputs causal chains of
+actions: actions can spawn other actions, and eventually they either succeed
+or fail. The resulting logs tell you the story of what your software did: what
+happened, and what caused it.")
+    (license license:asl2.0)))
-- 
2.25.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #12: 0011-gnu-Add-python-pem.patch --]
[-- Type: text/x-patch, Size: 1626 bytes --]

From fc0016250f0d1a2c0a3461ec819762c762090438 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Tue, 24 Mar 2020 19:49:10 -0500
Subject: [PATCH 11/16] gnu: Add python-pem.

* gnu/packages/python-xyz.scm: (python-pem) New variable.
---
 gnu/packages/python-xyz.scm | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index e2f78af00d..96150879c4 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -19015,3 +19015,28 @@ actions: actions can spawn other actions, and eventually they either succeed
 or fail. The resulting logs tell you the story of what your software did: what
 happened, and what caused it.")
     (license license:asl2.0)))
+
+(define-public python-pem
+  (package
+    (name "python-pem")
+    (version "20.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "pem" version))
+       (sha256
+        (base32
+         "1xh88ss279fprxnzd10dczmqwjhppbyvljm33zrg2mgybwd66qr7"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-certifi" ,python-certifi)
+       ("python-coverage" ,python-coverage)
+       ("python-pretend" ,python-pretend)
+       ("python-pyopenssl" ,python-pyopenssl)
+       ("python-pytest" ,python-pytest)
+       ("python-sphinx" ,python-sphinx)
+       ("python-twisted" ,python-twisted)))
+    (home-page "https://pem.readthedocs.io/")
+    (synopsis "Easy PEM file parsing in Python.")
+    (description "Easy PEM file parsing in Python.")
+    (license license:expat)))
-- 
2.25.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #13: 0012-gnu-Add-python-txsni.patch --]
[-- Type: text/x-patch, Size: 1525 bytes --]

From b257432434f38f47b875b7cb6f5fccd90b75693d Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Tue, 24 Mar 2020 19:49:55 -0500
Subject: [PATCH 12/16] gnu: Add python-txsni.

* gnu/packages/python-xyz.scm: (python-txsni) New variable.
---
 gnu/packages/python-xyz.scm | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 96150879c4..3ff5f4c60a 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -19040,3 +19040,28 @@ happened, and what caused it.")
     (synopsis "Easy PEM file parsing in Python.")
     (description "Easy PEM file parsing in Python.")
     (license license:expat)))
+
+(define-public python-txsni
+  (package
+    (name "python-txsni")
+    (version "0.1.9")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "TxSNI" version))
+       (sha256
+        (base32
+         "1c72nbhx4z0v5djb89yzrcqlmjdlyryj7qgwl9ivnn816126z5kj"))))
+    (build-system python-build-system)
+    (arguments
+     ;; TODO confusing test failure
+     `(#:tests? #f))
+    (propagated-inputs
+     `(("python-pyopenssl" ,python-pyopenssl)
+       ("python-service-identity" ,python-service-identity)
+       ("python-twisted" ,python-twisted)))
+    (home-page "https://github.com/glyph/txsni")
+    (synopsis "easy-to-use SNI endpoint for twisted")
+    (description
+     "easy-to-use SNI endpoint for twisted")
+    (license license:expat)))
-- 
2.25.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #14: 0013-gnu-Add-python-txacme.patch --]
[-- Type: text/x-patch, Size: 2280 bytes --]

From 11ce910f6e783f86773fea5bab18ba0c07dfbafb Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Sat, 29 Feb 2020 11:13:26 -0600
Subject: [PATCH 13/16] gnu: Add python-txacme.

* gnu/packages/python-xyz.scm (python-txacme): New variable.
---
 gnu/packages/python-xyz.scm | 42 +++++++++++++++++++++++++++++++++++++
 1 file changed, 42 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 3ff5f4c60a..2d4c82d6c3 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -19065,3 +19065,45 @@ happened, and what caused it.")
     (description
      "easy-to-use SNI endpoint for twisted")
     (license license:expat)))
+
+(define-public python-txacme
+  (package
+    (name "python-txacme")
+    (version "0.9.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "txacme" version))
+       (sha256
+        (base32 "1cplx4llq7i508w6fgwjdv9di7rsz9k9irfmzdfbiz6q6a0ykf1d"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-acme" ,python-acme)
+       ("python-attrs" ,python-attrs)
+       ("python-eliot" ,python-eliot)
+       ("python-josepy" ,python-josepy)
+       ("python-pem" ,python-pem)
+       ("python-treq" ,python-treq)
+       ("python-twisted" ,python-twisted)
+       ("python-txsni" ,python-txsni)))
+    (native-inputs
+    `(("python-fixtures" ,python-fixtures)
+      ("python-hypothesis" ,python-hypothesis)
+      ("python-mock" ,python-mock)
+      ("python-service-identity"
+       ,python-service-identity)
+      ("python-testrepository" ,python-testrepository)
+      ("python-testscenarios" ,python-testscenarios)
+      ("python-testtools" ,python-testtools)))
+    (home-page "https://github.com/twisted/txacme")
+    (synopsis
+     "Twisted implexmentation of the ACME protocol")
+    (description
+     "ACME is Automatic Certificate Management Environment, a protocol that
+allows clients and certificate authorities to automate verification and
+certificate issuance.  The ACME protocol is used by the free Let's Encrypt
+Certificate Authority.
+
+txacme is an implementation of the protocol for Twisted, the event-driven
+networking engine for Python.")
+    (license license:expat)))
-- 
2.25.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #15: 0014-gnu-Add-python-pysaml2.patch --]
[-- Type: text/x-patch, Size: 1636 bytes --]

From 0ae8b2347df79250c5e2e0f48f825875a218fb43 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Tue, 24 Mar 2020 19:38:36 -0500
Subject: [PATCH 14/16] gnu: Add python-pysaml2.

* gnu/packages/python-xyz.scm: (python-pysaml2) New variable.
---
 gnu/packages/python-xyz.scm | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 2d4c82d6c3..64e3b68821 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -19107,3 +19107,31 @@ Certificate Authority.
 txacme is an implementation of the protocol for Twisted, the event-driven
 networking engine for Python.")
     (license license:expat)))
+
+(define-public python-pysaml2
+  (package
+    (name "python-pysaml2")
+    (version "5.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "pysaml2" version))
+       (sha256
+        (base32
+         "1h8cmxh9cvxhrdfmkh92wg6zpxmhi2fixq1cy4hxismmaar7bsny"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-cryptography" ,python-cryptography)
+       ("python-dateutil" ,python-dateutil)
+       ("python-defusedxml" ,python-defusedxml)
+       ("python-pyopenssl" ,python-pyopenssl)
+       ("python-pytz" ,python-pytz)
+       ("python-requests" ,python-requests)
+       ("python-six" ,python-six)))
+    (home-page "https://idpy.org")
+    (synopsis
+     "Python implementation of SAML Version 2 Standard")
+    (description
+     "Python implementation of SAML Version 2 Standard")
+    (license license:asl2.0)))
+
-- 
2.25.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #16: 0015-gnu-Add-python-matrix-synapse-ldap3.patch --]
[-- Type: text/x-patch, Size: 2357 bytes --]

From 56d73f7249273da6b645aa1d4be38074f8d4ced4 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Sat, 29 Feb 2020 11:19:28 -0600
Subject: [PATCH 15/16] gnu: Add python-matrix-synapse-ldap3.

* gnu/packages/matrix.scm: New file. (python-matrix-synapse-ldap3) New
  variable.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add matrix.scm.
---
 gnu/local.mk            |  1 +
 gnu/packages/matrix.scm | 33 +++++++++++++++++++++++++++++++++
 2 files changed, 34 insertions(+)
 create mode 100644 gnu/packages/matrix.scm

diff --git a/gnu/local.mk b/gnu/local.mk
index 7d8145b10d..8c50da9c10 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -343,6 +343,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/marst.scm			\
   %D%/packages/mate.scm             \
   %D%/packages/maths.scm			\
+  %D%/packages/matrix.scm			\
   %D%/packages/maven.scm			\
   %D%/packages/mc.scm				\
   %D%/packages/mcrypt.scm			\
diff --git a/gnu/packages/matrix.scm b/gnu/packages/matrix.scm
new file mode 100644
index 0000000000..f399d2aabc
--- /dev/null
+++ b/gnu/packages/matrix.scm
@@ -0,0 +1,33 @@
+(define-module (gnu packages matrix)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (gnu packages python-crypto)
+  #:use-module (gnu packages python-xyz)
+  #:use-module (guix build-system python)
+  #:use-module (guix download)
+  #:use-module (guix packages))
+
+(define-public python-matrix-synapse-ldap3
+  (package
+    (name "python-matrix-synapse-ldap3")
+    (version "0.1.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "matrix-synapse-ldap3" version))
+       (sha256
+        (base32
+         "01bms89sl16nyh9f141idsz4mnhxvjrc3gj721wxh1fhikps0djx"))))
+    (build-system python-build-system)
+    (arguments
+     ;; tests require synapse, creating a circular dependency.
+     '(#:tests? #f))
+    (porpagated-inputs
+     `(("python-twisted" ,python-twisted)
+       ("python-ldap3" ,python-ldap3)
+       ("python-service-identity" ,python-service-identity)))
+    (home-page "https://github.com/matrix-org/matrix-synapse-ldap3")
+    (synopsis "LDAP3 auth provider for Synapse")
+    (description
+     "Allows synapse to use LDAP as a password provider.  This allows users to
+log in to synapse with their username and password from an LDAP server.")
+    (license license:asl2.0)))
-- 
2.25.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #17: 0016-gnu-Add-synapse.patch --]
[-- Type: text/x-patch, Size: 4195 bytes --]

From 737d69090c2c4d95ca9cb84468f756b0112f88a0 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Sat, 29 Feb 2020 11:22:06 -0600
Subject: [PATCH 16/16] gnu: Add synapse.

* gnu/packages/matrix.scm (synapse): New variable.
---
 gnu/packages/matrix.scm | 69 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 69 insertions(+)

diff --git a/gnu/packages/matrix.scm b/gnu/packages/matrix.scm
index f399d2aabc..0b56c66bbb 100644
--- a/gnu/packages/matrix.scm
+++ b/gnu/packages/matrix.scm
@@ -1,7 +1,11 @@
 (define-module (gnu packages matrix)
   #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (gnu packages check)
+  #:use-module (gnu packages databases)
   #:use-module (gnu packages python-crypto)
+  #:use-module (gnu packages python-web)
   #:use-module (gnu packages python-xyz)
+  #:use-module (gnu packages xml)
   #:use-module (guix build-system python)
   #:use-module (guix download)
   #:use-module (guix packages))
@@ -31,3 +35,68 @@
      "Allows synapse to use LDAP as a password provider.  This allows users to
 log in to synapse with their username and password from an LDAP server.")
     (license license:asl2.0)))
+
+(define-public synapse
+  (package
+    (name "synapse")
+    (version "1.11.0")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "matrix-synapse" version))
+              (sha256
+               (base32
+                "0cqbwcz0fi4w413s1kcxvf696qi4n46n1k4ggnygqri5yq26qlfy"))))
+    (build-system python-build-system)
+    ;; TODO I think there are custom tests
+    (propagated-inputs
+     `(("python-simplejson" ,python-simplejson) ; not attested but required
+       ;; requirements (synapse/python_dependencies.py)
+       ("python-jsonschema" ,python-jsonschema)
+       ("python-frozendict" ,python-frozendict)
+       ("python-unpaddedbase64" ,python-unpaddedbase64)
+       ("python-canonicaljson" ,python-canonicaljson)
+       ("python-signedjson" ,python-signedjson)
+       ("python-pynacl" ,python-pynacl)
+       ("python-idna" ,python-idna)
+       ("python-service-identity" ,python-service-identity)
+       ("python-twisted" ,python-twisted)
+       ("python-treq" ,python-treq)
+       ("python-pyopenssl" ,python-pyopenssl)
+       ("python-pyyaml" ,python-pyyaml)
+       ("python-pyasn1" ,python-pyasn1)
+       ("python-pyasn1-modules" ,python-pyasn1-modules)
+       ("python-daemonize" ,python-daemonize)
+       ("python-bcrypt" ,python-bcrypt)
+       ("python-pillow" ,python-pillow)
+       ("python-sortedcontainers" ,python-sortedcontainers)
+       ("python-pymacaroons" ,python-pymacaroons)
+       ("python-msgpack" ,python-msgpack)
+       ("python-phonenumbers" ,python-phonenumbers)
+       ("python-six" ,python-six)
+       ("python-prometheus-client" ,python-prometheus-client)
+       ("python-attrs" ,python-attrs)
+       ("python-netaddr" ,python-netaddr)
+       ("python-jinja2" ,python-jinja2)
+       ("python-bleach" ,python-bleach)
+       ("python-typing-extensions" ,python-typing-extensions)
+       ;; conditional requirements (synapse/python_dependencies.py)
+       ("python-matrix-synapse-ldap3" ,python-matrix-synapse-ldap3)
+       ("python-psycopg2" ,python-psycopg2)
+       ("python-jinja2" ,python-jinja2)
+       ("python-txacme" ,python-txacme)
+       ("python-pysaml2" ,python-pysaml2)
+       ("python-lxml" ,python-lxml)
+       ;; sentry-sdk, jaeger-client, and opentracing could be included, but
+       ;; all are monitoring aids and not essential.
+       ("python-pyjwt" ,python-pyjwt)))
+    (native-inputs
+     `(("python-mock" ,python-mock)
+       ("python-parameterized" ,python-parameterized)))
+    (home-page "https://github.com/matrix-org/synapse")
+    (synopsis "Matrix reference homeserver")
+    (description "Synapse is a reference \"homeserver\" implementation of
+Matrix from the core development team at matrix.org, written in
+Python/Twisted.  It is intended to showcase the concept of Matrix and let
+folks see the spec in the context of a codebase and let you run your own
+homeserver and generally help bootstrap the ecosystem.")
+    (license license:asl2.0)))
-- 
2.25.2


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* bug#39841: [WIP PATCH] synapse
  2020-03-30  0:35     ` Alex ter Weele
@ 2020-04-02 18:49       ` Marius Bakke
  0 siblings, 0 replies; 9+ messages in thread
From: Marius Bakke @ 2020-04-02 18:49 UTC (permalink / raw)
  To: Alex ter Weele; +Cc: 39841-done

[-- Attachment #1: Type: text/plain, Size: 8615 bytes --]

Phew...  It took a while, but I've merged the whole series.  \o/

PS: Some of the later packages did not pass 'guix lint'.  There were
periods in synopses, lack of period or capitalizations in descriptions
and other minor issues.

I've also modified some of the descriptions to be more ... descriptive,
and use full sentences, instead of just a copy-paste of the synopsis.

I added a 'Co-authored-by:' line for the packages that were heavily
modified to save you some of the blame.  ;-)

A brief feedback on the patches:

Alex ter Weele <alex.ter.weele@gmail.com> writes:

> +(define-public python-signedjson
> +  (package
> +    (name "python-signedjson")
> +    (version "1.1")
> +    (source
> +     (origin
> +       (method url-fetch)
> +       (uri (pypi-uri "signedjson" version))
> +       (sha256
> +        (base32 "13wfi50wzz38j6xsz7hmx26vf0zvk0fj7516wavzpsyfk9xy3g5v"))))
> +    (build-system python-build-system)
> +    (arguments
> +     ;; TODO "AttributeError: type object 'Callable' has no attribute
> +     ;; '_abc_registry'"
> +     `(#:tests? #f))

This was because of the inclusion of 'python-typing', which is part of
the Python standard library and apparently caused some conflict.
Removing it from propagated-inputs made all tests pass.

> +(define-public python-prometheus-client
> +  (package
> +    (name "python-prometheus-client")
> +    (version "0.7.1")
> +    (source
> +     (origin
> +       (method url-fetch)
> +       (uri (pypi-uri "prometheus_client" version))
> +       (sha256
> +        (base32 "1ni2yv4ixwz32nz39ckia76lvggi7m19y5f702w5qczbnfi29kbi"))))
> +    (build-system python-build-system)
> +    (arguments
> +     ;; TODO "ModuleNotFoundError: No module named 'tests'"
> +     `(#:tests? #f))

This is because the PyPI tarball contains no tests.  I adjusted the
comment to reflect that.

> +    (propagated-inputs
> +     `(("python-twisted" ,python-twisted)))
> +    (native-inputs
> +     `(("python-tox" ,python-tox)))

...and also removed Tox, as it is pretty useless in Guix.  Whenever you
come across a package that uses Tox, you should read what tox.ini does
and do that directly in the check phase instead.

(Running Tox does not work because it wants to go on the internet and
create a virtualenv and does not play well with native Guix packages)

> +(define-public python-ldap3
> +  (package
> +    (name "python-ldap3")
> +    (version "2.6.1")
> +    (source
> +     (origin
> +       (method url-fetch)
> +       (uri (pypi-uri "ldap3" version))
> +       (sha256
> +        (base32 "0ag5xqlki6pjk3f50b8ar8vynx2fmkna7rfampv3kdgwg8z6gjr7"))))
> +    (build-system python-build-system)
> +    (arguments
> +     ;; TODO "ImportError: Failed to import test module: ordDict"
> +     `(#:tests? #f))

There were two problems here: the pyasn1 version was too old, and
ultimately running the full suite requires an LDAP server, so I adjusted
the comment to reflect that (and also updated pyasn1 to prevent runtime
errors).

> +(define-public python-eliot
> +  (package
> +    (name "python-eliot")
> +    (version "1.12.0")
> +    (source
> +     (origin
> +       (method url-fetch)
> +       (uri (pypi-uri "eliot" version))
> +       (sha256
> +        (base32 "0wabv7hk63l12881f4zw02mmj06583qsx2im0yywdjlj8f56vqdn"))))
> +    (build-system python-build-system)
> +    (arguments
> +     `(#:phases
> +       (modify-phases %standard-phases
> +         (add-after 'unpack 'remove-journald-support
> +           (lambda _
> +             (invoke "rm"
> +                     "eliot/tests/test_journald.py"
> +                     "eliot/journald.py")
> +             #t))
> +         (add-after 'remove-journald-support 'remove-eliot-prettyprint-tests
> +           ;; remove command-line tool's tests. TODO eliot-prettyprint should
> +           ;; be installed and these tests should pass.
> +           (lambda _
> +             (invoke "rm" "eliot/tests/test_prettyprint.py")
> +             #t)))))

I changed the (invoke "rm" ...) stanzas to (delete-file ...) to avoid
the fork. 

> +(define-public python-pem
> +  (package
> +    (name "python-pem")
> +    (version "20.1.0")
> +    (source
> +     (origin
> +       (method url-fetch)
> +       (uri (pypi-uri "pem" version))
> +       (sha256
> +        (base32
> +         "1xh88ss279fprxnzd10dczmqwjhppbyvljm33zrg2mgybwd66qr7"))))
> +    (build-system python-build-system)
> +    (native-inputs
> +     `(("python-certifi" ,python-certifi)
> +       ("python-coverage" ,python-coverage)
> +       ("python-pretend" ,python-pretend)
> +       ("python-pyopenssl" ,python-pyopenssl)
> +       ("python-pytest" ,python-pytest)
> +       ("python-sphinx" ,python-sphinx)
> +       ("python-twisted" ,python-twisted)))
> +    (home-page "https://pem.readthedocs.io/")
> +    (synopsis "Easy PEM file parsing in Python.")
> +    (description "Easy PEM file parsing in Python.")

I'm curious why all those inputs are just native, but did not
investigate.  I did fix the trailing dot in the synopsis, as well as
expanded a bit on the description.

> +(define-public python-txsni
> +  (package
> +    (name "python-txsni")
> +    (version "0.1.9")
> +    (source
> +     (origin
> +       (method url-fetch)
> +       (uri (pypi-uri "TxSNI" version))
> +       (sha256
> +        (base32
> +         "1c72nbhx4z0v5djb89yzrcqlmjdlyryj7qgwl9ivnn816126z5kj"))))
> +    (build-system python-build-system)
> +    (arguments
> +     ;; TODO confusing test failure
> +     `(#:tests? #f))

So this turned out the be because the latest TxSNI release is
incompatible with newer OpenSSL.  I ended up pulling the package
straight from git, and made myself the package author.

> +    (propagated-inputs
> +     `(("python-pyopenssl" ,python-pyopenssl)
> +       ("python-service-identity" ,python-service-identity)
> +       ("python-twisted" ,python-twisted)))
> +    (home-page "https://github.com/glyph/txsni")
> +    (synopsis "easy-to-use SNI endpoint for twisted")
> +    (description
> +     "easy-to-use SNI endpoint for twisted")

...I also rewrote synopsis and description to be more Guix-y.

> +(define-public python-pysaml2
> +  (package
> +    (name "python-pysaml2")
> +    (version "5.0.0")
> +    (source
> +     (origin
> +       (method url-fetch)
> +       (uri (pypi-uri "pysaml2" version))
> +       (sha256
> +        (base32
> +         "1h8cmxh9cvxhrdfmkh92wg6zpxmhi2fixq1cy4hxismmaar7bsny"))))
> +    (build-system python-build-system)
> +    (propagated-inputs
> +     `(("python-cryptography" ,python-cryptography)
> +       ("python-dateutil" ,python-dateutil)
> +       ("python-defusedxml" ,python-defusedxml)
> +       ("python-pyopenssl" ,python-pyopenssl)
> +       ("python-pytz" ,python-pytz)
> +       ("python-requests" ,python-requests)
> +       ("python-six" ,python-six)))
> +    (home-page "https://idpy.org")
> +    (synopsis
> +     "Python implementation of SAML Version 2 Standard")
> +    (description
> +     "Python implementation of SAML Version 2 Standard")

Here I took the description from the README which was very informative.

> * gnu/packages/matrix.scm: New file. (python-matrix-synapse-ldap3) New
>   variable.
> * gnu/local.mk (GNU_SYSTEM_MODULES): Add matrix.scm.
> ---
>  gnu/local.mk            |  1 +
>  gnu/packages/matrix.scm | 33 +++++++++++++++++++++++++++++++++
>  2 files changed, 34 insertions(+)
>  create mode 100644 gnu/packages/matrix.scm
>
> diff --git a/gnu/local.mk b/gnu/local.mk
> index 7d8145b10d..8c50da9c10 100644
> --- a/gnu/local.mk
> +++ b/gnu/local.mk
> @@ -343,6 +343,7 @@ GNU_SYSTEM_MODULES =				\
>    %D%/packages/marst.scm			\
>    %D%/packages/mate.scm             \
>    %D%/packages/maths.scm			\
> +  %D%/packages/matrix.scm			\
>    %D%/packages/maven.scm			\
>    %D%/packages/mc.scm				\
>    %D%/packages/mcrypt.scm			\
> diff --git a/gnu/packages/matrix.scm b/gnu/packages/matrix.scm
> new file mode 100644
> index 0000000000..f399d2aabc
> --- /dev/null
> +++ b/gnu/packages/matrix.scm
> @@ -0,0 +1,33 @@
> +(define-module (gnu packages matrix)
> +  #:use-module ((guix licenses) #:prefix license:)
> +  #:use-module (gnu packages python-crypto)
> +  #:use-module (gnu packages python-xyz)
> +  #:use-module (guix build-system python)
> +  #:use-module (guix download)
> +  #:use-module (guix packages))

You forgot to add the license notice at the top of this file.  Fixed!

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2020-04-02 18:51 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-02-29 17:53 [bug#39841] [WIP PATCH] synapse Alex ter Weele
2020-02-29 19:12 ` Alex ter Weele
2020-02-29 19:14   ` Alex ter Weele
2020-03-28 22:22     ` Alex ter Weele
2020-03-29 20:03 ` Marius Bakke
2020-03-30  0:28   ` Alex ter Weele
2020-03-30  0:35     ` Alex ter Weele
2020-04-02 18:49       ` bug#39841: " Marius Bakke
2020-03-30  0:42     ` [bug#39841] " Alex ter Weele

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.