[PATCH] Idris 2

OpenSubmitted by raingloom.
Details
4 participants
  • Maxime Devos
  • Tobias Geerinckx-Rice
  • Xinglu Chen
  • raingloom
Owner
unassigned
Severity
normal
Merged with
R
R
raingloom wrote on 27 Jan 2021 06:43
(name . Guix Patches)(address . guix-patches@gnu.org)
20210127064337.6a226301@riseup.net
Now that Idris 2 has had some proper tagged releases, I thought I'd
move it from my channel to Guix proper.
I've been using this package for quite a few months now and it pretty
much works. REPL works, building things works. Couldn't try IDE
functionality but I suppose it probably works if you can set it up in
Vim. That reminds me, I still haven't packaged the Vim mode, but I
don't use Vim so I don't really know its module system.

## Still TODO for the package:

search paths: There are no 3rd party Idris 2 modules yet, but it should
be done soon.

output prefix weirdness: Output is a bit odd, having an idris2-0.3.0
directory in its root, but since this is Guix, I suppose that's not
really a problem. Everything else is in its proper place, in bin, lib,
and share.

clang-toolchain support: Right now CC=gcc is hardcoded. Auto detection
would be preferable.

bootstrap: Right now it's bootstrapped from auto-generated Chez or
Racket. It **can** be built with Idris 1, but it uses such on obscene
amount of RAM that I refuse to consider building it that way ever
again. If someone wants to incorporate that step into Guix, they are
free to do so. Or we could generate it once and then freeze it and use
it as an input. Just leave my poor laptop out of it, it already
suffered enough. And probably leave the CI infrastructure out of it too.


## Bigger TODO:
Build system. Eventually it will need one.
Considering that it has multiple code generation backends, this is not
trivial, as each backend uses a different existing language, the
official ones (that I can remember right now) being:
* Chez
* Racket
* Gambit
* Chicken
* JavaScript/Node
* C

It might also make sense to compile Idris 2 itself with different
backends. It "officially" supports bootstrapping with Chez and Racket,
but others might be possible too.


Anyways, here's the patch, have fun with it, and/or suggest changes,
etc!
R
R
raingloom wrote on 26 Apr 2021 17:22
(name . Xinglu Chen)(address . public@yoctocell.xyz)(address . 46124@debbugs.gnu.org)
20210426172240.683c4c2b@riseup.net
On Thu, 22 Apr 2021 10:39:53 +0200
Xinglu Chen <public@yoctocell.xyz> wrote:

Toggle quote (3 lines)
> I think you forgot the attach the patch. ;)
>

Ah heck. That might have been the case.
Here it is.

There hasn't been a tagged release since then, so I'm sending my
original patch, but I should note that in my channel I've been tracking
the latest commit, which does seem to work, although it's been a while
since I used Idris for anything complicated.
From 7554e53ad682e5baa40fee0776ab88cffc1a7772 Mon Sep 17 00:00:00 2001
From: raingloom <raingloom@riseup.net>
Date: Wed, 27 Jan 2021 06:21:01 +0100
Subject: [PATCH] gnu: Added Idris 2.

* gnu/packages/idris.scm (idris2): New variable.
---
gnu/packages/idris.scm | 80 +++++++++++++++++++++++++++++++++++++++++-
1 file changed, 79 insertions(+), 1 deletion(-)

