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) | |
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 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 | ||
| 197 | associated values of the form | ||
| 198 | |||
| 199 | (newest-version newest-package ...) | ||
| 200 | |||
| 201 | where 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, |
| 191 | PROC is called along these lines: | 216 | PROC is called along these lines: |
