diff options
author | Ludovic Courtès <ludo@gnu.org> | 2019-03-28 15:46:18 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2019-03-28 23:06:58 +0100 |
commit | f2bf0407de70e7ae29518400d66ef968134f5169 (patch) | |
tree | 06f5ce0773696542e751c29ff7d7c986825e9048 | |
parent | e8cfce439afed945e352ad28f73f0a5f7840f503 (diff) | |
download | guix-f2bf0407de70e7ae29518400d66ef968134f5169.tar.gz guix-f2bf0407de70e7ae29518400d66ef968134f5169.zip |
packages: Reintroduce 'find-newest-available-packages'.
This is a followup to e2a903c807ccacec5925f197ce26f626060e1953.
* gnu/packages.scm (find-newest-available-packages): New procedure.
-rw-r--r-- | gnu/packages.scm | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/gnu/packages.scm b/gnu/packages.scm index 9f211ae23c..48390575ba 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: |