guix-commits
[Top][All Lists]
Advanced

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

01/06: packages: Reintroduce 'find-newest-available-packages'.


From: guix-commits
Subject: 01/06: packages: Reintroduce 'find-newest-available-packages'.
Date: Thu, 28 Mar 2019 18:07:56 -0400 (EDT)

civodul pushed a commit to branch master
in repository guix.

commit f2bf0407de70e7ae29518400d66ef968134f5169
Author: Ludovic Courtès <address@hidden>
Date:   Thu Mar 28 15:46:18 2019 +0100

    packages: Reintroduce 'find-newest-available-packages'.
    
    This is a followup to e2a903c807ccacec5925f197ce26f626060e1953.
    
    * gnu/packages.scm (find-newest-available-packages): New procedure.
---
 gnu/packages.scm | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/gnu/packages.scm b/gnu/packages.scm
index 9f211ae..4839057 100644
--- a/gnu/packages.scm
+++ b/gnu/packages.scm
@@ -32,6 +32,7 @@
                           mkdir-p))
   #:autoload   (guix profiles) (packages->manifest)
   #:use-module (guix describe)
+  #:use-module (guix deprecation)
   #:use-module (ice-9 vlist)
   #:use-module (ice-9 match)
   #:autoload   (ice-9 binary-ports) (put-bytevector)
@@ -55,6 +56,7 @@
             fold-packages
             fold-available-packages
 
+            find-newest-available-packages
             find-packages-by-name
             find-package-locations
             find-best-packages-by-name
@@ -186,6 +188,29 @@ flags."
               directory))
         %load-path)))
 
+;; This procedure is used by Emacs-Guix up to 0.5.1.1, so keep it for now.
+;; See <https://github.com/alezost/guix.el/issues/30>.
+(define-deprecated find-newest-available-packages
+  find-packages-by-name
+  (mlambda ()
+    "Return a vhash keyed by package names, and with
+associated values of the form
+
+  (newest-version newest-package ...)
+
+where the preferred package is listed first."
+    (fold-packages (lambda (p r)
+                     (let ((name    (package-name p))
+                           (version (package-version p)))
+                       (match (vhash-assoc name r)
+                         ((_ newest-so-far . pkgs)
+                          (case (version-compare version newest-so-far)
+                            ((>) (vhash-cons name `(,version ,p) r))
+                            ((=) (vhash-cons name `(,version ,p ,@pkgs) r))
+                            ((<) r)))
+                         (#f (vhash-cons name `(,version ,p) r)))))
+                   vlist-null)))
+
 (define (fold-available-packages proc init)
   "Fold PROC over the list of available packages.  For each available package,
 PROC is called along these lines:



reply via email to

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