GNU bug report logs - #52699
[PATCH] gnu: Add nar-herder.

Previous Next

Package: guix-patches;

Reported by: Christopher Baines <mail <at> cbaines.net>

Date: Tue, 21 Dec 2021 10:28:02 UTC

Severity: normal

Tags: patch

Done: Christopher Baines <mail <at> cbaines.net>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 52699 in the body.
You can then email your comments to 52699 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to guix-patches <at> gnu.org:
bug#52699; Package guix-patches. (Tue, 21 Dec 2021 10:28:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Christopher Baines <mail <at> cbaines.net>:
New bug report received and forwarded. Copy sent to guix-patches <at> gnu.org. (Tue, 21 Dec 2021 10:28:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Christopher Baines <mail <at> cbaines.net>
To: guix-patches <at> gnu.org
Subject: [PATCH] gnu: Add nar-herder.
Date: Tue, 21 Dec 2021 10:27:11 +0000
* gnu/packages/package-management.scm (nar-herder): New variable.
---
 gnu/packages/package-management.scm | 109 ++++++++++++++++++++++++++++
 1 file changed, 109 insertions(+)

diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index 12736c6caf..feb56f2a9b 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -1441,6 +1441,115 @@ (define-public guix-jupyter
 in an isolated environment, in separate namespaces.")
     (license license:gpl3+)))
 
