GNU bug report logs - #75407
[PATCH Cuirass] base: Add support for disabling channel authentication.

Previous Next

Package: guix-patches;

Reported by: Romain GARBAGE <romain.garbage <at> inria.fr>

Date: Mon, 6 Jan 2025 15:01:01 UTC

Severity: normal

Tags: patch

Done: Ludovic Courtès <ludovic.courtes <at> inria.fr>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: help-debbugs <at> gnu.org (GNU bug Tracking System)
To: Romain GARBAGE <romain.garbage <at> inria.fr>
Subject: bug#75407: closed (Re: bug#75407: [PATCH Cuirass] base: Add
 support for disabling channel authentication.)
Date: Thu, 09 Jan 2025 14:42:02 +0000
[Message part 1 (text/plain, inline)]
Your bug report

#75407: [PATCH Cuirass] base: Add support for disabling channel authentication.

which was filed against the guix-patches package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to 75407 <at> debbugs.gnu.org.

-- 
75407: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=75407
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
From: Ludovic Courtès <ludovic.courtes <at> inria.fr>
To: Romain GARBAGE <romain.garbage <at> inria.fr>
Cc: 75407-done <at> debbugs.gnu.org
Subject: Re: bug#75407: [PATCH Cuirass] base: Add support for disabling
 channel authentication.
Date: Thu, 09 Jan 2025 15:41:46 +0100
Romain GARBAGE <romain.garbage <at> inria.fr> skribis:

> * src/cuirass/base.scm (channel-update-service, jobset-monitor): Add support
> for disabling Guix channel authentication.
> * doc/cuirass.texi (Specifications): Add documentation.

Applied, thanks!

[Message part 3 (message/rfc822, inline)]
From: Romain GARBAGE <romain.garbage <at> inria.fr>
To: guix-patches <at> gnu.org
Cc: ludovic.courtes <at> inria.fr, Romain GARBAGE <romain.garbage <at> inria.fr>
Subject: [PATCH Cuirass] base: Add support for disabling channel
 authentication.
Date: Mon,  6 Jan 2025 15:59:37 +0100
* src/cuirass/base.scm (channel-update-service, jobset-monitor): Add support
for disabling Guix channel authentication.
* doc/cuirass.texi (Specifications): Add documentation.
---
 doc/cuirass.texi     |  4 ++++
 src/cuirass/base.scm | 19 ++++++++++++++-----
 2 files changed, 18 insertions(+), 5 deletions(-)

diff --git a/doc/cuirass.texi b/doc/cuirass.texi
index 4c160c3..b3ab4c5 100644
--- a/doc/cuirass.texi
+++ b/doc/cuirass.texi
@@ -248,6 +248,10 @@ You can store any information you like in properties, but you must make
 sure that this is serializable.  For example, the properties alist
 cannot contain records.
 
+The special @code{authenticate-channels?} property, when set to
+@code{#f}, disables authentication of @emph{all} the channels declared in the
+specification, including the Guix channel.
+
 @end table
 @end deftp
 
diff --git a/src/cuirass/base.scm b/src/cuirass/base.scm
index 837de51..89fff82 100644
--- a/src/cuirass/base.scm
+++ b/src/cuirass/base.scm
@@ -507,7 +507,7 @@ to update Git checkouts, effectively serializing all Git operations."
   ;; Note: All Git operations are serialized when in fact it would be enough
   ;; to serialize operations with the same URL (because they are cached in the
   ;; same directory).
-  (define (fetch store channels)
+  (define (fetch store channels authenticate?)
     (let/ec return
       (with-exception-handler
           (lambda (exception)
@@ -533,16 +533,17 @@ to update Git checkouts, effectively serializing all Git operations."
         (lambda ()
           (non-blocking
            (set-thread-name "git-checkout")
-           (latest-channel-instances* store channels))))))
+           (latest-channel-instances* store channels
+                                      #:authenticate? authenticate?))))))
 
   (lambda ()
     (with-store store
       (let loop ()
         (match (get-message channel)
-          (`(fetch ,channels ,reply)
+          (`(fetch ,channels ,authenticate? ,reply)
            (log-info "fetching channels:~{ '~a'~}"
                      (map channel-name channels))
-           (let ((result (fetch store channels)))
+           (let ((result (fetch store channels authenticate?)))
              (if result
                  (log-info "pulled commits~{ ~a~}"
                            (zip (map (compose channel-name
@@ -741,6 +742,14 @@ concurrently; it sends derivation build requests to BUILDER."
       (define channels
         (specification-channels spec))
 
+      (define authenticate?
+        (match (assq 'authenticate-channels?
+                     (specification-properties spec))
+          (#f #t) ; Authenticate by default.
+          ((_ . authenticate?)
+           ;; Ensure the return value is a boolean.
+           (->bool authenticate?))))
+
       (define (perform-update)
         (let* ((timestamp (time-second (current-time time-utc)))
                (recent? (lambda (time)
@@ -762,7 +771,7 @@ concurrently; it sends derivation build requests to BUILDER."
                    (match (let ((reply (make-channel)))
                             (log-info "fetching channels for spec '~a'" name)
                             (put-message update-service
-                                         `(fetch ,channels ,reply))
+                                         `(fetch ,channels ,authenticate? ,reply))
                             (get-message reply))
                      (#f
                       ;; TODO: Send the error to CHANNEL so the web interface

base-commit: e1a4675ec417db3e7f97c05c3f2642ab8acb9210
-- 
2.46.0




This bug report was last modified 185 days ago.

Previous Next


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