GNU bug report logs - #39841
[WIP PATCH] synapse

Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.

Package: guix-patches; Reported by: Alex ter Weele <alex.ter.weele@HIDDEN>; Keywords: patch; dated Sat, 29 Feb 2020 17:54:01 UTC; Maintainer for guix-patches is guix-patches@HIDDEN.

Message received at 39841 <at> debbugs.gnu.org:


Received: (at 39841) by debbugs.gnu.org; 30 Mar 2020 02:35:33 +0000
From alex.ter.weele@HIDDEN Sat Mar 28 18:22:14 2020
Received: from mail-qt1-f196.google.com ([209.85.160.196]:43250)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <alex.ter.weele@HIDDEN>) id 1jIJqF-0001JP-G5
 for 39841 <at> debbugs.gnu.org; Sat, 28 Mar 2020 18:22:14 -0400
Received: by mail-qt1-f196.google.com with SMTP id a5so11913163qtw.10
 for <39841 <at> debbugs.gnu.org>; Sat, 28 Mar 2020 15:22:11 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=from:to:cc:subject:references:date:in-reply-to:message-id
 :user-agent:mime-version;
 bh=knCtt5i1tkwB2HaocpcYPtW5JmO8s89tGJo1tDLiO9g=;
 b=AslmwUZslHvcVWex5B7D6VLVPNGQp8HFT9WqQiCih0zm0JFkim5+NcTyFJE+LQTw96
 miv1hBXNtUKXdLS0dvddCTvf8GCGblj7L8hQ8MaIQ5NDbY1VQ93Sc93kNWgJW9u4BtQZ
 wNDNlJO+5l/25Y2H7KjrkaMcrCCYKkTKJQ/IHeG5PA+A9inenz/YZytyslxp3OWJHrvu
 i/W0kpee+oTdeD+WW6PUtmsfNQq2rluoIjreyrq/KdTtO8d8a+vgZS6JihJ5MgGRWa4J
 50qrQs49KwUf4Z6gyZdGJ7+mbgbowIDT9ncwqTFOVcMzHIW41m63b2vr/pCF1Bk6sSkM
 Q0AQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to
 :message-id:user-agent:mime-version;
 bh=knCtt5i1tkwB2HaocpcYPtW5JmO8s89tGJo1tDLiO9g=;
 b=OIESasWM81mziIJtu0/e2PMr3MYOOQE4Q7Z+kUxcnyZZgBKPBs1kRNenqzcj/QZuRO
 7pnRcPjMjH1W8Y56hURh39AkplFCD5yUNNy9VcwZma3+tGt4Dzaddt+tjDnDqzOIvM4l
 pffMhqeNtfV9D+WF3vjpcWB2+CabZO+ULcEtkYXZk4GVnQkwB0U+HT6DRNUNvPdNyqKi
 CuPI14xMJVfn6uswx2plypSpSwARznGz4AkvaL4sdwbYWuGQ8uI+QdHWWxai7Lkf65ME
 KS6V/H4i5IkrM3y9dYK8IVbh/YWN4odHYbfGZX0A/7Myeg+D6T9o7B6hoT+3HNy6FUst
 UXvA==
X-Gm-Message-State: ANhLgQ0DaDHruQrz8vMV+r/7ACPO3h2mVTpJ2TC4QjTgNZRRqDxwwZqG
 s24i9kGSVbi50gNHlU3pbXN/LMZT
X-Google-Smtp-Source: ADFU+vt3FyKVphLJehRgL5omTOxU6Xd7ezAE5A4lDruShM60pAcNd590yoGZqB+UPZkNGTlVViRqNQ==
X-Received: by 2002:ac8:fe9:: with SMTP id f38mr5658249qtk.130.1585434124889; 
 Sat, 28 Mar 2020 15:22:04 -0700 (PDT)
Received: from librem (24.115.110.176.res-cmts.mlf.ptd.net. [24.115.110.176])
 by smtp.gmail.com with ESMTPSA id
 k18sm453927qkh.46.2020.03.28.15.22.03
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Sat, 28 Mar 2020 15:22:03 -0700 (PDT)
From: Alex ter Weele <alex.ter.weele@HIDDEN>
X-Google-Original-From: Alex ter Weele
 <alex@HIDDEN>
To: Alex ter Weele <alex.ter.weele@HIDDEN>
Cc: 39841 <at> debbugs.gnu.org
Subject: Re: [bug#39841] [WIP PATCH] synapse
References: <87tv39nuv4.fsf@HIDDEN>
 <87o8thtdg3.fsf@HIDDEN>
 <87k145tddg.fsf@HIDDEN>
Date: Sat, 28 Mar 2020 17:22:02 -0500
In-Reply-To: <87k145tddg.fsf@HIDDEN>
 (Alex ter Weele's message of "Sat, 29 Feb 2020 13:14:19 -0600")
Message-ID: <87a740yvat.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.3 (gnu/linux)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 39841
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
X-List-Received-Date: Sat, 28 Mar 2020 22:22:15 -0000

--=-=-=
Content-Type: text/plain

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.


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=0001-gnu-python-typing-extensions-Update-to-3.7.4.1.patch

>From 333a46d0f0317a29ed1ff33b673f511537bc0233 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=0002-gnu-Add-python-frozendict.patch

>From 32800f04102e53acadf9fdd06b7e263c75c35534 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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


--=-=-=
Content-Type: text/x-patch; charset=utf-8
Content-Disposition: attachment;
 filename=0003-gnu-Add-python-unpaddedbase64.patch
Content-Transfer-Encoding: quoted-printable

>From 1372123f8ba023cfbe3c34610c0bb8efa70f6467 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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 =E2=80=9C=3D=E2=80=9D padd=
ing")
+    (description
+     "RFC 4648 specifies that Base64 should be padded to a multiple of 4 b=
ytes
+using =E2=80=9C=3D=E2=80=9D characters.  However this conveys no benefit s=
o many protocols
+choose to use Base64 without the =E2=80=9C=3D=E2=80=9D padding.")
+    (license license:asl2.0)))
--=20
2.25.2


--=-=-=
Content-Type: text/x-patch; charset=utf-8
Content-Disposition: attachment;
 filename=0004-gnu-Add-python-canonicaljson.patch
Content-Transfer-Encoding: quoted-printable

>From 45f8e99a585463c92bc02bcf81683c3184f663f5 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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 =E2=80=9C=3D=E2=80=9D characters.  However this conveys no benefit s=
o many protocols
 choose to use Base64 without the =E2=80=9C=3D=E2=80=9D 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 possi=
ble.
+@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)))
--=20
2.25.2


--=-=-=
Content-Type: text/x-patch; charset=utf-8
Content-Disposition: attachment;
 filename=0005-gnu-Add-python-signedjson.patch
Content-Transfer-Encoding: quoted-printable

>From 4945c826db27840dc0157cc14d5aba583ec45164 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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 =E2=80=9C=3D=E2=
=80=9D 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 eas=
ier to
+rotate keys
+@item ED25519 can be replaced with a different algorithm.
+@item Unprotected data can be added to the object under the @dfn{\"unsigne=
d\"}
+key.
+@end itemize")
+    (license license:asl2.0)))
--=20
2.25.2


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=0006-gnu-Add-python-daemonize.patch

>From c7e1b8d06f308787239ea9857738caec05c5b369 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=0007-gnu-Add-python-pymacaroons.patch

>From 6065dcd69856aee9de073b6ad4b6d545b7f3e16c Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=0008-gnu-Add-python-prometheus-client.patch

>From 2722ce29a52b99d42205be476fa133cac75385ce Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment; filename=0009-gnu-Add-python-ldap3.patch