+(define-public nar-herder
+  (let ((commit "049dfec287fa948cac6682d0a047bc0ed356f0bf")
+        (revision "1"))
+    (package
+      (name "nar-herder")
+      (version (git-version "0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://git.cbaines.net/git/guix/nar-herder")
+                      (commit commit)))
+                (sha256
+                 (base32
+                  "1bkn6avcyp2rcrqaync65b8yn9dvxlkjpk3mdk5nsy527dzhs5ws"))
+                (file-name (string-append name "-" version "-checkout"))))
+      (build-system gnu-build-system)
+      (arguments
+       `(#:modules (((guix build guile-build-system)
+                     #:select (target-guile-effective-version))
+                    ,@%gnu-build-system-modules)
+         #:imported-modules ((guix build guile-build-system)
+                             ,@%gnu-build-system-modules)
+         #:phases
+         (modify-phases %standard-phases
+           (add-before 'build 'set-GUILE_AUTO_COMPILE
+             (lambda _
+               ;; To avoid warnings relating to 'guild'.
+               (setenv "GUILE_AUTO_COMPILE" "0")
+               #t))
+           (add-after 'install 'wrap-executable
+             (lambda* (#:key inputs outputs target #:allow-other-keys)
+               (let* ((out (assoc-ref outputs "out"))
+                      (bin (string-append out "/bin"))
+                      (guile (assoc-ref inputs "guile"))
+                      (version (target-guile-effective-version))
+                      (scm (string-append out "/share/guile/site/" version))
+                      (go  (string-append out "/lib/guile/" version "/site-ccache")))
+                 (for-each
+                  (lambda (file)
+                    (simple-format (current-error-port) "wrapping: ~A\n" file)
+                    (let ((guile-inputs (list
+                                         "guile-json"
+                                         "guile-gcrypt"
+                                         "guix"
+                                         "guile-lib"
+                                         "guile-sqlite3"
+                                         "gnutls"
+                                         "guile-fibers")))
+                      (wrap-program file
+                        `("GUILE_LOAD_PATH" ":" prefix
+                          (,scm ,(string-join
+                                  (map (lambda (input)
+                                         (simple-format
+                                          #f "~A/share/guile/site/~A"
+                                          (assoc-ref inputs input)
+                                          version))
+                                       guile-inputs)
+                                  ":")))
+                        `("GUILE_LOAD_COMPILED_PATH" ":" prefix
+                          (,go ,(string-join
+                                 (map (lambda (input)
+                                        (simple-format
+                                         #f "~A/lib/guile/~A/site-ccache"
+                                         (assoc-ref inputs input)
+                                         version))
+                                      guile-inputs)
+                                 ":"))))))
+                  (find-files bin)))
+               #t))
+           (delete 'strip))))           ; As the .go files aren't compatible
+      (native-inputs
+       (list pkg-config
+             autoconf
+             automake
+             gnutls
+
+             ;; Guile libraries are needed here for cross-compilation.
+             guile-3.0
+             guile-json-4
+             guile-gcrypt
+             guix
+             guile-fibers
+             guile-lib
+             guile-sqlite3))
+      (inputs
+       (list bash-minimal
+             guile-3.0))
+      (propagated-inputs
+       (list guile-json-4
+             guile-gcrypt
+             guix
+             guile-fibers
+             guile-lib
+             guile-sqlite3
+             gnutls))
+      (home-page "https://git.cbaines.net/guix/nar-herder")
+      (synopsis "Utility for managing and serving nars")
+      (description
+       "The Nar Herder is a utility for managing a collection of
+nars (normalized archives, in the context of Guix) along with the
+corresponding narinfo files which contain some signed metadata.
+
+It can assist in serving a collection of nars, moving them between machines,
+or mirroring an existing collection of nars.
+
+It's currently a working prototype, many designed features aren't implemented,
+and the error handling is very rough.")
+      (license license:gpl3+))))
+
 (define-public gcab
   (package
     (name "gcab")
-- 
2.33.1





Information forwarded to guix-patches <at> gnu.org:
bug#52699; Package guix-patches. (Tue, 21 Dec 2021 11:03:01 GMT) Full text and rfc822 format available.

Message #8 received at 52699 <at> debbugs.gnu.org (full text, mbox):

From: Ludovic Courtès <ludo <at> gnu.org>
To: Christopher Baines <mail <at> cbaines.net>
Cc: 52699 <at> debbugs.gnu.org
Subject: Re: bug#52699: [PATCH] gnu: Add nar-herder.
Date: Tue, 21 Dec 2021 12:02:48 +0100
Hello!

Christopher Baines <mail <at> cbaines.net> skribis:

> * gnu/packages/package-management.scm (nar-herder): New variable.

[...]

> +           (add-before 'build 'set-GUILE_AUTO_COMPILE
> +             (lambda _
> +               ;; To avoid warnings relating to 'guild'.
> +               (setenv "GUILE_AUTO_COMPILE" "0")
> +               #t))

You can omit trailing #t’s.

> +           (add-after 'install 'wrap-executable
> +             (lambda* (#:key inputs outputs target #:allow-other-keys)
> +               (let* ((out (assoc-ref outputs "out"))
> +                      (bin (string-append out "/bin"))
> +                      (guile (assoc-ref inputs "guile"))
> +                      (version (target-guile-effective-version))
> +                      (scm (string-append out "/share/guile/site/" version))
> +                      (go  (string-append out "/lib/guile/" version "/site-ccache")))
> +                 (for-each
> +                  (lambda (file)
> +                    (simple-format (current-error-port) "wrapping: ~A\n" file)
> +                    (let ((guile-inputs (list
> +                                         "guile-json"
> +                                         "guile-gcrypt"
> +                                         "guix"
> +                                         "guile-lib"
> +                                         "guile-sqlite3"
> +                                         "gnutls"
> +                                         "guile-fibers")))
> +                      (wrap-program file
> +                        `("GUILE_LOAD_PATH" ":" prefix
> +                          (,scm ,(string-join
> +                                  (map (lambda (input)
> +                                         (simple-format
> +                                          #f "~A/share/guile/site/~A"
> +                                          (assoc-ref inputs input)
> +                                          version))
> +                                       guile-inputs)
> +                                  ":")))
> +                        `("GUILE_LOAD_COMPILED_PATH" ":" prefix
> +                          (,go ,(string-join
> +                                 (map (lambda (input)
> +                                        (simple-format
> +                                         #f "~A/lib/guile/~A/site-ccache"
> +                                         (assoc-ref inputs input)
> +                                         version))
> +                                      guile-inputs)
> +                                 ":"))))))

I’d use ‘string-append’ rather than ‘format’.

(It’d be nice to have a streamlined solution to wrap those Guile
executables…)

> +      (license license:gpl3+))))

I believe it’s ‘agpl3+’ (though GPLv3+ would make it easier to share
code with Guix; something worth considering).

Otherwise LGTM, thanks!

Ludo’.




Reply sent to Christopher Baines <mail <at> cbaines.net>:
You have taken responsibility. (Tue, 21 Dec 2021 11:25:01 GMT) Full text and rfc822 format available.

Notification sent to Christopher Baines <mail <at> cbaines.net>:
bug acknowledged by developer. (Tue, 21 Dec 2021 11:25:01 GMT) Full text and rfc822 format available.

Message #13 received at 52699-done <at> debbugs.gnu.org (full text, mbox):

From: Christopher Baines <mail <at> cbaines.net>
To: Ludovic Courtès <ludo <at> gnu.org>
Cc: 52699-done <at> debbugs.gnu.org
Subject: Re: bug#52699: [PATCH] gnu: Add nar-herder.
Date: Tue, 21 Dec 2021 11:23:29 +0000
[Message part 1 (text/plain, inline)]
Ludovic Courtès <ludo <at> gnu.org> writes:

> Hello!
>
> Christopher Baines <mail <at> cbaines.net> skribis:
>
>> * gnu/packages/package-management.scm (nar-herder): New variable.
>
> [...]
>
>> +           (add-before 'build 'set-GUILE_AUTO_COMPILE
>> +             (lambda _
>> +               ;; To avoid warnings relating to 'guild'.
>> +               (setenv "GUILE_AUTO_COMPILE" "0")
>> +               #t))
>
> You can omit trailing #t’s.
>
>> +           (add-after 'install 'wrap-executable
>> +             (lambda* (#:key inputs outputs target #:allow-other-keys)
>> +               (let* ((out (assoc-ref outputs "out"))
>> +                      (bin (string-append out "/bin"))
>> +                      (guile (assoc-ref inputs "guile"))
>> +                      (version (target-guile-effective-version))
>> +                      (scm (string-append out "/share/guile/site/" version))
>> +                      (go  (string-append out "/lib/guile/" version "/site-ccache")))
>> +                 (for-each
>> +                  (lambda (file)
>> +                    (simple-format (current-error-port) "wrapping: ~A\n" file)
>> +                    (let ((guile-inputs (list
>> +                                         "guile-json"
>> +                                         "guile-gcrypt"
>> +                                         "guix"
>> +                                         "guile-lib"
>> +                                         "guile-sqlite3"
>> +                                         "gnutls"
>> +                                         "guile-fibers")))
>> +                      (wrap-program file
>> +                        `("GUILE_LOAD_PATH" ":" prefix
>> +                          (,scm ,(string-join
>> +                                  (map (lambda (input)
>> +                                         (simple-format
>> +                                          #f "~A/share/guile/site/~A"
>> +                                          (assoc-ref inputs input)
>> +                                          version))
>> +                                       guile-inputs)
>> +                                  ":")))
>> +                        `("GUILE_LOAD_COMPILED_PATH" ":" prefix
>> +                          (,go ,(string-join
>> +                                 (map (lambda (input)
>> +                                        (simple-format
>> +                                         #f "~A/lib/guile/~A/site-ccache"
>> +                                         (assoc-ref inputs input)
>> +                                         version))
>> +                                      guile-inputs)
>> +                                 ":"))))))
>
> I’d use ‘string-append’ rather than ‘format’.
>
> (It’d be nice to have a streamlined solution to wrap those Guile
> executables…)
>
>> +      (license license:gpl3+))))
>
> I believe it’s ‘agpl3+’ (though GPLv3+ would make it easier to share
> code with Guix; something worth considering).
>
> Otherwise LGTM, thanks!

Thanks for taking a look! I've pushed as
6f76678cb7575072395198c343a9fecc52839513 with the changes you mentioned
above.

Thanks,

Chris
[signature.asc (application/pgp-signature, inline)]

bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Tue, 18 Jan 2022 12:24:12 GMT) Full text and rfc822 format available.

This bug report was last modified 3 years and 147 days ago.

Previous Next


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