summary refs log tree commit diff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2022-10-04 09:28:01 +0200
committerLudovic Courtès <ludo@gnu.org>2022-10-04 18:15:35 +0200
commit5bc4b8e8e3960d431d66e3e4ac97f196059a875b (patch)
treed2a7e267cfaac488e06ba206d8f6e9ee97c94d37
parentae1af5d7875c9c5f6f50a5f63650e575c10ee231 (diff)
downloadguix-5bc4b8e8e3960d431d66e3e4ac97f196059a875b.tar.gz
channels: Warn about missing introductions.
* guix/channels.scm (latest-channel-instance): Warn when CHANNEL has no
introduction and CHECKOUT contains '.guix-authorizations'.
-rw-r--r--guix/channels.scm29
1 files changed, 19 insertions, 10 deletions
diff --git a/guix/channels.scm b/guix/channels.scm
index ad6d3fb8ac..f1c23c17fb 100644
--- a/guix/channels.scm
+++ b/guix/channels.scm
@@ -419,19 +419,28 @@ their relation.  When AUTHENTICATE? is false, CHANNEL is not authenticated."
     (if authenticate?
         (if (channel-introduction channel)
             (authenticate-channel channel checkout commit)
-            ;; TODO: Warn for all the channels once the authentication interface
-            ;; is public.
-            (when (guix-channel? channel)
-              (raise (make-compound-condition
-                      (formatted-message (G_ "channel '~a' lacks an \
+            (begin
+              (when (file-exists?
+                     (string-append checkout "/.guix-authorizations"))
+                (warning (and=> (channel-location channel)
+                                source-properties->location)
+                         (G_ "channel '~a' lacks 'introduction' field but \
+'.guix-authorizations' found\n")
+                         (channel-name channel)))
+
+              ;; TODO: Warn for all the channels once the authentication interface
+              ;; is public.
+              (when (guix-channel? channel)
+                (raise (make-compound-condition
+                        (formatted-message (G_ "channel '~a' lacks an \
 introduction and cannot be authenticated~%")
-                                         (channel-name channel))
-                      (condition
-                       (&fix-hint
-                        (hint (G_ "Add the missing introduction to your
+                                           (channel-name channel))
+                        (condition
+                         (&fix-hint
+                          (hint (G_ "Add the missing introduction to your
 channels file to address the issue.  Alternatively, you can pass
 @option{--disable-authentication}, at the risk of running unauthenticated and
-thus potentially malicious code."))))))))
+thus potentially malicious code.")))))))))
         (warning (G_ "channel authentication disabled~%")))
 
     (when (guix-channel? channel)