>From 475ebc3de9557456da67a824d3f68aa579a4d0ad Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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


--=-=-=
Content-Type: text/x-patch; charset=utf-8
Content-Disposition: attachment; filename=0010-gnu-Add-python-boltons.patch
Content-Transfer-Encoding: quoted-printable

>From 45f5731eb7b2e14e06c99427b5831eef1394a8dc Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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 =E2=80=94 and yet conspicuously missing from =E2=80=94 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)))
--=20
2.25.2


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment; filename=0011-gnu-Add-python-eliot.patch

>From e9b95095fd03956aeb4f7814d7a268f67ed38707 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment; filename=0012-gnu-Add-python-pem.patch

>From 9f89671dcb4932aedc0ea38a28b7b95c3458e9ee Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment; filename=0013-gnu-Add-python-txsni.patch

>From 850fd6dc4c9a5149718916441fe775913ca9d17c Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment; filename=0014-gnu-Add-python-txacme.patch

>From ca6ec637b59fca634b1f826b93557a2316096c09 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment; filename=0015-gnu-Add-python-pysaml2.patch

>From a0a9b1418301e22a3c5c260c4bd62c4be952b5e2 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=0016-gnu-Add-python-matrix-synapse-ldap3.patch

>From b9644bb5c73c0162c13ef736e33305e11de38644 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment; filename=0017-gnu-Add-synapse.patch

>From b82005d735c4c14cf8686004ea683512a098b0b0 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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


--=-=-=--




Information forwarded to guix-patches@HIDDEN:
bug#39841; Package guix-patches. Full text available.

Message received at 39841 <at> debbugs.gnu.org:


Received: (at 39841) by debbugs.gnu.org; 30 Mar 2020 00:42:26 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Mar 29 20:42:26 2020
Received: from localhost ([127.0.0.1]:60092 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1jIiVO-0001Mw-K4
	for submit <at> debbugs.gnu.org; Sun, 29 Mar 2020 20:42:26 -0400
Received: from mail-qt1-f193.google.com ([209.85.160.193]:34245)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <alex.ter.weele@HIDDEN>) id 1jIiVL-0001Mb-HS
 for 39841 <at> debbugs.gnu.org; Sun, 29 Mar 2020 20:42:18 -0400
Received: by mail-qt1-f193.google.com with SMTP id 10so13792897qtp.1
 for <39841 <at> debbugs.gnu.org>; Sun, 29 Mar 2020 17:42:15 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=from:to:cc:subject:references:date:in-reply-to:message-id
 :user-agent:mime-version;
 bh=wIQ33a7atd7Sj1tAGR00gvd2FMJzkS1qFXCWAoE7QxQ=;
 b=rMrxBLuTUanzoEa2aCaCN56mcfWX25i7XN/JsRJ5uA4qx94EolOy/aYfjq0RUIN+lw
 xCsxL4kCLUyEesotBzYlPy9MpuDQ+anXgUiYG456eclp7WxYXaNYZKiLP9gK6AONAZBO
 fWUznWoiNJasMn9AEuH/EnDlW9zv95PUO4SaNA+ke2DhpEqpm7nK27n5MI7nj4vC8rOR
 6WNB5BIUH4GFVwnUEq6M9uysNzZ1AQHhjuX6gbmo4EgXX/H7LxWDA3atRg2j12k/ozfN
 30yV8KJ1fKaDK9TNvvALgKNnUjRNGFqVTQDq/AuhSlz0NcuyNO8QukWO9tAnaED5wUE5
 dFOA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to
 :message-id:user-agent:mime-version;
 bh=wIQ33a7atd7Sj1tAGR00gvd2FMJzkS1qFXCWAoE7QxQ=;
 b=PnWnZX3wVVpnwN2jp+uBUbTVqIV3W+Kn34MY0gZV15dWOQSyb5Z0gOligayBuofTA6
 XxZ1y4Nr8lSbN8wSeuG7o82xqckNTZsjwYymvQtu3fUWqFLmasS+Yw5219nlAWlTqNq+
 UDyA/QUMcMdll2igHNMdc0/6JNkUmKXH7etv4CeVR8RWHSHDHbML9pZdybkoMgOONaZn
 9TBvXISxGc+9d56a3vsQIuhgnSbrKhkYzY/YS4HepPFT4sYxxIicW47fgh0/RmnSxDwG
 1cA6ROTmoRUFfVoEkHXCW3s64ZLi1H3jxH9Chon9rxyh6Cv5ePfrKIH36qEfRVpKVr+8
 X4JA==
X-Gm-Message-State: ANhLgQ2A/cKNTabfD6svX44jkbL70tkOYhL1XFLbkU14RybwymZTa6mB
 toAd0f60KEXSujX0VL5neFqdXte/
X-Google-Smtp-Source: ADFU+vuOxa0nPzDKvCZ3H/lKxHj9te/wa6UvJQ3bCioyLIawQAN47jIOAvLQuVehRPeI21tixJT43w==
X-Received: by 2002:ac8:340d:: with SMTP id u13mr9686455qtb.235.1585528929725; 
 Sun, 29 Mar 2020 17:42:09 -0700 (PDT)
Received: from librem (24.115.110.176.res-cmts.mlf.ptd.net. [24.115.110.176])
 by smtp.gmail.com with ESMTPSA id
 v19sm9854376qtb.67.2020.03.29.17.42.08
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Sun, 29 Mar 2020 17:42:08 -0700 (PDT)
From: Alex ter Weele <alex.ter.weele@HIDDEN>
X-Google-Original-From: Alex ter Weele
 <alex@HIDDEN>
To: Marius Bakke <mbakke@HIDDEN>
Subject: Re: [bug#39841] [WIP PATCH] synapse
References: <87tv39nuv4.fsf@HIDDEN>
 <87o8sfvsht.fsf@HIDDEN>
 <87pncuy9c2.fsf@HIDDEN>
Date: Sun, 29 Mar 2020 20:42:08 -0400
In-Reply-To: <87pncuy9c2.fsf@HIDDEN>
 (Alex ter Weele's message of "Sun, 29 Mar 2020 20:28:45 -0400")
Message-ID: <87eetay8pr.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.3 (gnu/linux)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 39841
Cc: 39841 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

--=-=-=
Content-Type: text/plain

Alex ter Weele <alex.ter.weele@HIDDEN> writes:

> Marius Bakke <mbakke@HIDDEN> writes:
>
>> Alex ter Weele <alex.ter.weele@HIDDEN> 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


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=0001-gnu-Add-python-frozendict.patch

From 4f5271954642ffa9d4abda51b8be6c0e0ed66ca7 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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


--=-=-=
Content-Type: text/x-patch; charset=utf-8
Content-Disposition: attachment;
 filename=0002-gnu-Add-python-unpaddedbase64.patch
Content-Transfer-Encoding: quoted-printable

From 907fa11b8309843e6e6915e65496142d4597b071 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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 =E2=80=9C=3D=E2=80=9D padd=
ing")
+    (description
+     "RFC 4648 specifies that Base64 should be padded to a multiple of 4 b=
ytes
+using =E2=80=9C=3D=E2=80=9D characters.  However this conveys no benefit s=
o many protocols
+choose to use Base64 without the =E2=80=9C=3D=E2=80=9D padding.")
+    (license license:asl2.0)))
--=20
2.25.2


--=-=-=
Content-Type: text/x-patch; charset=utf-8
Content-Disposition: attachment;
 filename=0003-gnu-Add-python-canonicaljson.patch
Content-Transfer-Encoding: quoted-printable

From 58d8abab399b4a56c8b0058bab90edc19d92a2a6 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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 =E2=80=9C=3D=E2=80=9D characters.  However this conveys no benefit s=
o many protocols
 choose to use Base64 without the =E2=80=9C=3D=E2=80=9D 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 possi=
ble.
+@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)))
--=20
2.25.2


