From dd72173455b31aeddb4a691285bd5c0702c75d34 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 6 Sep 2016 19:27:27 +0200 Subject: guix package: Clarify upgrade code. * guix/scripts/package.scm (upgradeable?): Rename to... (upgraded-manifest-entry): ... this. Change to take a and to return a . (options->installable)[to-upgrade]: Adjust accordingly. --- guix/scripts/package.scm | 45 ++++++++++++++++++++++----------------------- 1 file changed, 22 insertions(+), 23 deletions(-) diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm index fd42cdb36e..14a0895b43 100644 --- a/guix/scripts/package.scm +++ b/guix/scripts/package.scm @@ -261,19 +261,25 @@ synopsis or description matches all of REGEXPS." ((<) #t) (else #f))))) -(define (upgradeable? name current-version current-path) - "Return #t if there's a version of package NAME newer than CURRENT-VERSION, -or if the newest available version is equal to CURRENT-VERSION but would have -an output path different than CURRENT-PATH." - (match (vhash-assoc name (find-newest-available-packages)) - ((_ candidate-version pkg . rest) - (case (version-compare candidate-version current-version) - ((>) #t) - ((<) #f) - ((=) (let ((candidate-path (derivation->output-path - (package-derivation (%store) pkg)))) - (not (string=? current-path candidate-path)))))) - (#f #f))) +(define (upgraded-manifest-entry entry) + "Return either a corresponding to an upgrade of ENTRY, or +#f if no upgrade was found." + (match entry + (($ name version output (? string? path)) + (match (vhash-assoc name (find-newest-available-packages)) + ((_ candidate-version pkg . rest) + (case (version-compare candidate-version version) + ((>) + (package->manifest-entry pkg output)) + ((<) + #f) + ((=) + (let ((candidate-path (derivation->output-path + (package-derivation (%store) pkg)))) + (and (not (string=? path candidate-path)) + (package->manifest-entry pkg output)))))) + (#f + #f))))) ;;; @@ -560,16 +566,9 @@ return the new list of manifest entries." (options->upgrade-predicate opts)) (define to-upgrade - (filter-map (match-lambda - (($ name version output path _) - (and (upgrade? name) - (upgradeable? name version path) - (let ((output (or output "out"))) - (call-with-values - (lambda () - (specification->package+output name output)) - package->manifest-entry)))) - (_ #f)) + (filter-map (lambda (entry) + (and (upgrade? (manifest-entry-name entry)) + (upgraded-manifest-entry entry))) (manifest-entries manifest))) (define to-install -- cgit v1.2.3