Toggle diff (112 lines)
diff --git a/gnu/packages/idris.scm b/gnu/packages/idris.scm
index ca2772b904..14de2762a1 100644
--- a/gnu/packages/idris.scm
+++ b/gnu/packages/idris.scm
@@ -21,6 +21,8 @@
 
 (define-module (gnu packages idris)
   #:use-module (gnu packages)
+  #:use-module (gnu packages bash)
+  #:use-module (gnu packages chez)
   #:use-module (gnu packages haskell-check)
   #:use-module (gnu packages haskell-web)
   #:use-module (gnu packages haskell-xyz)
@@ -28,12 +30,15 @@
   #:use-module (gnu packages multiprecision)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages perl)
+  #:use-module (gnu packages python)
+  #:use-module (gnu packages sphinx)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system haskell)
   #:use-module (guix download)
   #:use-module (guix git-download)
   #:use-module ((guix licenses) #:prefix license:)
-  #:use-module (guix packages))
+  #:use-module (guix packages)
+  #:use-module (ice-9 regex))
 
 (define-public idris
   (package
@@ -150,6 +155,79 @@ can be specified precisely in the type.  The language is closely related to
 Epigram and Agda.")
     (license license:bsd-3)))
 
+(define-public idris2
+  (package
+    (name "idris2")
+    (version "0.3.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/idris-lang/Idris2")
+                    (commit (string-append "v" version))))
+              (sha256
+               (base32
+                "0sa2lpb7n6xqfknwld9rzm4bnb6qcd0ja1n63cnc5v8wdzr8q7kh"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f ;; they are run as part of other targets
+       #:phases
+       (modify-phases
+           %standard-phases
+         (add-after 'unpack 'patch-paths
+           (lambda* (#:key outputs inputs #:allow-other-keys)
+             (substitute* "config.mk"
+               ((,(regexp-quote "PREFIX ?= $(HOME)/.idris2"))
+                (string-append "PREFIX = "
+                               (assoc-ref outputs "out"))))
+             (for-each
+              (lambda (f)
+                (substitute* f
+                  ((,(regexp-quote "#!/bin/sh"))
+                   (string-append "#!" (assoc-ref inputs "sh")
+                                  "/bin/sh"))))
+              (list "src/Compiler/Scheme/Chez.idr"
+                    "src/Compiler/Scheme/Racket.idr"
+                    "bootstrap/idris2_app/idris2.rkt"
+                    "bootstrap/idris2_app/idris2.ss"))))
+         ;; this is not the kind of bootstrap we want to run
+         (delete 'bootstrap)
+         (delete 'configure)
+         (replace 'build
+           (lambda _
+             (invoke "make" "bootstrap"
+                     "SCHEME=scheme"
+                     ;; TODO detect toolchain
+                     "CC=gcc")))
+         (add-after 'build 'build-doc
+           (lambda _
+             (with-directory-excursion
+                 "docs"
+               (invoke "make" "html"))))
+         (add-after 'install 'install-doc
+           (lambda* (#:key outputs #:allow-other-keys)
+             (copy-recursively
+              "docs/build/html"
+              (string-append
+               (assoc-ref outputs "out")
+               "/share/doc/"
+               ,name "-" ,version)))))))
+    (inputs
+     `(("sh" ,bash-minimal)
+       ("chez-scheme" ,chez-scheme)))
+    (native-inputs
+     `(("python-sphinx" ,python-sphinx)
+       ("python-sphinx-rtd-theme" ,python-sphinx-rtd-theme)
+       ("python" ,python)))
+    (home-page "https://idris-lang.org/")
+    (synopsis "A dependently typed programming language, a successor to Idris")
+    (description
+     "Idris 2 is a general purpose language with dependent linear types.
+It is compiled, with eager evaluation.  Dependent types allow types to
+be predicated on values, meaning that some aspects of a program's behaviour
+can be specified precisely in the type.  It can use multiple languages as code
+generation backends.")
+    (license license:bsd-3)))
+
 ;; Idris modules use the gnu-build-system so that the IDRIS_LIBRARY_PATH is set.
 (define (idris-default-arguments name)
   `(#:modules ((guix build gnu-build-system)
-- 
2.31.1
M
M
Maxime Devos wrote on 26 Apr 2021 23:27
(address . 46124@debbugs.gnu.org)
5003aa160dc82b35b06e60d425a09309199e1670.camel@telenet.be
raingloom schreef op ma 26-04-2021 om 17:22 [+0200]:
Toggle quote (8 lines)
> There hasn't been a tagged release since then, so I'm sending my
> original patch, but I should note that in my channel I've been tracking
> the latest commit, which does seem to work, although it's been a while
> since I used Idris for anything complicated.
>
> + ;; TODO detect toolchain
> + "CC=gcc")))

Unless idris has a compiler built in that uses gcc for compiling
idris to machine code, this should likely be
,(string-append "CC=" (cc-for-target)) instead, such that the
cross-compiler is used when cross-compiling.

Teaching (cc-for-target) to detect which toolchain should be used
is a separate matter. Maybe it could be a macro that looks at
(package-native-inputs this-package) or something.

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYIcwSxccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7ou8AP9bagGIjCuIbHAiN1XmNgTMzlXr
ix9XJKe7v5D9uIVqFwEA95EeNJSEiX9jM8QBH4KAsrvNtbh+rQYznhbxAG1MeAo=
=qTHC
-----END PGP SIGNATURE-----


R
R
raingloom wrote on 29 Apr 2021 20:43
(name . Maxime Devos)(address . maximedevos@telenet.be)
20210429204317.7e3a707c@riseup.net
On Mon, 26 Apr 2021 23:27:39 +0200
Maxime Devos <maximedevos@telenet.be> wrote:

Toggle quote (21 lines)
> raingloom schreef op ma 26-04-2021 om 17:22 [+0200]:
> > There hasn't been a tagged release since then, so I'm sending my
> > original patch, but I should note that in my channel I've been
> > tracking the latest commit, which does seem to work, although it's
> > been a while since I used Idris for anything complicated.
> >
> > + ;; TODO detect toolchain
> > + "CC=gcc")))
>
> Unless idris has a compiler built in that uses gcc for compiling
> idris to machine code, this should likely be
> ,(string-append "CC=" (cc-for-target)) instead, such that the
> cross-compiler is used when cross-compiling.
>
> Teaching (cc-for-target) to detect which toolchain should be used
> is a separate matter. Maybe it could be a macro that looks at
> (package-native-inputs this-package) or something.
>
> Greetings,
> Maxime.

Oh, that's a leftover, I was using clang for a while, since it's
said to use less RAM. I switched back to gcc and left that in.

Here is the updated patch. No idea if this actually works cross
compiled, but I don't have much time to test it. My suspicion is that
it's likely broken and requires changes to Idris 2's code generators,
because they almost definitely call Chez, GCC, etc, with the wrong
arguments.
From e3c942454af34879393d073be755fa53390891bc Mon Sep 17 00:00:00 2001
From: raingloom <raingloom@riseup.net>
Date: Wed, 27 Jan 2021 06:21:01 +0100
Subject: [PATCH] gnu: Added Idris 2.

* gnu/packages/idris.scm (idris2): New variable.
---
gnu/packages/idris.scm | 80 +++++++++++++++++++++++++++++++++++++++++-
1 file changed, 79 insertions(+), 1 deletion(-)

Toggle diff (112 lines)
diff --git a/gnu/packages/idris.scm b/gnu/packages/idris.scm
index ca2772b904..da66f7b0d8 100644
--- a/gnu/packages/idris.scm
+++ b/gnu/packages/idris.scm
@@ -21,6 +21,8 @@
 
 (define-module (gnu packages idris)
   #:use-module (gnu packages)
+  #:use-module (gnu packages bash)
+  #:use-module (gnu packages chez)
   #:use-module (gnu packages haskell-check)
   #:use-module (gnu packages haskell-web)
   #:use-module (gnu packages haskell-xyz)
@@ -28,12 +30,15 @@
   #:use-module (gnu packages multiprecision)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages perl)
+  #:use-module (gnu packages python)
+  #:use-module (gnu packages sphinx)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system haskell)
   #:use-module (guix download)
   #:use-module (guix git-download)
   #:use-module ((guix licenses) #:prefix license:)
-  #:use-module (guix packages))
+  #:use-module (guix packages)
+  #:use-module (ice-9 regex))
 
 (define-public idris
   (package
@@ -150,6 +155,79 @@ can be specified precisely in the type.  The language is closely related to
 Epigram and Agda.")
     (license license:bsd-3)))
 
+(define-public idris2
+  (package
+    (name "idris2")
+    (version "0.3.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/idris-lang/Idris2")
+                    (commit (string-append "v" version))))
+              (sha256
+               (base32
+                "0sa2lpb7n6xqfknwld9rzm4bnb6qcd0ja1n63cnc5v8wdzr8q7kh"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f ;; they are run as part of other targets
+       #:phases
+       (modify-phases
+           %standard-phases
+         (add-after 'unpack 'patch-paths
+           (lambda* (#:key outputs inputs #:allow-other-keys)
+             (substitute* "config.mk"
+               ((,(regexp-quote "PREFIX ?= $(HOME)/.idris2"))
+                (string-append "PREFIX = "
+                               (assoc-ref outputs "out"))))
+             (for-each
+              (lambda (f)
+                (substitute* f
+                  ((,(regexp-quote "#!/bin/sh"))
+                   (string-append "#!" (assoc-ref inputs "sh")
+                                  "/bin/sh"))))
+              (list "src/Compiler/Scheme/Chez.idr"
+                    "src/Compiler/Scheme/Racket.idr"
+                    "bootstrap/idris2_app/idris2.rkt"
+                    "bootstrap/idris2_app/idris2.ss"))))
+         ;; this is not the kind of bootstrap we want to run
+         (delete 'bootstrap)
+         (delete 'configure)
+         (replace 'build
+           (lambda _
+             (invoke "make" "bootstrap"
+                     "SCHEME=scheme"
+                     ;; TODO detect toolchain
+                     ,(string-append "CC=" (cc-for-target)))))
+         (add-after 'build 'build-doc
+           (lambda _
+             (with-directory-excursion
+                 "docs"
+               (invoke "make" "html"))))
+         (add-after 'install 'install-doc
+           (lambda* (#:key outputs #:allow-other-keys)
+             (copy-recursively
+              "docs/build/html"
+              (string-append
+               (assoc-ref outputs "out")
+               "/share/doc/"
+               ,name "-" ,version)))))))
+    (inputs
+     `(("sh" ,bash-minimal)
+       ("chez-scheme" ,chez-scheme)))
+    (native-inputs
+     `(("python-sphinx" ,python-sphinx)
+       ("python-sphinx-rtd-theme" ,python-sphinx-rtd-theme)
+       ("python" ,python)))
+    (home-page "https://idris-lang.org/")
+    (synopsis "A dependently typed programming language, a successor to Idris")
+    (description
+     "Idris 2 is a general purpose language with dependent linear types.
+It is compiled, with eager evaluation.  Dependent types allow types to
+be predicated on values, meaning that some aspects of a program's behaviour
+can be specified precisely in the type.  It can use multiple languages as code
+generation backends.")
+    (license license:bsd-3)))
+
 ;; Idris modules use the gnu-build-system so that the IDRIS_LIBRARY_PATH is set.
 (define (idris-default-arguments name)
   `(#:modules ((guix build gnu-build-system)
-- 
2.31.1
X
X
Xinglu Chen wrote on 30 Apr 2021 10:24
(address . 46124@debbugs.gnu.org)
87im44nprp.fsf@yoctocell.xyz
On Thu, Apr 29 2021, raingloom wrote:

Toggle quote (6 lines)
> Here is the updated patch. No idea if this actually works cross
> compiled, but I don't have much time to test it. My suspicion is that
> it's likely broken and requires changes to Idris 2's code generators,
> because they almost definitely call Chez, GCC, etc, with the wrong
> arguments.

I noticed that there is an ‘idris2_app’ directory in the ‘bin’ directory

$ ls /gnu/store/va62hzp46c3dp2vlcnqc7fg109axj8rq-idris2-0.3.0/bin
idris2* idris2_app/

What is this used for?
M
M
Maxime Devos wrote on 30 Apr 2021 10:50
(name . raingloom)(address . raingloom@riseup.net)
f6728a87fd3de484c16935273bb7ddf5ec656636.camel@telenet.be
raingloom schreef op do 29-04-2021 om 20:43 [+0200]:
Toggle quote (21 lines)
> On Mon, 26 Apr 2021 23:27:39 +0200
> Maxime Devos <maximedevos@telenet.be> wrote:
>
> > raingloom schreef op ma 26-04-2021 om 17:22 [+0200]:
> > > [...]
> > >
> > > + ;; TODO detect toolchain
> > > + "CC=gcc")))
> >
> > Unless idris has a compiler built in that uses gcc for compiling
> > idris to machine code, this should likely be
> > ,(string-append "CC=" (cc-for-target)) instead, such that the
> > cross-compiler is used when cross-compiling.
> >
> > [...]
> Oh, that's a leftover, I was using clang for a while, since it's
> said to use less RAM. I switched back to gcc and left that in.
>
> Here is the updated patch. No idea if this actually works cross
> compiled, but I don't have much time to test it.

IIUC, cross-compilation is not required to be supported by each
package in guix. It is something nice-to-have, but not strictly
required.

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYIvE6xccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7lbgAP9K3rd7WywkbN9sXQRo5g133gvs
wB/gM4kgG1twdqJWLwEAzvg8wNd2oAlo8Hw/jmbS8mJJfvAQFydiM5V5c9PpLAI=
=O2R1
-----END PGP SIGNATURE-----


R
R
raingloom wrote on 3 May 2021 04:10
(name . Xinglu Chen)(address . public@yoctocell.xyz)
20210503041044.13358182@riseup.net
On Fri, 30 Apr 2021 10:24:42 +0200
Xinglu Chen <public@yoctocell.xyz> wrote:

Toggle quote (17 lines)
> On Thu, Apr 29 2021, raingloom wrote:
>
> > Here is the updated patch. No idea if this actually works cross
> > compiled, but I don't have much time to test it. My suspicion is
> > that it's likely broken and requires changes to Idris 2's code
> > generators, because they almost definitely call Chez, GCC, etc,
> > with the wrong arguments.
>
> I noticed that there is an ‘idris2_app’ directory in the ‘bin’
> directory
>
> $ ls /gnu/store/va62hzp46c3dp2vlcnqc7fg109axj8rq-idris2-0.3.0/bin
> idris2* idris2_app/
>
> What is this used for?
>

If you take a look at $(guix build idris2)/bin/idris2, it's actually
just a wrapper. It contains the supporting dynamically linked shared
objects and the executable itself.

I don't know the details of what each file does or why it's like this,
the codegen seems to use a similar structure for all backends. The
scheme files are probably all for the Chez backend, the shared objects
are either C libraries (for socket support and stuff), or compiled Chez
code. I just noticed the Racket script, that I have no idea about.

Idris 2's build system makes some... uhm... interesting choices, so
it's entirely possible that not all of those are necessary, or could be
moved somewhere more sensible.
X
X
Xinglu Chen wrote on 4 May 2021 19:12
(name . raingloom)(address . raingloom@riseup.net)
87mttae83x.fsf@yoctocell.xyz
On Mon, May 03 2021, raingloom wrote:

Toggle quote (33 lines)
> On Fri, 30 Apr 2021 10:24:42 +0200
> Xinglu Chen <public@yoctocell.xyz> wrote:
>
>> On Thu, Apr 29 2021, raingloom wrote:
>>
>> > Here is the updated patch. No idea if this actually works cross
>> > compiled, but I don't have much time to test it. My suspicion is
>> > that it's likely broken and requires changes to Idris 2's code
>> > generators, because they almost definitely call Chez, GCC, etc,
>> > with the wrong arguments.
>>
>> I noticed that there is an ‘idris2_app’ directory in the ‘bin’
>> directory
>>
>> $ ls /gnu/store/va62hzp46c3dp2vlcnqc7fg109axj8rq-idris2-0.3.0/bin
>> idris2* idris2_app/
>>
>> What is this used for?
>
> If you take a look at $(guix build idris2)/bin/idris2, it's actually
> just a wrapper. It contains the supporting dynamically linked shared
> objects and the executable itself.
>
> I don't know the details of what each file does or why it's like this,
> the codegen seems to use a similar structure for all backends. The
> scheme files are probably all for the Chez backend, the shared objects
> are either C libraries (for socket support and stuff), or compiled Chez
> code. I just noticed the Racket script, that I have no idea about.
>
> Idris 2's build system makes some... uhm... interesting choices, so
> it's entirely possible that not all of those are necessary, or could be
> moved somewhere more sensible.

Looking at the Nix package, they remove the wrapper and instead move
bin/idris2_app/idris2.so to bin/idris2 and wraps that executable[1].
Perhaps we could do the same thing? I am not familiar with Idris,
though.

R
R
raingloom wrote on 11 May 2021 23:47
(name . Xinglu Chen)(address . public@yoctocell.xyz)
20210511234734.5cf190af@riseup.net
On Tue, 04 May 2021 19:12:18 +0200
Xinglu Chen <public@yoctocell.xyz> wrote:

Toggle quote (44 lines)
> On Mon, May 03 2021, raingloom wrote:
>
> > On Fri, 30 Apr 2021 10:24:42 +0200
> > Xinglu Chen <public@yoctocell.xyz> wrote:
> >
> >> On Thu, Apr 29 2021, raingloom wrote:
> >>
> >> > Here is the updated patch. No idea if this actually works cross
> >> > compiled, but I don't have much time to test it. My suspicion is
> >> > that it's likely broken and requires changes to Idris 2's code
> >> > generators, because they almost definitely call Chez, GCC, etc,
> >> > with the wrong arguments.
> >>
> >> I noticed that there is an ‘idris2_app’ directory in the ‘bin’
> >> directory
> >>
> >> $ ls /gnu/store/va62hzp46c3dp2vlcnqc7fg109axj8rq-idris2-0.3.0/bin
> >> idris2* idris2_app/
> >>
> >> What is this used for?
> >
> > If you take a look at $(guix build idris2)/bin/idris2, it's actually
> > just a wrapper. It contains the supporting dynamically linked shared
> > objects and the executable itself.
> >
> > I don't know the details of what each file does or why it's like
> > this, the codegen seems to use a similar structure for all
> > backends. The scheme files are probably all for the Chez backend,
> > the shared objects are either C libraries (for socket support and
> > stuff), or compiled Chez code. I just noticed the Racket script,
> > that I have no idea about.
> >
> > Idris 2's build system makes some... uhm... interesting choices, so
> > it's entirely possible that not all of those are necessary, or
> > could be moved somewhere more sensible.
>
> Looking at the Nix package, they remove the wrapper and instead move
> bin/idris2_app/idris2.so to bin/idris2 and wraps that executable[1].
> Perhaps we could do the same thing? I am not familiar with Idris,
> though.
>
> [1]:
> https://github.com/nixos/nixpkgs/blob//pkgs/development/compilers/idris2/default.nix#L41

That link doesn't work.

I have some more pressing projects to work on, but I'll look into it.
X
X
Xinglu Chen wrote on 14 May 2021 14:08
(name . raingloom)(address . raingloom@riseup.net)
87o8ddjz5q.fsf@yoctocell.xyz
On Tue, May 11 2021, raingloom wrote:

Toggle quote (6 lines)
>>
>> [1]:
>> https://github.com/nixos/nixpkgs/blob//pkgs/development/compilers/idris2/default.nix#L41
>
> That link doesn't work.

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

iQJJBAEBCAAzFiEEAVhh4yyK5+SEykIzrPUJmaL7XHkFAmCeaEEVHHB1YmxpY0B5
b2N0b2NlbGwueHl6AAoJEKz1CZmi+1x5w44P/AoVY/C8RAX8irx/ugyxu2tQcYwt
QZdVOsZG4Ek/v0ooT3FX9kkvwZ99MF4RuIv20P/02bnkreylC+yhsa8scF4yDXvh
TeY4X/OIzH7ge0FTe1I7XBCO/5acQ4ZTznIBE4/1VmYXOyikmTd5tpRYfrANFB8k
5oadiNNXddsUZ3YpQc30/83svrcPJ78dqAQATFQO05MahY/CV/XY7XPZKDhd830R
vsfo9M8xloJ3olqt6cazPbYiOdZNKtWYuJ4nEgNbYOPQztn/BC2umKP3aKPQy16p
bHqi1GBXj0GmBZk+G5zdW5MeSFGbD+xQQGteozRkcj63EWWKLjRaBzemyXBJ5RAq
hFE+FAeZBOpZmagwEx9ns5PYzLKblVFZGafGnSmX37WxhRQN7e5IdBaGTphxIS0b
+/rzoS+VT2VI27ivH/9oICzLcvv9l6ao7Gydb/3y3BCrxuPObR1LFs5i5Pl6Xejq
OjBuSH1eiM2ExMlBO0z94puM6Mb0JbOQh/MzRKfDyGx+u6eYnU8IMQTJaXaLprtd
/xcDGw0Z/G1dtM0VyAdwVbj9YplxdCJUGZOJwhF/SqOGS865HsaiOAkHOrcm3Fs0
6cCwiwLNKW6MMMpi3WWWq3lxqgpxidJ237oIU47F6Z5dPV+8fDYyNr5KjJjS8AGE
J5WkuJQKduZEmK+F
=ZkQf
-----END PGP SIGNATURE-----

T
T
Tobias Geerinckx-Rice wrote on 11 May 14:58 +0200
(no subject)
(address . control@debbugs.gnu.org)
63d7377afc5e206fc2485052563cb927@tobias.gr
merge 49607 46124
?