--=-=-=
Content-Type: text/x-patch; charset=utf-8
Content-Disposition: attachment;
 filename=0004-gnu-Add-python-signedjson.patch
Content-Transfer-Encoding: quoted-printable

From 64c20964e4ac4ddc5cd58a0e3da3c1e8fa538fee Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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 =E2=80=9C=3D=E2=
=80=9D 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 eas=
ier to
+rotate keys
+@item ED25519 can be replaced with a different algorithm.
+@item Unprotected data can be added to the object under the @dfn{\"unsigne=
d\"}
+key.
+@end itemize")
+    (license license:asl2.0)))
--=20
2.25.2


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=0005-gnu-Add-python-daemonize.patch

From 61ca5e708307bf4febad635a513fa8b685d70f67 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=0006-gnu-Add-python-pymacaroons.patch

From c63dc12a55fc1fc925dbac294dedf0d1c63d3759 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=0007-gnu-Add-python-prometheus-client.patch

From 1a923dc1a6e8fbc15bd66655db872965786f45b1 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment; filename=0008-gnu-Add-python-ldap3.patch

From f56af1a76217dba56249aff64559e228d68218bf Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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


--=-=-=
Content-Type: text/x-patch; charset=utf-8
Content-Disposition: attachment; filename=0009-gnu-Add-python-boltons.patch
Content-Transfer-Encoding: quoted-printable

From 2cc8719b50b8c1618f4b36792155a242aa823e84 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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 =E2=80=94 and yet conspicuously missing from =E2=80=94 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)))
--=20
2.25.2


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment; filename=0010-gnu-Add-python-eliot.patch

From 278750c17316101616815f69bfa878e8d1105166 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment; filename=0011-gnu-Add-python-pem.patch

From fc0016250f0d1a2c0a3461ec819762c762090438 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment; filename=0012-gnu-Add-python-txsni.patch

From b257432434f38f47b875b7cb6f5fccd90b75693d Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment; filename=0013-gnu-Add-python-txacme.patch

From 11ce910f6e783f86773fea5bab18ba0c07dfbafb Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment; filename=0014-gnu-Add-python-pysaml2.patch

From 0ae8b2347df79250c5e2e0f48f825875a218fb43 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=0015-gnu-Add-python-matrix-synapse-ldap3.patch

From 56d73f7249273da6b645aa1d4be38074f8d4ced4 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment; filename=0016-gnu-Add-synapse.patch

From 737d69090c2c4d95ca9cb84468f756b0112f88a0 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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


--=-=-=--




Information forwarded to guix-patches@HIDDEN:
bug#39841; Package guix-patches. Full text available.

Message received at 39841 <at> debbugs.gnu.org:


Received: (at 39841) by debbugs.gnu.org; 30 Mar 2020 00:36:07 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Mar 29 20:36:06 2020
Received: from localhost ([127.0.0.1]:60084 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1jIiPH-0001CW-2j
	for submit <at> debbugs.gnu.org; Sun, 29 Mar 2020 20:36:06 -0400
Received: from mail-qk1-f195.google.com ([209.85.222.195]:45846)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <alex.ter.weele@HIDDEN>) id 1jIiPD-0001CG-2S
 for 39841 <at> debbugs.gnu.org; Sun, 29 Mar 2020 20:35:58 -0400
Received: by mail-qk1-f195.google.com with SMTP id c145so17302826qke.12
 for <39841 <at> debbugs.gnu.org>; Sun, 29 Mar 2020 17:35:55 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=from:to:cc:subject:references:date:in-reply-to:message-id
 :user-agent:mime-version;
 bh=i7OmvTq2HkwhpsW/61BuLctzlg0N0W00rTT1oGkijKg=;
 b=vSc/wTRx3D2gOsPrj4qNi+x9QcdfV/HETKDrsO26jd5wC4B4tIPzR8H1K/23+xnMA7
 8QDyLp3/64yvK9s4ESSqWitMXkgonqJrmb9kItMqXdMKrfURGQdFMRiS0l1lnhLLwaRE
 RlwJ4nrhxcf1ql5T/ah74bhHr92aznfOzj+Rw0/4flVq6b34j1mYzpBU2uyx5CvKslJK
 5PW153cJOZWyX3s5M/OwSBi8RAgVmbrB9sVpVvkyjGJgLaRuIjTRKm8qku5QvS9g/2Wx
 xbBzuAmLfemzEUILtUYwHHAZqtdgzNmp5vwxKMWtNs9ImvM8+CY/FupubQDWN9yGcCoz
 IwYw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to
 :message-id:user-agent:mime-version;
 bh=i7OmvTq2HkwhpsW/61BuLctzlg0N0W00rTT1oGkijKg=;
 b=enaeid9FzPc7h8zTOzJRPqdVRk6fQGUBkogCJn871AZNy2MS76oVmXoypYTMdFplO2
 B0Ud3vvN/ExurQm7jpw4xlGFFWqKW5aI3H5qFYsZylmE0BkBrca8e9U/l+FRIEmcBLad
 FWq1O6+gFC5JoEqCMU+aQP36+4Z5tpSAitbYSDlkPklux9vjvRgUYYD1VCtPNbNozvRX
 k3Bf/PpJHDjMcLMs5peZVTw+nuQ1zkxXDnoUATWbf534xr2D2czgs37Hopr8xON9E0rW
 qB7KDfb/BmvvGD2HpPR8pcGThVPkYlyuOvksKlaVDpEQfFCu/PIpL3YT8WAXKqfoLVwW
 hmsQ==
X-Gm-Message-State: ANhLgQ2mx4n5/D+Uar82Y84SGCXyHx/wkBsjcZGsJvzX9xRhDlrycC68
 rZQ7Fl292pvLjMox9vf7wzl4U2V2
X-Google-Smtp-Source: ADFU+vuuWUswoKtTVZKoSkoKjCxwnXzVBoesEe2IKoBaD/RoFTdAZhCV2Uq0cH1qZ32OY7kKHoQhQg==
X-Received: by 2002:a37:2d83:: with SMTP id t125mr9762856qkh.359.1585528549251; 
 Sun, 29 Mar 2020 17:35:49 -0700 (PDT)
Received: from librem (24.115.110.176.res-cmts.mlf.ptd.net. [24.115.110.176])
 by smtp.gmail.com with ESMTPSA id
 k18sm2873108qkh.46.2020.03.29.17.35.47
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Sun, 29 Mar 2020 17:35:48 -0700 (PDT)
From: Alex ter Weele <alex.ter.weele@HIDDEN>
X-Google-Original-From: Alex ter Weele
 <alex@HIDDEN>
