[bug#56204] Add guile-goblins

Message ID 87sfntlpns.fsf@dustycloud.org
State New
Headers
Series [bug#56204] Add guile-goblins |

Commit Message

Christine Lemmer-Webber June 24, 2022, 9:24 p.m. UTC
  Finally! ;)

It's a pretty small change, just adding a leaf package, but I figured
since it's adding a package I maintain the project of, best to get
review.

 - Christine
  

Comments

Maxime Devos June 24, 2022, 9:57 p.m. UTC | #1
Christine Lemmer-Webber schreef op vr 24-06-2022 om 17:24 [-0400]:
> +    (arguments
> +     `(#:phases
> +       (modify-phases %standard-phases
> +         (replace 'bootstrap
> +           (lambda _
> +             (invoke "autoreconf" "-vif"))))

I don't know if it works in this particular case, but I thought that
normally 'bootstrap' would automatically do that already?

> +       #:make-flags
> +       ,#~(list "GUILE_AUTO_COMPILE=0")))

Nesting different forms of quasiquotation seems to be disliked (at
least according to a mini poll I did on #guix some time ago),
apparently

(arguments
  (list #:phases
        #~(modify-phases ...)
        #:make-flags
        #~(list ...)))

seems to be the way to go?


> +    (native-inputs
> +     (list autoconf automake pkg-config texinfo))
> +    (inputs
> +     `(("guile" ,guile-3.0)))

Can be simplified to (inputs (list guile-3.0))?


> +     "@code{guile-goblins} is the Guile version of
> + @url{https://spritely.institute/goblins, Spritely Goblins},
> +a transactional, distributed programming environment following object
> +capability security designs.  Goblins is a general toolkit, and also
> +the core layer of Spritely's work to support healthy distributed
> +networked communities.")

Maybe mention that it can network with non-Guile goblin peers as well
(e.g. Racket?), assuming that's correct?

Greetings,
Maxime.
  
Christine Lemmer-Webber June 25, 2022, 2:36 a.m. UTC | #2
Hey Maxime!

Maxime Devos <maximedevos@telenet.be> writes:

> [[PGP Signed Part:Undecided]]
> Christine Lemmer-Webber schreef op vr 24-06-2022 om 17:24 [-0400]:
>> +    (arguments
>> +     `(#:phases
>> +       (modify-phases %standard-phases
>> +         (replace 'bootstrap
>> +           (lambda _
>> +             (invoke "autoreconf" "-vif"))))
>
> I don't know if it works in this particular case, but I thought that
> normally 'bootstrap' would automatically do that already?

Ah yeah, seems to work without it...!

>> +       #:make-flags
>> +       ,#~(list "GUILE_AUTO_COMPILE=0")))
>
> Nesting different forms of quasiquotation seems to be disliked (at
> least according to a mini poll I did on #guix some time ago),
> apparently
>
> (arguments
>   (list #:phases
>         #~(modify-phases ...)
>         #:make-flags
>         #~(list ...)))
>
> seems to be the way to go?
>
>> +    (native-inputs
>> +     (list autoconf automake pkg-config texinfo))
>> +    (inputs
>> +     `(("guile" ,guile-3.0)))
>
> Can be simplified to (inputs (list guile-3.0))?

Cool, done.  For (inputs ...) anyway... the above native-inputs did
still seem needed, presumably because we *are* running the bootstrap
code in this case.

>> +     "@code{guile-goblins} is the Guile version of
>> + @url{https://spritely.institute/goblins, Spritely Goblins},
>> +a transactional, distributed programming environment following object
>> +capability security designs.  Goblins is a general toolkit, and also
>> +the core layer of Spritely's work to support healthy distributed
>> +networked communities.")
>
> Maybe mention that it can network with non-Guile goblin peers as well
> (e.g. Racket?), assuming that's correct?
>
> Greetings,
> Maxime.

It's true, but more accurately, it will be true in the next version,
since guile-goblins v0.8 doesn't have finished networking support.
But yes, that's coming, so I put this comment above the description:

    ;; In guile-goblins 0.9, OCapN support will be added (it already
    ;; exists in racket-goblins).  At that point we should add the
    ;; following to this description:
    ;;
    ;;   Goblins allows for cooperation between networked programs
    ;;   in a mutually suspicious network through OCapN, the Object
    ;;   Capability Network.  This includes collaboration across
    ;;   runtimes; for instance, programs written in the Guile and Racket
    ;;   versions of Goblins are able to speak to each other.

And we can do that then.  As said in the other email, I don't think this
is far away.

Thanks to both Maxime and Ludo' for reviewing!  I pushed it upstream.
Happy hacking with guile-goblins... if someone does anything with it,
let me know.  The next release will be the first big guile-goblins
release to celebrate, but was eager to get what we have up there. :)
  
Maxime Devos June 25, 2022, 9:32 a.m. UTC | #3
Christine Lemmer-Webber schreef op vr 24-06-2022 om 17:24 [-0400]:
> +    (version "0.8")
> +    (source
> +     (origin
> +       (method git-fetch)
> +       (uri (git-reference
> +             (url "https://gitlab.com/spritely/guile-goblins/")
> +             (commit (string-append "v" version))))
> +       (file-name (string-append name "-" version))
> +       (sha256
> +        (base32
> +         "1mmyykh79jwhrfgnhhw94aw7a8m6qw249kj7k60ynj16mcfm5iyy"))))


I'm not seeing "--target" in  the invocation of "$(GUILE_TOOLS)
compile", so I don't think that currently it will cross-compile
correctly.  Could you add a --target=... in the Makefile.am?

Greetings,
Maxime.
  
Ludovic Courtès June 25, 2022, 9:46 p.m. UTC | #4
Maxime Devos <maximedevos@telenet.be> skribis:

> Christine Lemmer-Webber schreef op vr 24-06-2022 om 17:24 [-0400]:
>> +    (version "0.8")
>> +    (source
>> +     (origin
>> +       (method git-fetch)
>> +       (uri (git-reference
>> +             (url "https://gitlab.com/spritely/guile-goblins/")
>> +             (commit (string-append "v" version))))
>> +       (file-name (string-append name "-" version))
>> +       (sha256
>> +        (base32
>> +         "1mmyykh79jwhrfgnhhw94aw7a8m6qw249kj7k60ynj16mcfm5iyy"))))
>
>
> I'm not seeing "--target" in  the invocation of "$(GUILE_TOOLS)
> compile", so I don't think that currently it will cross-compile
> correctly.  Could you add a --target=... in the Makefile.am?

That can come upstream in the next version of Goblins IMO.

Ludo’.
  
Ludovic Courtès June 25, 2022, 9:49 p.m. UTC | #5
Hello Christine,

Christine Lemmer-Webber <cwebber@dustycloud.org> skribis:

>>From a09c70dac11dcc133c8e86c3c7e953019942e00c Mon Sep 17 00:00:00 2001
> From: Christine Lemmer-Webber <cwebber@dustycloud.org>
> Date: Fri, 24 Jun 2022 14:28:56 -0400
> Subject: [PATCH] gnu: Add guile-goblins.
>
> * gnu/packages/guile-xyz.scm (guile-goblins): New variable.

Woohoo, awesome!

I agree with the minor issues Maxime noted, but otherwise looks great
to me!  Go Spritely, go!!

Ludo’.
  

Patch

From a09c70dac11dcc133c8e86c3c7e953019942e00c Mon Sep 17 00:00:00 2001
From: Christine Lemmer-Webber <cwebber@dustycloud.org>
Date: Fri, 24 Jun 2022 14:28:56 -0400
Subject: [PATCH] gnu: Add guile-goblins.

* gnu/packages/guile-xyz.scm (guile-goblins): New variable.
---
 gnu/packages/guile-xyz.scm | 42 +++++++++++++++++++++++++++++++++++++-
 1 file changed, 41 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm
index 2ed6617fd2..853dfa832e 100644
--- a/gnu/packages/guile-xyz.scm
+++ b/gnu/packages/guile-xyz.scm
@@ -1,7 +1,7 @@ 
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2012-2022 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2014, 2015, 2018 Mark H Weaver <mhw@netris.org>
-;;; Copyright © 2015, 2017 Christine Lemmer-Webber <cwebber@dustycloud.org>
+;;; Copyright © 2015, 2017, 2022 Christine Lemmer-Webber <cwebber@dustycloud.org>
 ;;; Copyright © 2016 Alex Sassmannshausen <alex@pompo.co>
 ;;; Copyright © 2016, 2017, 2018, 2019, 2020, 2021, 2022 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2016 Erik Edrosa <erik.edrosa@gmail.com>
@@ -5103,3 +5103,43 @@  (define-public guile-termios
 termios API is used.  GNU Guile doesn't have an interface for that built in.
 This module implements this interface by use of Guile's dynamic FFI.")
     (license license:bsd-2)))
+
+(define-public guile-goblins
+  (package
+    (name "guile-goblins")
+    (version "0.8")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://gitlab.com/spritely/guile-goblins/")
+             (commit (string-append "v" version))))
+       (file-name (string-append name "-" version))
+       (sha256
+        (base32
+         "1mmyykh79jwhrfgnhhw94aw7a8m6qw249kj7k60ynj16mcfm5iyy"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'bootstrap
+           (lambda _
+             (invoke "autoreconf" "-vif"))))
+       #:make-flags
+       ,#~(list "GUILE_AUTO_COMPILE=0")))
+    (native-inputs
+     (list autoconf automake pkg-config texinfo))
+    (inputs
+     `(("guile" ,guile-3.0)))
+    (propagated-inputs
+     (list guile-fibers guile-gcrypt))
+    (home-page "https://spritely.institute/goblins")
+    (synopsis "Distributed programming environment for Guile")
+    (description
+     "@code{guile-goblins} is the Guile version of
+@url{https://spritely.institute/goblins, Spritely Goblins},
+a transactional, distributed programming environment following object
+capability security designs.  Goblins is a general toolkit, and also
+the core layer of Spritely's work to support healthy distributed
+networked communities.")
+    (license license:asl2.0)))
-- 
2.36.1