--- Begin Message ---
Subject: |
Add guile-goblins |
Date: |
Fri, 24 Jun 2022 17:24:01 -0400 |
User-agent: |
mu4e 1.6.11; emacs 28.1 |
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
>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
--- End Message ---
--- Begin Message ---
Subject: |
Re: [bug#56204] Add guile-goblins |
Date: |
Fri, 24 Jun 2022 22:36:39 -0400 |
User-agent: |
mu4e 1.6.11; emacs 28.1 |
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. :)
--- End Message ---