To: Marius Bakke <mbakke@HIDDEN>
Subject: Re: [bug#39841] [WIP PATCH] synapse
References: <87tv39nuv4.fsf@HIDDEN>
 <87o8sfvsht.fsf@HIDDEN>
 <87pncuy9c2.fsf@HIDDEN>
Date: Sun, 29 Mar 2020 20:35:47 -0400
In-Reply-To: <87pncuy9c2.fsf@HIDDEN>
 (Alex ter Weele's message of "Sun, 29 Mar 2020 20:28:45 -0400")
Message-ID: <87imimy90c.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.3 (gnu/linux)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 39841
Cc: 39841 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

--=-=-=
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

Alex ter Weele <alex.ter.weele@HIDDEN> writes:

> Marius Bakke <mbakke@HIDDEN> writes:
>
>> Alex ter Weele <alex.ter.weele@HIDDEN> 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 =F0=9F=A4=A6


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=0001-gnu-Add-python-frozendict.patch

From 4f5271954642ffa9d4abda51b8be6c0e0ed66ca7 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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


--=-=-=
Content-Type: text/x-patch; charset=utf-8
Content-Disposition: attachment;
 filename=0002-gnu-Add-python-unpaddedbase64.patch
Content-Transfer-Encoding: quoted-printable

From 907fa11b8309843e6e6915e65496142d4597b071 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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 =E2=80=9C=3D=E2=80=9D padd=
ing")
+    (description
+     "RFC 4648 specifies that Base64 should be padded to a multiple of 4 b=
ytes
+using =E2=80=9C=3D=E2=80=9D characters.  However this conveys no benefit s=
o many protocols
+choose to use Base64 without the =E2=80=9C=3D=E2=80=9D padding.")
+    (license license:asl2.0)))
--=20
2.25.2


--=-=-=
Content-Type: text/x-patch; charset=utf-8
Content-Disposition: attachment;
 filename=0003-gnu-Add-python-canonicaljson.patch
Content-Transfer-Encoding: quoted-printable

From 58d8abab399b4a56c8b0058bab90edc19d92a2a6 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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 =E2=80=9C=3D=E2=80=9D characters.  However this conveys no benefit s=
o many protocols
 choose to use Base64 without the =E2=80=9C=3D=E2=80=9D 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 possi=
ble.
+@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)))
--=20
2.25.2


--=-=-=
Content-Type: text/x-patch; charset=utf-8
Content-Disposition: attachment;
 filename=0004-gnu-Add-python-signedjson.patch
Content-Transfer-Encoding: quoted-printable

From 64c20964e4ac4ddc5cd58a0e3da3c1e8fa538fee Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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 =E2=80=9C=3D=E2=
=80=9D 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 eas=
ier to
+rotate keys
+@item ED25519 can be replaced with a different algorithm.
+@item Unprotected data can be added to the object under the @dfn{\"unsigne=
d\"}
+key.
+@end itemize")
+    (license license:asl2.0)))
--=20
2.25.2


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=0005-gnu-Add-python-daemonize.patch

From 61ca5e708307bf4febad635a513fa8b685d70f67 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=0006-gnu-Add-python-pymacaroons.patch

From c63dc12a55fc1fc925dbac294dedf0d1c63d3759 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=0007-gnu-Add-python-prometheus-client.patch

From 1a923dc1a6e8fbc15bd66655db872965786f45b1 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment; filename=0008-gnu-Add-python-ldap3.patch

From f56af1a76217dba56249aff64559e228d68218bf Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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


--=-=-=
Content-Type: text/x-patch; charset=utf-8
Content-Disposition: attachment; filename=0009-gnu-Add-python-boltons.patch
Content-Transfer-Encoding: quoted-printable

From 2cc8719b50b8c1618f4b36792155a242aa823e84 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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 =E2=80=94 and yet conspicuously missing from =E2=80=94 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)))
--=20
2.25.2


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment; filename=0010-gnu-Add-python-eliot.patch

From 278750c17316101616815f69bfa878e8d1105166 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment; filename=0011-gnu-Add-python-pem.patch

From fc0016250f0d1a2c0a3461ec819762c762090438 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment; filename=0012-gnu-Add-python-txsni.patch

From b257432434f38f47b875b7cb6f5fccd90b75693d Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment; filename=0013-gnu-Add-python-txacme.patch

From 11ce910f6e783f86773fea5bab18ba0c07dfbafb Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment; filename=0014-gnu-Add-python-pysaml2.patch

From 0ae8b2347df79250c5e2e0f48f825875a218fb43 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=0015-gnu-Add-python-matrix-synapse-ldap3.patch

From 56d73f7249273da6b645aa1d4be38074f8d4ced4 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment; filename=0016-gnu-Add-synapse.patch

From 737d69090c2c4d95ca9cb84468f756b0112f88a0 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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


--=-=-=--




Information forwarded to guix-patches@HIDDEN:
bug#39841; Package guix-patches. Full text available.

Message received at 39841 <at> debbugs.gnu.org:


Received: (at 39841) by debbugs.gnu.org; 30 Mar 2020 00:28:54 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Mar 29 20:28:54 2020
Received: from localhost ([127.0.0.1]:60080 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1jIiIQ-000103-Aq
	for submit <at> debbugs.gnu.org; Sun, 29 Mar 2020 20:28:54 -0400
Received: from mail-qt1-f194.google.com ([209.85.160.194]:36924)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <alex.ter.weele@HIDDEN>) id 1jIiIO-0000zp-Dm
 for 39841 <at> debbugs.gnu.org; Sun, 29 Mar 2020 20:28:52 -0400
Received: by mail-qt1-f194.google.com with SMTP id z24so12529077qtu.4
 for <39841 <at> debbugs.gnu.org>; Sun, 29 Mar 2020 17:28:52 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=from:to:cc:subject:references:date:in-reply-to:message-id
 :user-agent:mime-version;
 bh=/IGW2TbI9hiSamC145vEgshJCuaNKDeTZPylGU2yVtg=;
 b=qSqcqj9DQzbB5xP9gU+UYkE1PqT5nm0K1KkvTU+bl9dhynLmyAFeNT+/KcHz+BxncS
 mqrixIe2h2NGjPITM90LOdumMnAo/Yf2cA5GiT287aqBK+Vjpdynbsy/ddHsufh3Agdr
 HvmQvQHSAfNxsZnm7hsUvpHP8NOMmvsMeDeWC6/KN0hM5iUKhS6fFje2o6Zy28pSVJUD
 F7CHkHQ9Vqm0zI7+fxc7WRvGamJZaqyCMEagMSyBhW8p/9rcud9FqweAsmadfn43I6Cl
 lLR8MhieaITyQfW0+eolMvjyfR92bRxvPEIciRkErXThqNshBFAFvORH2BlutTve0VF2
 5ONA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to
 :message-id:user-agent:mime-version;
 bh=/IGW2TbI9hiSamC145vEgshJCuaNKDeTZPylGU2yVtg=;
 b=TdS+aW2ZgQuozT+JeoX5esN82/FJ3ZUvETcJj3LzspKyQ3cs8ErQ56X61MwRLOGu51
 wynMHVQUcV4dpVc3bOV9qT8TeYQGZhS1Feej4d1b9BA2QuFchWpTUWpZ5nrtsBl5SMzW
 7BY+EWi6o5GgxkEUkXHAC0k6GpH4UzhwHZ7k83Gd8vyUI0NSdwsMXg914uVbosUqOMCn
 7eQGOnw43wZcU8kd4TMTuf6chOey/k0TAxF7q7wrI2l9bNVkdTEuVI1CNEeXdBXVkKVn
 w+SsM/h2m2t63aqUOA775U07kyCmkYvHIT+XhBqOoClsEAXtwre9slm3r0kIi+m/SzNG
 9h9A==
X-Gm-Message-State: ANhLgQ2xD1PhKXmHgQACOKhC+OrhfF81VUZmFnpUExwyB4ZILEjEfuj5
 T5glfB25KNSjZzTUGCLDTQDAvkax
X-Google-Smtp-Source: ADFU+vtq9qHsI3s4n0j7VxFDRumPAo/jrxPp0AWKxYHDtR8GELhKi4dnfvCsY8JiZupsMvJHVFUZAg==
X-Received: by 2002:ac8:17f9:: with SMTP id r54mr9490874qtk.285.1585528126618; 
 Sun, 29 Mar 2020 17:28:46 -0700 (PDT)
