summary refs log tree commit diff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2022-06-15 23:01:26 +0200
committerLudovic Courtès <ludo@gnu.org>2022-06-15 23:49:24 +0200
commit53b9c27aa59bebf955f0aa24fef60a101480ef5c (patch)
tree4c1c3b2aefbf5adab54139714f532b7fe9c620d7
parent5c06eedf08f0ab75746f0475909087aeb46f24f1 (diff)
downloadguix-53b9c27aa59bebf955f0aa24fef60a101480ef5c.tar.gz
upstream: 'package-update' reports "unknown upstream releases" errors.
Fixes <https://issues.guix.gnu.org/55987>.
Reported by John Kehayias <john.kehayias@protonmail.com>.

* guix/upstream.scm (package-update): Instead of calling
'package-latest-release*', call 'package-latest-release' and distinguish
between "up-to-date" and "unknown upstream releases".  Raise an error in
the latter case.
-rw-r--r--guix/upstream.scm46
1 files changed, 26 insertions, 20 deletions
diff --git a/guix/upstream.scm b/guix/upstream.scm
index b0f77fb7d0..dac8153905 100644
--- a/guix/upstream.scm
+++ b/guix/upstream.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2010-2022 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2015 Alex Kost <alezost@gmail.com>
 ;;; Copyright © 2019, 2022 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2021 Sarah Morgensen <iskarian@mgsn.dev>
@@ -488,30 +488,36 @@ SOURCE, an <upstream-source>."
                          #:optional (updaters (force %updaters))
                          #:key (key-download 'interactive))
   "Return the new version, the file name of the new version tarball, and input
-changes for PACKAGE; return #f (three values) when PACKAGE is up-to-date.
+changes for PACKAGE; return #f (three values) when PACKAGE is up-to-date;
+raise an error when the updater could not determine available releases.
 KEY-DOWNLOAD specifies a download policy for missing OpenPGP keys; allowed
 values: 'always', 'never', and 'interactive' (default)."
-  (match (package-latest-release* package updaters)
+  (match (package-latest-release package updaters)
     ((? upstream-source? source)
-     (let ((method (match (package-source package)
-                     ((? origin? origin)
-                      (origin-method origin))
-                     (_
-                      #f))))
-       (match (assq method %method-updates)
-         (#f
-          (raise (make-compound-condition
-                  (formatted-message (G_ "cannot download for \
+     (if (version>? (upstream-source-version source)
+                    (package-version package))
+         (let ((method (match (package-source package)
+                         ((? origin? origin)
+                          (origin-method origin))
+                         (_
+                          #f))))
+           (match (assq method %method-updates)
+             (#f
+              (raise (make-compound-condition
+                      (formatted-message (G_ "cannot download for \
 this method: ~s")
-                                     method)
-                  (condition
-                   (&error-location
-                    (location (package-location package)))))))
-         ((_ . update)
-          (update store package source
-                  #:key-download key-download)))))
+                                         method)
+                      (condition
+                       (&error-location
+                        (location (package-location package)))))))
+             ((_ . update)
+              (update store package source
+                      #:key-download key-download))))
+         (values #f #f #f)))
     (#f
-     (values #f #f #f))))
+     (raise (formatted-message
+             (G_ "updater failed to determine available releases for ~a~%")
+             (package-name package))))))
 
 (define* (update-package-source package source hash)
   "Modify the source file that defines PACKAGE to refer to SOURCE, an