profiles: Report "pseudo-upgrades" as upgrades, not downgrades.

Reported by Andreas Enge <andreas@enge.fr>
at <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=19764#19>.

* guix/profiles.scm (manifest-transaction-effects): Use 'version>=?'
  instead of 'version>?'.
* tests/profiles.scm ("manifest-transaction-effects and
  pseudo-upgrades"): New test.
This commit is contained in:
Ludovic Courtès 2015-02-09 17:18:48 +01:00
parent cde1e967cf
commit 3bea13bb1f
2 changed files with 10 additions and 2 deletions

View file

@ -331,7 +331,7 @@ (define (manifest-entry->pattern entry)
(let* ((pattern (manifest-entry->pattern entry))
(previous (manifest-lookup manifest pattern))
(newer? (and previous
(version>? (manifest-entry-version entry)
(version>=? (manifest-entry-version entry)
(manifest-entry-version previous)))))
(loop rest
(if previous install (cons entry install))

View file

@ -169,6 +169,14 @@ (define glibc
(and (null? remove) (null? install) (null? upgrade)
(equal? (list (cons guile-2.0.9 guile-1.8.8)) downgrade)))))
(test-assert "manifest-transaction-effects and pseudo-upgrades"
(let* ((m0 (manifest (list guile-2.0.9)))
(t (manifest-transaction (install (list guile-2.0.9)))))
(let-values (((remove install upgrade downgrade)
(manifest-transaction-effects m0 t)))
(and (null? remove) (null? install) (null? downgrade)
(equal? (list (cons guile-2.0.9 guile-2.0.9)) upgrade)))))
(test-assertm "profile-derivation"
(mlet* %store-monad
((entry -> (package->manifest-entry %bootstrap-guile))