Received: from librem (24.115.110.176.res-cmts.mlf.ptd.net. [24.115.110.176])
 by smtp.gmail.com with ESMTPSA id
 u51sm9775505qth.46.2020.03.29.17.28.45
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Sun, 29 Mar 2020 17:28:46 -0700 (PDT)
From: Alex ter Weele <alex.ter.weele@HIDDEN>
X-Google-Original-From: Alex ter Weele
 <alex@HIDDEN>
To: Marius Bakke <mbakke@HIDDEN>
Subject: Re: [bug#39841] [WIP PATCH] synapse
References: <87tv39nuv4.fsf@HIDDEN>
 <87o8sfvsht.fsf@HIDDEN>
Date: Sun, 29 Mar 2020 20:28:45 -0400
In-Reply-To: <87o8sfvsht.fsf@HIDDEN> (Marius Bakke's message of "Sun, 29 Mar
 2020 22:03:10 +0200")
Message-ID: <87pncuy9c2.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.3 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 39841
Cc: 39841 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Marius Bakke <mbakke@HIDDEN> writes:

> Alex ter Weele <alex.ter.weele@HIDDEN> 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!




Information forwarded to guix-patches@HIDDEN:
bug#39841; Package guix-patches. Full text available.

Message received at 39841 <at> debbugs.gnu.org:


Received: (at 39841) by debbugs.gnu.org; 29 Mar 2020 20:03:21 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Mar 29 16:03:21 2020
Received: from localhost ([127.0.0.1]:59919 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1jIe9R-0000Mn-J1
	for submit <at> debbugs.gnu.org; Sun, 29 Mar 2020 16:03:21 -0400
Received: from wout4-smtp.messagingengine.com ([64.147.123.20]:58993)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <mbakke@HIDDEN>) id 1jIe9P-0000MR-CH
 for 39841 <at> debbugs.gnu.org; Sun, 29 Mar 2020 16:03:20 -0400
Received: from compute4.internal (compute4.nyi.internal [10.202.2.44])
 by mailout.west.internal (Postfix) with ESMTP id 6A14A78B;
 Sun, 29 Mar 2020 16:03:13 -0400 (EDT)
Received: from mailfrontend1 ([10.202.2.162])
 by compute4.internal (MEProxy); Sun, 29 Mar 2020 16:03:13 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fastmail.com; h=
 from:to:subject:in-reply-to:references:date:message-id
 :mime-version:content-type; s=fm2; bh=rbtTxDEhdofb+/anBZh9Ca83UO
 r8bT+oZC9DrST0PYw=; b=oVqrmwEUD7+rms2VMDWJXc5ybMgZLFN486HSNh9n3J
 r3RpOGbl7At6gBGkrqq1kzm60OtdJ1Dur0b6d+pCYvCtle6RVOwtdzX6B5ykV6HW
 ktFrwc/LR1BjPQ21Uk5loZrj/TjUAjTSDxPkXx9ccj5w964IBKyw04ip+L+aLT32
 YWq6K11xKkAiWasTSe2G3N9c5kmX6NMCKHQnttzNBRJmCUB27523rLLj7x+x512k
 eb71mCFU1FbunQ+SSLONGopXski1LMItDUZ+BcjQCx8JHI1wZGrkyc/UBqwgUO0U
 wolmUSKs+FSD0ftoKe1Xsby7zX96qtFONNDDMmngWUoA==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
 messagingengine.com; h=content-type:date:from:in-reply-to
 :message-id:mime-version:references:subject:to:x-me-proxy
 :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm2; bh=rbtTxD
 Ehdofb+/anBZh9Ca83UOr8bT+oZC9DrST0PYw=; b=tcUKMzwLnlM003vVT05+9H
 TvhkfvAf3JHkgIcpI2GTcICW8rXQCn+pKAZSUf3l2XBA2UpCE6zRd7f2iSdLx/kb
 kSj9aI5ACJcu6ktiL3CWQxKGtR+PjfV3/tq49JjGoIAECoCh86F/T/6XTwIMcy8Z
 y8t0EMP20okFjhotV/+8urbvBjFHnia2m2jipkLxR5fd0h8TUMRJ3JAXfns/tNNS
 3heSkWhxAarpjPJcst8xbTSa09Fk5xxQ+AT7VnTD1XBL82Ka4QgecMu1zdci3Vae
 oiUNv/EdzsaH6fuamepXX3Qn7S5ftotYEYaCq/LMNL3ycgVvz0NrEi1mhSyz5keQ
 ==
X-ME-Sender: <xms:AP-AXviwz0bKRUbMA1Szag52mrEMumd4ekBrEkOlLXbCLBAS7SSzFw>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedugedrudeifedgudegjecutefuodetggdotefrod
 ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfgh
 necuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmd
 enucfjughrpefhvffujghffgffkfggtgesghdtreertdertdenucfhrhhomhepofgrrhhi
 uhhsuceurghkkhgvuceomhgsrghkkhgvsehfrghsthhmrghilhdrtghomheqnecuffhomh
 grihhnpehgihhthhhusgdrtghomhenucfkphepkeegrddvtddvrdeikedrjeehnecuvehl
 uhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepmhgsrghkkhgvse
 hfrghsthhmrghilhdrtghomh
X-ME-Proxy: <xmx:AP-AXpFSTNiVicy3tqV_eponbvWbAg6cloFCf2e6LhN8xpCHtovPtw>
 <xmx:AP-AXnIDRGQkxgd2IJy3L8sssaR7SclWS9tXm1M03986E8r4iL4-zg>
 <xmx:AP-AXo4l6SdOnCbi_29DZCQeAo2RV7-FuBScTyODsi-Jr97YiC7p3A>
 <xmx:Af-AXkpIhOtxLafxu3mmuCc8ps1bs5VX-SxcaJReL26AijumxbWkHg>
Received: from localhost (ti0006q161-2604.bb.online.no [84.202.68.75])
 by mail.messagingengine.com (Postfix) with ESMTPA id 9678A328005A;
 Sun, 29 Mar 2020 16:03:12 -0400 (EDT)
From: Marius Bakke <mbakke@HIDDEN>
To: Alex ter Weele <alex.ter.weele@HIDDEN>, 39841 <at> debbugs.gnu.org
Subject: Re: [bug#39841] [WIP PATCH] synapse
In-Reply-To: <87tv39nuv4.fsf@HIDDEN>
References: <87tv39nuv4.fsf@HIDDEN>
User-Agent: Notmuch/0.29.3 (https://notmuchmail.org) Emacs/26.3
 (x86_64-pc-linux-gnu)
Date: Sun, 29 Mar 2020 22:03:10 +0200
Message-ID: <87o8sfvsht.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: multipart/signed; boundary="=-=-=";
 micalg=pgp-sha512; protocol="application/pgp-signature"
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 39841
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

--=-=-=
Content-Type: text/plain

Alex ter Weele <alex.ter.weele@HIDDEN> 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!

--=-=-=
Content-Type: application/pgp-signature; name="signature.asc"

-----BEGIN PGP SIGNATURE-----

iQEzBAEBCgAdFiEEu7At3yzq9qgNHeZDoqBt8qM6VPoFAl6A/v4ACgkQoqBt8qM6
VPowawf/bIZMzs6KUBuuV7WU1b+7XmZ09BdCTSm4N9TKlS5HlGlgVLt3eDWbNskS
TDurVuOGQGESvCo1cSuNgy/VkN0LBS+6ZVJQS7nzOiwq0A284Jvmg1py5X/2Renj
tAlJ6gcQPAszplF+NHVBXX68ewbb6lErX/GgOh0xVS6ZbWIY0lEG3tY0sTU1oWLK
CsZBmNWsCtSmtEHxhN+vu0SJuhXhjfehoOPvByK5bbPowvo1IUIYsQ5Wl6jrLPaL
7LwmvZya/H5pUuBVBlD2tm5OmMzxGcsLYAvY4nuH0TyEEp82sJsL9meu3h30p5d1
va0ylwT0Nysq8b3wnJS8t8hYiyOsrg==
=OUrM
-----END PGP SIGNATURE-----
--=-=-=--




Information forwarded to guix-patches@HIDDEN:
bug#39841; Package guix-patches. Full text available.

Message received at 39841 <at> debbugs.gnu.org:


Received: (at 39841) by debbugs.gnu.org; 29 Feb 2020 19:14:28 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Feb 29 14:14:27 2020
Received: from localhost ([127.0.0.1]:35401 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1j87ZD-0004rv-Ol
	for submit <at> debbugs.gnu.org; Sat, 29 Feb 2020 14:14:27 -0500
Received: from mail-yw1-f65.google.com ([209.85.161.65]:37574)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <alex.ter.weele@HIDDEN>) id 1j87ZC-0004rj-Li
 for 39841 <at> debbugs.gnu.org; Sat, 29 Feb 2020 14:14:26 -0500
Received: by mail-yw1-f65.google.com with SMTP id l5so6910879ywd.4
 for <39841 <at> debbugs.gnu.org>; Sat, 29 Feb 2020 11:14:26 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=from:to:subject:references:date:in-reply-to:message-id:user-agent
 :mime-version; bh=jxtwEAcw3RiGSOtu41syTZJkLOTXrwe8xricseGoAOY=;
 b=ukxJN/SXeQkpzatWlCOwnA1pM6KQ7J/xXwGerDdNc2NJYy7w4l8GLaPX/nOsNrLvac
 3hmg0d2PSWx0ci/SmPDydiqkpr3sbld0lyxC8Us6N4LctYyhdvFlJrK0vCQyCXzGx9Nd
 gxo+CInl+kH6kZ5ktqDOWiYlch+pXtum+rbSZvxnCaLSbDD84TMlq0NT/90aLpVyP9bn
 UyEMBpxleDxoU7/xp7BI7dEgIk0mXZFdEQs55V4rLud56QCm8EMtQ97Q2saMn6p6lbVS
 pZ2QoFyqukLXlOJ8G3Opnd1Hp6+ddUZzOL6WnJ1FanegYJYN0NSNX7K2ImR5CRYkcjJE
 rlfg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:to:subject:references:date:in-reply-to
 :message-id:user-agent:mime-version;
 bh=jxtwEAcw3RiGSOtu41syTZJkLOTXrwe8xricseGoAOY=;
 b=eH3DRLD222qPLVpZo5mzYx6n0VM8XALmxT9I0TwB3OMwQDGOE02cgZLmQ3/USUJRfK
 zUxqfjTP9/Fe11wgUZJL9zmnXoM8hYj7IToF6fHV2H+3qxe/v2aWsXONNopEPmk0r1Ns
 r9nwSTkcQ2At8hw8CqkzmU9sQ4COGj/vZJl62O9py7u9iuwRPfery0FNSMalL3imE2GV
 jz7MqkkJcHPUEU0XpqHqxO97fQvwIl5sHGvA/76aKB5inWZXOpV7wZxJysKDmVzOVhTm
 +AtdAXxmTnk1Xo1ZheceDETmocnSybiOjApq+rgnLZFAXIs3ozj3qWSpVHzjWV9u28Ab
 0vMQ==
X-Gm-Message-State: APjAAAVpfuzQTxPtwZcabwAD9K8xfKdB6OuexMkqMX7Yul8rWryJjTdL
 D0GgtjPUWd5Alh3o9aNvC00qIpSV
X-Google-Smtp-Source: APXvYqykNJmIFYfkCiiz49qsJsBbTCVHcJxpUH9fmqdQhZ/3uM6byDBn2/Vut17vHjnFASeTeTxaeA==
X-Received: by 2002:a25:d681:: with SMTP id n123mr8977345ybg.284.1583003661018; 
 Sat, 29 Feb 2020 11:14:21 -0800 (PST)
Received: from librem (c-73-22-1-166.hsd1.il.comcast.net. [73.22.1.166])
 by smtp.gmail.com with ESMTPSA id v5sm5665109ywh.23.2020.02.29.11.14.20
 for <39841 <at> debbugs.gnu.org>
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Sat, 29 Feb 2020 11:14:20 -0800 (PST)
From: Alex ter Weele <alex.ter.weele@HIDDEN>
X-Google-Original-From: Alex ter Weele
 <alex@HIDDEN>
To: 39841 <at> debbugs.gnu.org
Subject: Re: [bug#39841] [WIP PATCH] synapse
References: <87tv39nuv4.fsf@HIDDEN>
 <87o8thtdg3.fsf@HIDDEN>
Date: Sat, 29 Feb 2020 13:14:19 -0600
In-Reply-To: <87o8thtdg3.fsf@HIDDEN>
 (Alex ter Weele's message of "Sat, 29 Feb 2020 13:12:44 -0600")
Message-ID: <87k145tddg.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.3 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 39841
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

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




Information forwarded to guix-patches@HIDDEN:
bug#39841; Package guix-patches. Full text available.

Message received at 39841 <at> debbugs.gnu.org:


Received: (at 39841) by debbugs.gnu.org; 29 Feb 2020 19:12:58 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Feb 29 14:12:58 2020
Received: from localhost ([127.0.0.1]:35390 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1j87Xl-0004om-05
	for submit <at> debbugs.gnu.org; Sat, 29 Feb 2020 14:12:58 -0500
Received: from mail-yw1-f65.google.com ([209.85.161.65]:39290)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <alex.ter.weele@HIDDEN>) id 1j87Xg-0004oS-QV
 for 39841 <at> debbugs.gnu.org; Sat, 29 Feb 2020 14:12:55 -0500
Received: by mail-yw1-f65.google.com with SMTP id x184so6891984ywd.6
 for <39841 <at> debbugs.gnu.org>; Sat, 29 Feb 2020 11:12:52 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=from:to:subject:references:date:in-reply-to:message-id:user-agent
 :mime-version; bh=f/2oIG5eeeAYN2aswLxSnefLTdBQcM4VaMgNZpNtUkQ=;
 b=uz/2Q0ocwzB1E2mH4iyvlP095EX/TjD77+8vOyVBO9ElG4930aV+vt9kSuUuGwmBCy
 bFNVMNVzbeOgXC+4BA2Y1nt+CCA6esbVrZ31Es5PgD0HHyKY/H/TtplH5ZeGdqIzM/zQ
 5xiUUWgDaR6Cc/lKEFHm9Du/MFA7GoZeJ62IrxKmcmYnIHA92P2PvvlrmnPUMEgpA33/
 87xga+MLSxdo2g991eWpwVgj4ZRcRMb484D+wq7Uh5KgHS78/p9PgHc40IG47fLvNDjF
 zeM1MY84WIbzWV8ZnX36uvEqb1bK5I6+NaE751Kotw4eT5BjnbLIqf2MsrOBoaNqw20w
 /izg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:to:subject:references:date:in-reply-to
 :message-id:user-agent:mime-version;
 bh=f/2oIG5eeeAYN2aswLxSnefLTdBQcM4VaMgNZpNtUkQ=;
 b=DTfBFqO4d6j1eRRkS2KEVMT2SCFf/kvrXaeE36+sC3xXc776woBbjI7jeHWcy1M56S
 m1Mkb+iJIPYwXHS6SVa7aDCCPS4dPcGuck7B2DmQuJln2OU6mumhvum+pbnzA2L0zp9v
 meqT6bk37T8yMPCnwwFnmyyCEKtmpw+1VdeGJqMUdmv1bwvw0aN1tK+x/2+XebK9hwhK
 V7tcRRhbd1eJKyrg8paJw+hl6ktbV7tIJVr3Y+oX2JAn7MONIv1sVDeCDM3K3A9DnTvt
 ykb7h6m1w5O9jGKM86rMyT2h7iD/GvKWUGWPyTv0ExQM7BdqDPFy3zXI4W4sMJ0vDd4G
 xkHw==
X-Gm-Message-State: APjAAAWA6Bj7j4UxG3vvNl6MFmixK4LKfg/0yZHHh5VSeDfViylKU8bl
 jz8aiyaaaohIy3pv8YC+vQ3BtM5I
X-Google-Smtp-Source: APXvYqzqgFrBPDw0hedapE1zDsR9Ep841FGmRS7ekLzR7eixVTj+sowgBdYHLo1nExd4+4Mh1BJbWg==
X-Received: by 2002:a25:e785:: with SMTP id e127mr9021506ybh.276.1583003567010; 
 Sat, 29 Feb 2020 11:12:47 -0800 (PST)
Received: from librem (c-73-22-1-166.hsd1.il.comcast.net. [73.22.1.166])
 by smtp.gmail.com with ESMTPSA id j186sm5679850ywe.79.2020.02.29.11.12.44
 for <39841 <at> debbugs.gnu.org>
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Sat, 29 Feb 2020 11:12:45 -0800 (PST)
From: Alex ter Weele <alex.ter.weele@HIDDEN>
X-Google-Original-From: Alex ter Weele
 <alex@HIDDEN>
To: 39841 <at> debbugs.gnu.org
Subject: Re: [bug#39841] [WIP PATCH] synapse
References: <87tv39nuv4.fsf@HIDDEN>
Date: Sat, 29 Feb 2020 13:12:44 -0600
In-Reply-To: <87tv39nuv4.fsf@HIDDEN>
 (Alex ter Weele's message of "Sat, 29 Feb 2020 11:53:03 -0600")
Message-ID: <87o8thtdg3.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.3 (gnu/linux)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 39841
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

--=-=-=
Content-Type: text/plain

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


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=0001-gnu-Add-emacs-punpun-theme.patch

From 965546778c1824eb7efe90c02ffc6878a1ed907e Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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


--=-=-=
Content-Type: text/x-patch; charset=utf-8
Content-Disposition: attachment; filename=0001-gnu-Add-fennel.patch
Content-Transfer-Encoding: quoted-printable

From 5156cfff4e0e9c8b7223213ab28c891c97641e6c Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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 =3D				\
   %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 =C2=A9 2019 Alex ter Weele <alex.ter.weele@HIDDEN>
+
+(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)))
--=20
2.23.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=0001-gnu-python-typing-extensions-Update-to-3.7.4.1.patch

From 713a8bf6905ccd49ff53a5a06526816ca0a98535 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=0002-gnu-Add-python-frozendict.patch

From d53f6249c0b1adf07f850b65c08bfefc9951bae9 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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


--=-=-=
Content-Type: text/x-patch; charset=utf-8
Content-Disposition: attachment;
 filename=0003-gnu-Add-python-unpaddedbase64.patch
Content-Transfer-Encoding: quoted-printable

From e3571a4a5229026c4bd3c12632056239adfca9f2 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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 =E2=80=9C=3D=E2=80=9D padd=
ing")
+    (description
+     "RFC 4648 specifies that Base64 should be padded to a multiple of 4 b=
ytes
+using =E2=80=9C=3D=E2=80=9D characters.  However this conveys no benefit s=
o many protocols
+choose to use Base64 without the =E2=80=9C=3D=E2=80=9D padding.")
+    (license license:asl2.0)))
--=20
2.25.1


--=-=-=
Content-Type: text/x-patch; charset=utf-8
Content-Disposition: attachment;
 filename=0004-gnu-Add-python-canonicaljson.patch
Content-Transfer-Encoding: quoted-printable

From 3302ceb0ba579a346e66ed29b14d6a0e2e8b7d1e Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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 =E2=80=9C=3D=E2=80=9D characters.  However this conveys no benefit s=
o many protocols
 choose to use Base64 without the =E2=80=9C=3D=E2=80=9D 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 possi=
ble.
+@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)))
--=20
2.25.1


--=-=-=
Content-Type: text/x-patch; charset=utf-8
Content-Disposition: attachment;
 filename=0005-gnu-Add-python-signedjson.patch
Content-Transfer-Encoding: quoted-printable

From 21f226843fda4770fdef04cf9824525376e2b33b Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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 =E2=80=9C=3D=E2=
=80=9D 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 eas=
ier to
+rotate keys
+@item ED25519 can be replaced with a different algorithm.
+@item Unprotected data can be added to the object under the @dfn{\"unsigne=
d\"}
+key.
+@end enumerate")
+    (license license:asl2.0)))
--=20
2.25.1


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=0006-gnu-Add-python-daemonize.patch

From 2b3849e4e806f78e05f1bb4a7f4df585442b6aa7 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=0007-gnu-Add-python-pymacaroons.patch

From 3deff6285a2a24059378b9b7a0248f2dbd96176e Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=0008-gnu-Add-python-prometheus-client.patch

From 34a1fd90d996608ae33fab3f91b28f81e0c83d99 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment; filename=0009-gnu-Add-python-ldap3.patch

From e9bc8cab5e24476e9074c1d77a11342ec5b17453 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment; filename=0010-gnu-Add-python-txacme.patch

From 365c26db7babe3a1aca1d50740001aa071c0bdb9 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=0011-gnu-Add-python-matrix-synapse-ldap3.patch

From 8a7ae34ff4712ef8abb055c4807517f27af0eb06 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment; filename=0012-gnu-Add-synapse.patch

From 705608cab6b94d3242686b18331d865257f2a751 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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


--=-=-=--




Information forwarded to guix-patches@HIDDEN:
bug#39841; Package guix-patches. Full text available.

Message received at submit <at> debbugs.gnu.org:


Received: (at submit) by debbugs.gnu.org; 29 Feb 2020 17:53:20 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Feb 29 12:53:20 2020
Received: from localhost ([127.0.0.1]:35330 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1j86Ig-0002o3-EK
	for submit <at> debbugs.gnu.org; Sat, 29 Feb 2020 12:53:20 -0500
Received: from lists.gnu.org ([209.51.188.17]:57186)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <alex.ter.weele@HIDDEN>) id 1j86Id-0002nt-5F
 for submit <at> debbugs.gnu.org; Sat, 29 Feb 2020 12:53:17 -0500
Received: from eggs.gnu.org ([2001:470:142:3::10]:34591)
 by lists.gnu.org with esmtp (Exim 4.90_1)
 (envelope-from <alex.ter.weele@HIDDEN>) id 1j86Ia-0000HA-4Z
 for guix-patches@HIDDEN; Sat, 29 Feb 2020 12:53:14 -0500
X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org
X-Spam-Level: 
X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50,FREEMAIL_FROM,
 URIBL_BLOCKED autolearn=disabled version=3.3.2
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)
 (envelope-from <alex.ter.weele@HIDDEN>) id 1j86IW-0007pM-CR
 for guix-patches@HIDDEN; Sat, 29 Feb 2020 12:53:12 -0500
Received: from mail-yw1-xc2a.google.com ([2607:f8b0:4864:20::c2a]:42374)
 by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16)
 (Exim 4.71) (envelope-from <alex.ter.weele@HIDDEN>)
 id 1j86IV-0007om-Rl
 for guix-patches@HIDDEN; Sat, 29 Feb 2020 12:53:08 -0500
Received: by mail-yw1-xc2a.google.com with SMTP id n127so6724001ywd.9
 for <guix-patches@HIDDEN>; Sat, 29 Feb 2020 09:53:07 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=from:to:subject:date:message-id:mime-version;
 bh=XY+WxZsJPsBoapq05OJHXX4PxYIa3NNoO7YffLTm0ds=;
 b=NARfUteM+y2bujWqa5CtpQLjYAFX8ev4iVCHhShFTU9EKozovdNNt8UDjM5Wy7DIr3
 IvWCZfUlPMWnu/e/KdfTsxRNKrnhysKYgm+XH6AFFqN14qGdiK6SQQrVgh4p4wQtv5Pf
 /L+1vCUtwz2w8iyyPZWM4kCklpScvTpmojxE6kHguYlm8biCYkttxJrjanvJoA6AaBfv
 1g/nEtYITq6wDPcKLa2HoQcvWk4sUNUArL7j+c9GofxLwvJ1S/x88VRU4TeP2JjNYMJk
 T9HoPu90pfirBrlClEuApRBnVd8ccsQv9mcQlQneoNDFYLnw1Ach3Y3oK3661sRpeF/q
 GcCA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:to:subject:date:message-id:mime-version;
 bh=XY+WxZsJPsBoapq05OJHXX4PxYIa3NNoO7YffLTm0ds=;
 b=RbOgQTqPT/OG6tI0u9t0zcvDch1XkptOiYi/IKQyOhcWvnoMvZB8s8uXXz3w24Ve6x
 DSLmd2lQCUJvZfkU/x5riMpJFHCcqMYo+MFyQY8zN71rB/N0gke+GUfWLAWnMVlUU4UJ
 5TODN2skmT+WVb5GaahQB4BSujOdtvb1dFFnvtVYD2zQJKDS98bK54R3cGiwBR0mPT18
 X2a7ZR/5Q+/yuL/fNwKjKFvm3MTb5d+CMeIiklj/r3VMtEnqwJzpa8Vfr7PfwNNws82g
 KmktOLJOiTIbWU4VklPOrmygCNbJF0WvIl1DIILBvSFAG1ARx2pH0s+A2esbxqzWmu4n
 4etA==
X-Gm-Message-State: APjAAAUrsJQHewtFkq/+W+pq5V+2SYBqpBxjNCuukLj/P1gON4scs3/8
 HoxxS3TfNaGcuBUKAoX83nkRUWX4
X-Google-Smtp-Source: APXvYqx0ykRbdsntTEseA14rF49Igj9hMpZ3Vwao/sh1wv769Xh1U9vGn2++u+4TIbDB6oBU9W9MLg==
X-Received: by 2002:a25:cb12:: with SMTP id b18mr8216388ybg.233.1582998786526; 
 Sat, 29 Feb 2020 09:53:06 -0800 (PST)
Received: from librem (c-73-22-1-166.hsd1.il.comcast.net. [73.22.1.166])
 by smtp.gmail.com with ESMTPSA id g204sm5463738ywa.91.2020.02.29.09.53.04
 for <guix-patches@HIDDEN>
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Sat, 29 Feb 2020 09:53:04 -0800 (PST)
From: Alex ter Weele <alex.ter.weele@HIDDEN>
X-Google-Original-From: Alex ter Weele
 <alex@HIDDEN>
To: "guix-patches" <guix-patches@HIDDEN>
Subject: [WIP PATCH] synapse
Date: Sat, 29 Feb 2020 11:53:03 -0600
Message-ID: <87tv39nuv4.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
X-detected-operating-system: by eggs.gnu.org: Genre and OS details not
 recognized.
X-Received-From: 2607:f8b0:4864:20::c2a
X-Spam-Score: 0.3 (/)
X-Debbugs-Envelope-To: submit
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -0.7 (/)

--=-=-=
Content-Type: text/plain

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



--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=0001-gnu-python-typing-extensions-Update-to-3.7.4.1.patch

From 713a8bf6905ccd49ff53a5a06526816ca0a98535 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=0002-gnu-Add-python-frozendict.patch

From 7a9128fe9a1199349557f6a442ed410b099fe049 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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


--=-=-=
Content-Type: text/x-patch; charset=utf-8
Content-Disposition: attachment;
 filename=0003-gnu-Add-python-unpaddedbase64.patch
Content-Transfer-Encoding: quoted-printable

From 6efc1c329f39fc9290601b368dde4e5283397563 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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 =E2=80=9C=3D=E2=80=9D padd=
ing.")
+    (description
+     "RFC 4648 specifies that Base64 should be padded to a multiple of 4 b=
ytes
+using =E2=80=9C=3D=E2=80=9D characters. However this conveys no benefit so=
 many protocols choose
+to use Base64 without the =E2=80=9C=3D=E2=80=9D padding.")
+    (license license:asl2.0)))
--=20
2.25.1


--=-=-=
Content-Type: text/x-patch; charset=utf-8
Content-Disposition: attachment;
 filename=0004-gnu-Add-python-canonicaljson.patch
Content-Transfer-Encoding: quoted-printable

From 85cfe8b9df96aa7b500ee88baa274310a8ab0e20 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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 =E2=80=9C=3D=E2=80=9D characters. However this conveys no benefit so=
 many protocols choose
 to use Base64 without the =E2=80=9C=3D=E2=80=9D 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 possi=
ble.
+@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)))
--=20
2.25.1


--=-=-=
Content-Type: text/x-patch; charset=utf-8
Content-Disposition: attachment;
 filename=0005-gnu-Add-python-signedjson.patch
Content-Transfer-Encoding: quoted-printable

From f071df94857709c1bb586463ad28e58cc940bfaf Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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 =E2=80=9C=3D=E2=80=9D pa=
dding.")
 @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 eas=
ier to
+rotate keys
+@item ED25519 can be replaced with a different algorithm.
+@item Unprotected data can be added to the object under the @dfn{\"unsigne=
d\"}
+key.
+@end enumerate")
+    (license license:asl2.0)))
--=20
2.25.1


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=0006-gnu-Add-python-daemonize.patch

From 420e1f58df9d5f8d39d39fff97cea0f592607afa Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=0007-gnu-Add-python-pymacaroons.patch

From 290caa3269f9cfc121af8350d223089925c9b801 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=0008-gnu-Add-python-prometheus-client.patch

From 87db6e10a67ad872ad9de6dcf4c9e6cc5a57ab15 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment; filename=0009-gnu-Add-python-ldap3.patch

From 8bb5a61b0e865a4bb31ccba7777a964e51d51fc7 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment; filename=0010-gnu-Add-python-txacme.patch

From 6385d8d65cf0022b6f893b8fc3e8216d942a629a Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=0011-gnu-Add-python-matrix-synapse-ldap3.patch

From 0b37dabdf6691b314a89c099cbf0e97c7d2c202e Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment; filename=0012-gnu-Add-synapse.patch

From 60769229bc80fcd800e5a4a325c4dcdf7591ae21 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@HIDDEN>
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


--=-=-=--




Acknowledgement sent to Alex ter Weele <alex.ter.weele@HIDDEN>:
New bug report received and forwarded. Copy sent to guix-patches@HIDDEN. Full text available.
Report forwarded to guix-patches@HIDDEN:
bug#39841; Package guix-patches. Full text available.
Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.
Last modified: Mon, 30 Mar 2020 02:45:01 UTC

GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997 nCipher Corporation Ltd, 1994-97 Ian Jackson.