scripts: discover: Check for cache file existence.

Fixes: https://issues.guix.gnu.org/45045.

* guix/scripts/discover.scm (read-substitute-urls): Check for file existence.
This commit is contained in:
Mathieu Othacehe 2020-12-05 10:37:01 +01:00
parent 4cf3734c56
commit c952a9312a
No known key found for this signature in database
GPG key ID: 8354763531769CA6

View file

@ -110,14 +110,16 @@ (define-syntax-rule (with-read-file-lock file exp ...)
(define* (read-substitute-urls #:key (file (%publish-file))) (define* (read-substitute-urls #:key (file (%publish-file)))
"Read substitute urls list from FILE and return it. Use a read lock on FILE "Read substitute urls list from FILE and return it. Use a read lock on FILE
to synchronize with the writer." to synchronize with the writer."
(with-read-file-lock file (if (file-exists? file)
(call-with-input-file file (with-read-file-lock file
(lambda (port) (call-with-input-file file
(let loop ((url (read-line port)) (lambda (port)
(urls '())) (let loop ((url (read-line port))
(if (eof-object? url) (urls '()))
urls (if (eof-object? url)
(loop (read-line port) (cons url urls)))))))) urls
(loop (read-line port) (cons url urls)))))))
'()))
;;; ;;;
@ -156,3 +158,7 @@ (define-command (guix-discover . args)
(mkdir-p (dirname publish-file)) (mkdir-p (dirname publish-file))
(avahi-browse-service-thread service-proc (avahi-browse-service-thread service-proc
#:types %services))))) #:types %services)))))
;;; Local Variables:
;;; eval: (put 'with-read-file-lock 'scheme-indent-function 1)
;;; End: