guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

17/18: upstream: Allow updating to a specific version.


From: guix-commits
Subject: 17/18: upstream: Allow updating to a specific version.
Date: Mon, 26 Dec 2022 11:41:44 -0500 (EST)

htgoebel pushed a commit to branch master
in repository guix.

commit f7eaed685842769ffa3f77b62d4d604f110e62a3
Author: Hartmut Goebel <h.goebel@crazy-compilers.com>
AuthorDate: Fri Jun 24 22:36:38 2022 +0200

    upstream: Allow updating to a specific version.
    
    * guix/upstream.scm(package-latest-release): Add keyword-argument 'version'
      and pass it on to the updater's 'import' function.
      (package-update): add keyword-argument 'version' and pass it on to
      package-latest-release.  Differentiate the error message issued when
      no package was found, depending on whether version was given or not.
---
 guix/upstream.scm | 17 +++++++++++------
 1 file changed, 11 insertions(+), 6 deletions(-)

diff --git a/guix/upstream.scm b/guix/upstream.scm
index 3b576898ec..f3ab9ab78b 100644
--- a/guix/upstream.scm
+++ b/guix/upstream.scm
@@ -4,6 +4,7 @@
 ;;; Copyright © 2019, 2022 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2021 Sarah Morgensen <iskarian@mgsn.dev>
 ;;; Copyright © 2021, 2022 Maxime Devos <maximedevos@telenet.be>
+;;; Copyright © 2022 Hartmut Goebel <h.goebel@crazy-compilers.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -278,7 +279,8 @@ them matches."
 
 (define* (package-latest-release package
                                  #:optional
-                                 (updaters (force %updaters)))
+                                 (updaters (force %updaters))
+                                 #:key (version #f))
   "Return an upstream source to update PACKAGE, a <package> object, or #f if
 none of UPDATERS matches PACKAGE.  When several updaters match PACKAGE, try
 them until one of them returns an upstream source.  It is the caller's
@@ -287,7 +289,7 @@ one."
   (any (match-lambda
          (($ <upstream-updater> name description pred import)
           (and (pred package)
-               (import package))))
+               (import package #:version version))))
        updaters))
 
 (define* (package-latest-release* package
@@ -494,13 +496,13 @@ SOURCE, an <upstream-source>."
 
 (define* (package-update store package
                          #:optional (updaters (force %updaters))
-                         #:key (key-download 'interactive))
+                         #:key (key-download 'interactive) (version #f))
   "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;
 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 #:version version)
     ((? upstream-source? source)
      (if (version>? (upstream-source-version source)
                     (package-version package))
@@ -524,8 +526,11 @@ this method: ~s")
          (values #f #f #f)))
     (#f
      ;; Warn rather than abort so that other updates can still take place.
-     (warning (G_ "updater failed to determine available releases for ~a~%")
-              (package-name package))
+     (if version
+         (warning (G_ "updater failed to find release ~a@~a~%")
+                  (package-name package) version)
+         (warning (G_ "updater failed to determine available releases for 
~a~%")
+                  (package-name package)))
      (values #f #f #f))))
 
 (define* (update-package-source package source hash)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]