guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[shepherd] 01/08: Add Goblins port infrastructure.


From: Juliana Sims
Subject: [shepherd] 01/08: Add Goblins port infrastructure.
Date: Thu, 10 Oct 2024 08:53:00 -0400 (EDT)

juli pushed a commit to branch wip-goblinsify
in repository shepherd.

commit 9b92f89d0cef7dff37e067666ac24a3f0561370b
Author: Juliana Sims <juli@incana.org>
AuthorDate: Fri Jun 21 15:08:52 2024 -0400

    Add Goblins port infrastructure.
    
    * .dir-locals.el: Add Goblins helper indentation rules.
    * README: Mention and explain Goblins port.
    * goblins-port-manifest.scm: New file.
---
 .dir-locals.el            |  4 +-
 README                    | 26 +++++++++++++
 goblins-port-manifest.scm | 97 +++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 126 insertions(+), 1 deletion(-)

diff --git a/.dir-locals.el b/.dir-locals.el
index 1794531..9602e24 100644
--- a/.dir-locals.el
+++ b/.dir-locals.el
@@ -14,6 +14,8 @@
      (eval . (put 'let-loop 'scheme-indent-function 2))
      (eval . (put 'with-blocked-signals 'scheme-indent-function 1))
      (eval . (put 'with-process-monitor 'scheme-indent-function 0))
-     (eval . (put 'with-service-registry 'scheme-indent-function 0))))
+     (eval . (put 'with-service-registry 'scheme-indent-function 0))
+     (eval . (put 'call-with-vat 'scheme-indent-function 1))
+     (eval . (put 'with-vat 'scheme-indent-function 1))))
  (texinfo-mode    . ((indent-tabs-mode . nil)
                      (fill-column . 72))))
diff --git a/README b/README
index 349901b..dec8b76 100644
--- a/README
+++ b/README
@@ -12,6 +12,32 @@ on every POSIX-like system where Guile is available.
 In a previous life, the GNU Shepherd was known as GNU dmd, the
 daemon-managing daemon.
 
+** What is this branch?
+
+This is the working branch for the port of the Shepherd to the
+[[https://spritely.institute/goblins/][Spritely Goblins]] object-capability
+security library. There is a description of this work on the
+[[https://spritely.institute/news/spritely-nlnet-grants-december-2023.html][Spritely
+blog]].
+
+*** What is the status of this branch? (may be out of date)
+
+At present, this branch is for planning and prototyping. The files
+~scratch.scm~ and ~scratch-demo.scm~ are playgrounds for exploring the
+architecture and shape of the Goblins version of Shepherd. While no commits
+are yet guaranteed to work properly, a working commit will allow you to run
+the existing code and see some interesting or informative output by:
+
+    guile scratch.scm scratch-demo.scm
+
+or
+
+    guile -l scratch.scm scratch-demo.scm
+
+If you're not in a context with Guile, Guile Goblins, and Guile Fibers
+available, you'll need to get those first. You can use
+~guix shell -m goblins-port-manifest.scm~ if you're on Guix.
+
 ** Requirements
 
 The GNU Shepherd depends on the following pieces of software:
diff --git a/goblins-port-manifest.scm b/goblins-port-manifest.scm
new file mode 100644
index 0000000..3a086dc
--- /dev/null
+++ b/goblins-port-manifest.scm
@@ -0,0 +1,97 @@
+;; Development environment for Shepherd Goblins port
+(use-modules (gnu packages autotools)
+             (gnu packages flex)
+             (gnu packages gettext)
+             (gnu packages gperf)
+             (gnu packages guile)
+             (gnu packages guile-xyz)
+             (gnu packages texinfo)
+             (guix git-download)
+             (guix packages))
+
+(define (version->latest pkg rev commit)
+  (git-version (package-version pkg) rev commit))
+
+;; this isn't actually useful in this file because only Fibers is packaged with
+;; git-download and we need to drop the patches Guix provides for Fibers...
+;; it's here for future reference because this pattern comes up often
+(define (update-source-git-commit pkg name version commit hash)
+  (let ((pkg-src (package-source pkg)))
+    (origin
+      (inherit pkg-src)
+      (uri (git-reference
+            (inherit (origin-uri pkg-src))
+            (commit commit)))
+      (file-name (git-file-name name version))
+      (sha256 (base32 hash)))))
+
+(define guile-git
+  (let ((rev "0")
+        (commit "27feb2bfd"))
+    (package
+      (inherit guile-3.0)
+      (name "guile-git")
+      (version (version->latest guile-3.0 rev commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://git.savannah.gnu.org/git/guile.git";)
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "1h9gl2rirvcn7jgdrv963gc0nv4p23gizm9asp4x7fi1k86l3sxr"))))
+      (native-inputs
+       (modify-inputs (package-native-inputs guile-3.0)
+         (prepend autoconf
+                  automake
+                  flex
+                  gettext-minimal
+                  gperf
+                  libtool
+                  texinfo-7))))))
+
+(define guile-fibers-git
+  (let ((rev "0")
+        (commit "f92e5cb"))
+    (package
+      (inherit guile-fibers)
+      (name "guile-fibers-git")
+      (version (version->latest guile-fibers rev commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/wingo/fibers.git";)
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "1c9z9nnlf9cprx96drbkmpc01c8jv0pzp0as1ivkrvhhmflls5bv")))))))
+
+(define guile-goblins-git
+  (let ((rev "0")
+        (commit "83f79d7"))
+    (package
+      (inherit guile-goblins)
+      (name "guile-goblins-git")
+      (version (version->latest guile-goblins rev commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://gitlab.com/spritely/guile-goblins.git";)
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "1hxi6l3wmg8ywgd11xn2bi54y11wrvg9rgm0blqzdkwcl6cg1ay3"))))
+      (native-inputs
+       (modify-inputs (package-native-inputs guile-3.0)
+         (prepend autoconf
+                  automake
+                  texinfo-7))))))
+
+;; We use the latest git commits to the main branch of each of our dependencies
+;; because we like to live dangerously
+(packages->manifest (list guile-git
+                          guile-fibers-git
+                          guile-goblins-git))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]