summary refs log tree commit diff
diff options
context:
space:
mode:
authorMathieu Othacehe <othacehe@gnu.org>2021-05-21 15:21:15 +0200
committerMathieu Othacehe <othacehe@gnu.org>2021-05-22 14:04:19 +0200
commit7003b2db526fc367664f3a7c4bdbe38a7c717da6 (patch)
tree2b1de180d82bc5549a79088b6e56978c9ee7dd26
parentfbabf0bec61c88755d6dd238717a356ca3a20b80 (diff)
downloadguix-7003b2db526fc367664f3a7c4bdbe38a7c717da6.tar.gz
scripts: discover: Report Avahi errors.
Fixes: <https://issues.guix.gnu.org/48561>.

* guix/scripts/discover (guix-discover): Report Avahi errors.
-rw-r--r--guix/scripts/discover.scm18
1 files changed, 15 insertions, 3 deletions
diff --git a/guix/scripts/discover.scm b/guix/scripts/discover.scm
index be1eaa6e95..dadade81bb 100644
--- a/guix/scripts/discover.scm
+++ b/guix/scripts/discover.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2020 Mathieu Othacehe <othacehe@gnu.org>
+;;; Copyright © 2020, 2021 Mathieu Othacehe <othacehe@gnu.org>
 ;;; Copyright © 2021 Simon Tournier <zimon.toutoune@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -26,6 +26,7 @@
   #:use-module (guix build syscalls)
   #:use-module (guix build utils)
   #:use-module (guix scripts publish)
+  #:use-module (avahi)
   #:use-module (ice-9 rdelim)
   #:use-module (srfi srfi-37)
   #:export (read-substitute-urls
@@ -138,5 +139,16 @@ to synchronize with the writer."
       (parameterize ((%publish-file publish-file))
         (mkdir-p (dirname publish-file))
         (false-if-exception (delete-file publish-file))
-        (avahi-browse-service-thread service-proc
-                                     #:types %services)))))
+        (catch 'avahi-error
+          (lambda ()
+            (avahi-browse-service-thread service-proc
+                                         #:types %services))
+          (lambda (key err function . _)
+            (cond
+             ((eq? err error/no-daemon)
+              (warning (G_ "Avahi daemon is not running, \
+cannot auto-discover substitutes servers.~%")))
+             (else
+              (report-error (G_ "an Avahi error was raised by `~a': ~a~%")
+                            function (error->string err))))
+            (exit 1)))))))