refresh: Gracefully handle failure to download a tarball.
authorLudovic Courtès <ludo@gnu.org>
Fri, 10 May 2013 13:07:00 +0000 (15:07 +0200)
committerLudovic Courtès <ludo@gnu.org>
Fri, 10 May 2013 13:07:00 +0000 (15:07 +0200)
* guix/scripts/refresh.scm (guix-refresh): When updating a source file,
  gracefully handle the case where TARBALL is #f.
  Reported by Nikita Karetnikov <nikita@karetnikov.org>.

guix/scripts/refresh.scm

index 69e5114..37de3b6 100644 (file)
@@ -160,13 +160,21 @@ update would trigger a complete rebuild."
                                                                   'version)
                                           (package-location package))))
                           (when version
-                            (format (current-error-port)
-                                    (_ "~a: ~a: updating from version ~a to version ~a...~%")
-                                    (location->string loc) (package-name package)
-                                    (package-version package) version)
-                            (let ((hash (call-with-input-file tarball
-                                          (compose sha256 get-bytevector-all))))
-                              (update-package-source package version hash)))))
+                            (if (and=> tarball file-exists?)
+                                (begin
+                                  (format (current-error-port)
+                                          (_ "~a: ~a: updating from version ~a to version ~a...~%")
+                                          (location->string loc)
+                                          (package-name package)
+                                          (package-version package) version)
+                                  (let ((hash (call-with-input-file tarball
+                                                (compose sha256
+                                                         get-bytevector-all))))
+                                    (update-package-source package version
+                                                           hash)))
+                                (warning (_ "~a: version ~a could not be \
+downloaded and authenticated; not updating")
+                                         (package-name package) version)))))
                       packages))
           (for-each (lambda (package)
                       (match (false-if-exception (package-update-path package))