summaryrefslogtreecommitdiff
path: root/gnu/packages.scm
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2019-03-28 15:46:18 +0100
committerLudovic Courtès <ludo@gnu.org>2019-03-28 23:06:58 +0100
commitf2bf0407de70e7ae29518400d66ef968134f5169 (patch)
tree06f5ce0773696542e751c29ff7d7c986825e9048 /gnu/packages.scm
parente8cfce439afed945e352ad28f73f0a5f7840f503 (diff)
packages: Reintroduce 'find-newest-available-packages'.
This is a followup to e2a903c807ccacec5925f197ce26f626060e1953. * gnu/packages.scm (find-newest-available-packages): New procedure.
Diffstat (limited to 'gnu/packages.scm')
-rw-r--r--gnu/packages.scm25
1 files changed, 25 insertions, 0 deletions
diff --git a/gnu/packages.scm b/gnu/packages.scm
index 9f211ae23c5..48390575ba7 100644
--- a/gnu/packages.scm
+++ b/gnu/packages.scm
@@ -32,6 +32,7 @@
32 mkdir-p)) 32 mkdir-p))
33 #:autoload (guix profiles) (packages->manifest) 33 #:autoload (guix profiles) (packages->manifest)
34 #:use-module (guix describe) 34 #:use-module (guix describe)
35 #:use-module (guix deprecation)
35 #:use-module (ice-9 vlist) 36 #:use-module (ice-9 vlist)
36 #:use-module (ice-9 match) 37 #:use-module (ice-9 match)
37 #:autoload (ice-9 binary-ports) (put-bytevector) 38 #:autoload (ice-9 binary-ports) (put-bytevector)
@@ -55,6 +56,7 @@
55 fold-packages 56 fold-packages
56 fold-available-packages 57 fold-available-packages
57 58
59 find-newest-available-packages
58 find-packages-by-name 60 find-packages-by-name
59 find-package-locations 61 find-package-locations
60 find-best-packages-by-name 62 find-best-packages-by-name
@@ -186,6 +188,29 @@ flags."
186 directory)) 188 directory))
187 %load-path))) 189 %load-path)))
188 190
191;; This procedure is used by Emacs-Guix up to 0.5.1.1, so keep it for now.
192;; See <https://github.com/alezost/guix.el/issues/30>.
193(define-deprecated find-newest-available-packages
194 find-packages-by-name
195 (mlambda ()
196 "Return a vhash keyed by package names, and with
197associated values of the form
198
199 (newest-version newest-package ...)
200
201where the preferred package is listed first."
202 (fold-packages (lambda (p r)
203 (let ((name (package-name p))
204 (version (package-version p)))
205 (match (vhash-assoc name r)
206 ((_ newest-so-far . pkgs)
207 (case (version-compare version newest-so-far)
208 ((>) (vhash-cons name `(,version ,p) r))
209 ((=) (vhash-cons name `(,version ,p ,@pkgs) r))
210 ((<) r)))
211 (#f (vhash-cons name `(,version ,p) r)))))
212 vlist-null)))
213
189(define (fold-available-packages proc init) 214(define (fold-available-packages proc init)
190 "Fold PROC over the list of available packages. For each available package, 215 "Fold PROC over the list of available packages. For each available package,
191PROC is called along these lines: 216PROC is called along these lines: