unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
* [bug#65732] [PATCH 0/2] Add the Build Farm Front-End
@ 2023-09-04 12:29 Christopher Baines
  2023-09-04 12:32 ` [bug#65732] [PATCH 1/2] gnu: Add bffe Christopher Baines
  0 siblings, 1 reply; 8+ messages in thread
From: Christopher Baines @ 2023-09-04 12:29 UTC (permalink / raw)
  To: 65732

[-- Attachment #1: Type: text/plain, Size: 648 bytes --]

This is the package and service for the Build Farm Front-End, intended
to replace the Guix Build Coordinator queue builds script, and also
provide a web interface for build farms.


Christopher Baines (2):
  gnu: Add bffe.
  services: guix: Add bffe-service-type.

 doc/guix.texi                       |  59 +++++++++++++
 gnu/packages/package-management.scm |  51 +++++++++++
 gnu/services/guix.scm               | 131 +++++++++++++++++++++++++++-
 gnu/tests/guix.scm                  |  81 ++++++++++++++++-
 4 files changed, 320 insertions(+), 2 deletions(-)


base-commit: 8d70ff3a49f7cdf0eab93b3a1c54ec2f016afc4a
-- 
2.41.0

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 987 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [bug#65732] [PATCH 1/2] gnu: Add bffe.
  2023-09-04 12:29 [bug#65732] [PATCH 0/2] Add the Build Farm Front-End Christopher Baines
@ 2023-09-04 12:32 ` Christopher Baines
  2023-09-04 12:32   ` [bug#65732] [PATCH 2/2] services: guix: Add bffe-service-type Christopher Baines
  2023-09-14 14:58   ` [bug#65732] " Ludovic Courtès
  0 siblings, 2 replies; 8+ messages in thread
From: Christopher Baines @ 2023-09-04 12:32 UTC (permalink / raw)
  To: 65732

* gnu/packages/package-management.scm (bffe): New variable.
---
 gnu/packages/package-management.scm | 51 +++++++++++++++++++++++++++++
 1 file changed, 51 insertions(+)

diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index aa24798071..a49f302bb7 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -961,6 +961,57 @@ (define-public rpm
     ;; The whole is GPLv2+; librpm itself is dual-licensed LGPLv2+ | GPLv2+.
     (license license:gpl2+)))
 
+(define-public bffe
+  (let ((commit "3ce4613908bb4a42494323ef0597f6c3ae2dee24")
+        (revision "1"))
+    (package
+      (name "bffe")
+      (version (git-version "0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://git.cbaines.net/guix/bffe")
+                      (commit commit)))
+                (sha256
+                 (base32
+                  "0g7arfl8rwybqpmw8vc16ilvrva1bb435lqgbqypx0nphbcv2pxn"))
+                (file-name (string-append name "-" version "-checkout"))))
+      (build-system gnu-build-system)
+      (native-inputs
+       (list pkg-config
+             autoconf
+             automake
+
+             ;; Guile libraries are needed here for cross-compilation.
+             (car (assoc-ref (package-native-inputs guix) "guile"))
+             guile-gnutls
+             guile-json-4
+             guix
+             guix-data-service
+             guix-build-coordinator
+             guile-fibers-1.3
+             guile-prometheus
+             guile-lib))
+      (propagated-inputs
+       (list guile-gnutls
+             guile-json-4
+             guix
+             guix-data-service
+             guix-build-coordinator
+             guile-fibers-1.3
+             guile-prometheus
+             guile-lib))
+      (home-page "https://git.cbaines.net/guix/bffe")
+      (synopsis "Build Farm Front-end for Guix")
+      (description
+       "The BFFE of Build Farm Front-end is an experimental frontend for Guix
+build farms.  It works together with the Guix Data Service and Guix Build
+Coordinator to submit builds and monitor the activity.
+
+It functions as a Guile library, with the @code{run-bffe-service} procedure in
+the @code{(bffe)} module as the entry point.")
+      (license license:gpl3+))))
+
 (define-public python-anaconda-client
   (package
     (name "python-anaconda-client")

base-commit: 8d70ff3a49f7cdf0eab93b3a1c54ec2f016afc4a
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [bug#65732] [PATCH 2/2] services: guix: Add bffe-service-type.
  2023-09-04 12:32 ` [bug#65732] [PATCH 1/2] gnu: Add bffe Christopher Baines
@ 2023-09-04 12:32   ` Christopher Baines
  2023-09-14 15:02     ` [bug#65732] [PATCH 0/2] Add the Build Farm Front-End Ludovic Courtès
  2023-09-14 14:58   ` [bug#65732] " Ludovic Courtès
  1 sibling, 1 reply; 8+ messages in thread
From: Christopher Baines @ 2023-09-04 12:32 UTC (permalink / raw)
  To: 65732

This is intended to replace the functionality of the Guix Build Coordinator
queue builds script, and also provide a web interface for build farms.

* gnu/services/guix.scm (<bffe-configuration>): New record type.
(bffe-configuration, bffe-configuration?,
bffe-configuration-package,
bffe-configuration-user,
bffe-configuration-group,
bffe-configuration-arguments
bffe-configuration-extra-environment-variables): New procedures.
(bffe-service-type): New variable.
* gnu/tests/guix.scm (%test-bffe): New variable.
* doc/guix.texi (Guix Services): Document the new service.
---
 doc/guix.texi         |  59 +++++++++++++++++++
 gnu/services/guix.scm | 131 +++++++++++++++++++++++++++++++++++++++++-
 gnu/tests/guix.scm    |  81 +++++++++++++++++++++++++-
 3 files changed, 269 insertions(+), 2 deletions(-)

diff --git a/doc/guix.texi b/doc/guix.texi
index a6b74ce9c7..bf12f8945d 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -38083,6 +38083,65 @@ PAM Mount Service
 @node Guix Services
 @subsection Guix Services
 
+@subsubheading Build Farm Front-End (BFFE)
+The @uref{https://git.cbaines.net/guix/bffe/,Build Farm Front-End}
+assists with building Guix packages in bulk.  It's responsible for
+submitting builds and displaying the status of the build farm.
+
+@defvar bffe-service-type
+Service type for the Build Farm Front-End.  Its value must be a
+@code{bffe-configuration} object.
+@end defvar
+
+@deftp {Data Type} bffe-configuration
+Data type representing the configuration of the Build Farm Front-End.
+
+@table @asis
+@item @code{package} (default: @code{bffe})
+The Build Farm Front-End package to use.
+
+@item @code{user} (default: @code{"bffe"})
+The system user to run the service as.
+
+@item @code{group} (default: @code{"bffe"})
+The system group to run the service as.
+
+@item @code{arguments}
+A list of arguments to the Build Farm Front-End.  These are passed to
+the @code{run-bffe-service} procedure when starting the service.
+
+For example, the following value directs the Build Farm Front-End to
+submit builds for derivations available from @code{data.guix.gnu.org} to
+the Build Coordinator instance assumed to be running on the same
+machine.
+
+@example
+(list
+ #:build
+ (list
+  (build-from-guix-data-service
+   (data-service-url "https://data.guix.gnu.org")
+   (build-coordinator-url "http://127.0.0.1:8746")
+   (branches '("master"))
+   (systems '("x86_64-linux" "i686-linux"))
+   (systems-and-targets
+    (map (lambda (target)
+           (cons "x86_64-linux" target))
+         '("aarch64-linux-gnu"
+           "i586-pc-gnu")))
+   (build-priority (const 0))))
+ #:web-server-args
+ '(#:event-source "https://example.com"
+   #:controller-args
+   (#:title "example.com build farm")))
+@end example
+
+@item @code{extra-environment-variables} (default: @var{'()})
+Extra environment variables to set via the shepherd service.
+
+@end table
+@end deftp
+
 @subsubheading Guix Build Coordinator
 The @uref{https://git.cbaines.net/guix/build-coordinator/,Guix Build
 Coordinator} aids in distributing derivation builds among machines
diff --git a/gnu/services/guix.scm b/gnu/services/guix.scm
index 99b21f52d8..e9db2a231d 100644
--- a/gnu/services/guix.scm
+++ b/gnu/services/guix.scm
@@ -140,7 +140,17 @@ (define-module (gnu services guix)
             nar-herder-cached-compression-configuration-type
             nar-herder-cached-compression-configuration-level
             nar-herder-cached-compression-configuration-directory
-            nar-herder-cached-compression-configuration-directory-max-size))
+            nar-herder-cached-compression-configuration-directory-max-size
+
+            bffe-configuration
+            bffe-configuration?
+            bffe-configuration-package
+            bffe-configuration-user
+            bffe-configuration-group
+            bffe-configuration-arguments
+            bffe-configuration-extra-environment-variables
+
+            bffe-service-type))
 
 ;;;; Commentary:
 ;;;
@@ -1030,3 +1040,122 @@ (define nar-herder-service-type
                         nar-herder-account)))
    (description
     "Run a Nar Herder server.")))
+
+\f
+;;;
+;;; Build Farm Front-end (BFFE)
+;;;
+
+(define-record-type* <bffe-configuration>
+  bffe-configuration make-bffe-configuration
+  bffe-configuration?
+  (package       bffe-configuration-package
+                 (default bffe))
+  (user          bffe-configuration-user
+                 (default "bffe"))
+  (group         bffe-configuration-group
+                 (default "bffe"))
+  (arguments     bffe-configuration-arguments)
+  (extra-environment-variables
+   bffe-configuration-extra-environment-variables
+   (default '())))
+
+(define (bffe-shepherd-services config)
+  (define bffe-package
+    (bffe-configuration-package config))
+
+  (define start-script
+    (program-file
+     "run-bffe"
+     (with-extensions (cons
+                       bffe-package
+                       ;; This is a poorly constructed Guile load path,
+                       ;; since it contains things that aren't Guile
+                       ;; libraries, but it means that the Guile
+                       ;; libraries needed for BFFE don't need to be
+                       ;; individually specified here.
+                       (map second (package-transitive-propagated-inputs
+                                    bffe-package)))
+       #~(begin
+           (use-modules (bffe)
+                        (bffe manage-builds))
+
+           (setvbuf (current-output-port) 'line)
+           (setvbuf (current-error-port) 'line)
+
+           (simple-format #t "starting the bffe:\n  ~A\n"
+                          (current-filename))
+
+           (apply run-bffe-service
+                  (append
+                   (list #:pid-file "/var/run/bffe/pid")
+                   #$(bffe-configuration-arguments config)))))
+     #:guile guile-3.0))
+
+  (match-record config <bffe-configuration>
+    (package user group arguments extra-environment-variables)
+
+    (list
+     (shepherd-service
+      (documentation "Build Farm Front-end")
+      (provision '(bffe))
+      (requirement '(networking))
+      (start #~(make-forkexec-constructor
+                (list #$start-script)
+                #:user #$user
+                #:group #$group
+                #:pid-file "/var/run/bffe/pid"
+                #:directory "/var/lib/bffe"
+                #:environment-variables
+                `(,(string-append
+                    "GUIX_LOCPATH=" #$glibc-utf8-locales "/lib/locale")
+                  "LC_ALL=en_US.utf8"
+                  #$@extra-environment-variables)
+                #:log-file "/var/log/bffe/server.log"))
+      (stop #~(make-kill-destructor))))))
+
+(define (bffe-activation config)
+  #~(begin
+      (use-modules (guix build utils))
+
+      (define %user
+        (getpw #$(bffe-configuration-user
+                  config)))
+
+      (chmod "/var/lib/bffe" #o755)
+
+      (mkdir-p "/var/log/bffe")
+
+      ;; Allow writing the PID file
+      (mkdir-p "/var/run/bffe")
+      (chown "/var/run/bffe"
+             (passwd:uid %user)
+             (passwd:gid %user))))
+
+(define (bffe-account config)
+  (match-record config <bffe-configuration>
+    (user group)
+    (list (user-group
+           (name group)
+           (system? #t))
+          (user-account
+           (name user)
+           (group group)
+           (system? #t)
+           (comment "BFFE user")
+           (home-directory "/var/lib/bffe")
+           (shell (file-append shadow "/sbin/nologin"))))))
+
+(define bffe-service-type
+  (service-type
+   (name 'bffe)
+   (extensions
+    (list
+     (service-extension shepherd-root-service-type
+                        bffe-shepherd-services)
+     (service-extension activation-service-type
+                        bffe-activation)
+     (service-extension account-service-type
+                        bffe-account)))
+   (description
+    "Run the Build Farm Front-end.")))
diff --git a/gnu/tests/guix.scm b/gnu/tests/guix.scm
index ad0980a10c..240ded4825 100644
--- a/gnu/tests/guix.scm
+++ b/gnu/tests/guix.scm
@@ -37,7 +37,8 @@ (define-module (gnu tests guix)
   #:use-module (ice-9 match)
   #:export (%test-guix-build-coordinator
             %test-guix-data-service
-            %test-nar-herder))
+            %test-nar-herder
+            %test-bffe))
 
 ;;;
 ;;; Guix Build Coordinator
@@ -325,3 +326,81 @@ (define %test-nar-herder
    (name "nar-herder")
    (description "Connect to a running Nar Herder server.")
    (value (run-nar-herder-test))))
+
+\f
+;;;
+;;; Build Farm Front-end
+;;;
+
+(define %bffe-os
+  (simple-operating-system
+   (service dhcp-client-service-type)
+   (service guix-build-coordinator-service-type)
+   (service bffe-service-type
+            (bffe-configuration
+             (arguments
+              #~(list
+                 #:web-server-args
+                 '(#:port 8767
+                   #:controller-args
+                   (#:title "Test title"))))))))
+
+(define (run-bffe-test)
+  (define os
+    (marionette-operating-system
+     %bffe-os
+     #:imported-modules '((gnu services herd)
+                          (guix combinators))))
+
+  (define forwarded-port 8767)
+
+  (define vm
+    (virtual-machine
+     (operating-system os)
+     (memory-size 1024)
+     (port-forwardings `((,forwarded-port . 8767)))))
+
+  (define test
+    (with-imported-modules '((gnu build marionette))
+      #~(begin
+          (use-modules (srfi srfi-11) (srfi srfi-64)
+                       (gnu build marionette)
+                       (web uri)
+                       (web client)
+                       (web response))
+
+          (define marionette
+            (make-marionette (list #$vm)))
+
+          (test-runner-current (system-test-runner #$output))
+          (test-begin "bffe")
+
+          (test-assert "service running"
+            (marionette-eval
+             '(begin
+                (use-modules (gnu services herd))
+                (match (start-service 'bffe)
+                  (#f #f)
+                  (('service response-parts ...)
+                   (match (assq-ref response-parts 'running)
+                     ((pid) (number? pid))))))
+             marionette))
+
+          (test-equal "http-get"
+            200
+            (let-values
+                (((response text)
+                  (http-get #$(simple-format
+                               #f "http://localhost:~A/" forwarded-port)
+                            #:decode-body? #t)))
+              (response-code response)))
+
+          (test-end))))
+
+  (gexp->derivation "bffe-test" test))
+
+(define %test-bffe
+  (system-test
+   (name "bffe")
+   (description "Connect to a running Build Farm Front-end.")
+   (value (run-bffe-test))))
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [bug#65732] [PATCH 0/2] Add the Build Farm Front-End
  2023-09-04 12:32 ` [bug#65732] [PATCH 1/2] gnu: Add bffe Christopher Baines
  2023-09-04 12:32   ` [bug#65732] [PATCH 2/2] services: guix: Add bffe-service-type Christopher Baines
@ 2023-09-14 14:58   ` Ludovic Courtès
  2023-09-15  9:06     ` Christopher Baines
  1 sibling, 1 reply; 8+ messages in thread
From: Ludovic Courtès @ 2023-09-14 14:58 UTC (permalink / raw)
  To: Christopher Baines; +Cc: 65732

Hello,

Christopher Baines <mail@cbaines.net> skribis:

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


[...]

> +             ;; Guile libraries are needed here for cross-compilation.
> +             (car (assoc-ref (package-native-inputs guix) "guile"))

Rather: (lookup-package-native-input guix "guile")

Otherwise LGTM.

> +      (home-page "https://git.cbaines.net/guix/bffe")
> +      (synopsis "Build Farm Front-end for Guix")
> +      (description
> +       "The BFFE of Build Farm Front-end is an experimental frontend for Guix
> +build farms.  It works together with the Guix Data Service and Guix Build
> +Coordinator to submit builds and monitor the activity.

Looks nice!  Have you already deployed it somewhere?

Ludo’.




^ permalink raw reply	[flat|nested] 8+ messages in thread

* [bug#65732] [PATCH 0/2] Add the Build Farm Front-End
  2023-09-04 12:32   ` [bug#65732] [PATCH 2/2] services: guix: Add bffe-service-type Christopher Baines
@ 2023-09-14 15:02     ` Ludovic Courtès
  2023-09-15  9:09       ` bug#65732: " Christopher Baines
  0 siblings, 1 reply; 8+ messages in thread
From: Ludovic Courtès @ 2023-09-14 15:02 UTC (permalink / raw)
  To: Christopher Baines; +Cc: 65732

Christopher Baines <mail@cbaines.net> skribis:

> This is intended to replace the functionality of the Guix Build Coordinator
> queue builds script, and also provide a web interface for build farms.
>
> * gnu/services/guix.scm (<bffe-configuration>): New record type.
> (bffe-configuration, bffe-configuration?,
> bffe-configuration-package,
> bffe-configuration-user,
> bffe-configuration-group,
> bffe-configuration-arguments
> bffe-configuration-extra-environment-variables): New procedures.
> (bffe-service-type): New variable.
> * gnu/tests/guix.scm (%test-bffe): New variable.
> * doc/guix.texi (Guix Services): Document the new service.

Overall LGTM.

Nitpick: you can make lines a bit longer, for instance:

> +(define (bffe-activation config)
> +  #~(begin
> +      (use-modules (guix build utils))
> +
> +      (define %user
> +        (getpw #$(bffe-configuration-user
> +                  config)))

‘config’ can be moved to the previous line.

> +      (chown "/var/run/bffe"
> +             (passwd:uid %user)
> +             (passwd:gid %user))))

This can be a single line.

> +   (extensions
> +    (list
> +     (service-extension shepherd-root-service-type
> +                        bffe-shepherd-services)

And: (list (service-extension …

Ludo’.




^ permalink raw reply	[flat|nested] 8+ messages in thread

* [bug#65732] [PATCH 0/2] Add the Build Farm Front-End
  2023-09-14 14:58   ` [bug#65732] " Ludovic Courtès
@ 2023-09-15  9:06     ` Christopher Baines
  2023-09-17 10:11       ` Ludovic Courtès
  0 siblings, 1 reply; 8+ messages in thread
From: Christopher Baines @ 2023-09-15  9:06 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: 65732

[-- Attachment #1: Type: text/plain, Size: 1296 bytes --]


Ludovic Courtès <ludo@gnu.org> writes:

> Hello,
>
> Christopher Baines <mail@cbaines.net> skribis:
>
>> * gnu/packages/package-management.scm (bffe): New variable.
>
>
> [...]
>
>> +             ;; Guile libraries are needed here for cross-compilation.
>> +             (car (assoc-ref (package-native-inputs guix) "guile"))
>
> Rather: (lookup-package-native-input guix "guile")

I've actually changed this to guile-next now, as the bffe needs the new
scheme custom/soft ports that don't cause issues with fibers.

>> +      (home-page "https://git.cbaines.net/guix/bffe")
>> +      (synopsis "Build Farm Front-end for Guix")
>> +      (description
>> +       "The BFFE of Build Farm Front-end is an experimental frontend for Guix
>> +build farms.  It works together with the Guix Data Service and Guix Build
>> +Coordinator to submit builds and monitor the activity.
>
> Looks nice!  Have you already deployed it somewhere?

It's been running on bayfront for a while, and manages pages like:

  https://bordeaux.guix.gnu.org/
  https://bordeaux.guix.gnu.org/activity
  https://bordeaux.guix.gnu.org/build/21fa2ed8-b4d0-43ca-8531-e1fa33266708

As well as taking over the job of querying the data service for builds
and submitting them to the coordinator.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 987 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#65732: [PATCH 0/2] Add the Build Farm Front-End
  2023-09-14 15:02     ` [bug#65732] [PATCH 0/2] Add the Build Farm Front-End Ludovic Courtès
@ 2023-09-15  9:09       ` Christopher Baines
  0 siblings, 0 replies; 8+ messages in thread
From: Christopher Baines @ 2023-09-15  9:09 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: 65732-done

[-- Attachment #1: Type: text/plain, Size: 1544 bytes --]


Ludovic Courtès <ludo@gnu.org> writes:

> Christopher Baines <mail@cbaines.net> skribis:
>
>> This is intended to replace the functionality of the Guix Build Coordinator
>> queue builds script, and also provide a web interface for build farms.
>>
>> * gnu/services/guix.scm (<bffe-configuration>): New record type.
>> (bffe-configuration, bffe-configuration?,
>> bffe-configuration-package,
>> bffe-configuration-user,
>> bffe-configuration-group,
>> bffe-configuration-arguments
>> bffe-configuration-extra-environment-variables): New procedures.
>> (bffe-service-type): New variable.
>> * gnu/tests/guix.scm (%test-bffe): New variable.
>> * doc/guix.texi (Guix Services): Document the new service.
>
> Overall LGTM.
>
> Nitpick: you can make lines a bit longer, for instance:
>
>> +(define (bffe-activation config)
>> +  #~(begin
>> +      (use-modules (guix build utils))
>> +
>> +      (define %user
>> +        (getpw #$(bffe-configuration-user
>> +                  config)))
>
> ‘config’ can be moved to the previous line.
>
>> +      (chown "/var/run/bffe"
>> +             (passwd:uid %user)
>> +             (passwd:gid %user))))
>
> This can be a single line.
>
>> +   (extensions
>> +    (list
>> +     (service-extension shepherd-root-service-type
>> +                        bffe-shepherd-services)
>
> And: (list (service-extension …

I've tweaked the formatting as suggested above and pushed this to master
as 82abf6ddadc6139148660440a064e60ae68f238e.

Thanks,

Chris

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 987 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [bug#65732] [PATCH 0/2] Add the Build Farm Front-End
  2023-09-15  9:06     ` Christopher Baines
@ 2023-09-17 10:11       ` Ludovic Courtès
  0 siblings, 0 replies; 8+ messages in thread
From: Ludovic Courtès @ 2023-09-17 10:11 UTC (permalink / raw)
  To: Christopher Baines; +Cc: 65732

Christopher Baines <mail@cbaines.net> skribis:

> It's been running on bayfront for a while, and manages pages like:
>
>   https://bordeaux.guix.gnu.org/
>   https://bordeaux.guix.gnu.org/activity
>   https://bordeaux.guix.gnu.org/build/21fa2ed8-b4d0-43ca-8531-e1fa33266708
>
> As well as taking over the job of querying the data service for builds
> and submitting them to the coordinator.

Oh, neat!

Ludo’.




^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2023-09-17 10:13 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-09-04 12:29 [bug#65732] [PATCH 0/2] Add the Build Farm Front-End Christopher Baines
2023-09-04 12:32 ` [bug#65732] [PATCH 1/2] gnu: Add bffe Christopher Baines
2023-09-04 12:32   ` [bug#65732] [PATCH 2/2] services: guix: Add bffe-service-type Christopher Baines
2023-09-14 15:02     ` [bug#65732] [PATCH 0/2] Add the Build Farm Front-End Ludovic Courtès
2023-09-15  9:09       ` bug#65732: " Christopher Baines
2023-09-14 14:58   ` [bug#65732] " Ludovic Courtès
2023-09-15  9:06     ` Christopher Baines
2023-09-17 10:11       ` Ludovic Courtès

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).