Browse Source

guix package: Avoid 'find-newest-available-packages'.

* guix/scripts/package.scm (transaction-upgrade-entry): Use
'find-best-packages-by-name' instead of
'find-newest-available-packages'.
* tests/packages.scm ("transaction-upgrade-entry, zero upgrades")
("transaction-upgrade-entry, one upgrade")
("transaction-upgrade-entry, superseded package"): Adjust accordingly.
install-doc-overhaul
Ludovic Courtès 3 years ago
parent
commit
465a0d65ae
No known key found for this signature in database GPG Key ID: 90B11993D9AEBB5
  1. 51
      guix/scripts/package.scm
  2. 14
      tests/packages.scm

51
guix/scripts/package.scm

@ -220,31 +220,32 @@ of relevance scores."
('dismiss
transaction)
(($ <manifest-entry> name version output (? string? path))
(match (vhash-assoc name (find-newest-available-packages))
((_ candidate-version pkg . rest)
(match (package-superseded pkg)
((? package? new)
(supersede entry new))
(#f
(case (version-compare candidate-version version)
((>)
(manifest-transaction-install-entry
(package->manifest-entry* pkg output)
transaction))
((<)
transaction)
((=)
(let ((candidate-path (derivation->output-path
(package-derivation (%store) pkg))))
;; XXX: When there are propagated inputs, assume we need to
;; upgrade the whole entry.
(if (and (string=? path candidate-path)
(null? (package-propagated-inputs pkg)))
transaction
(manifest-transaction-install-entry
(package->manifest-entry* pkg output)
transaction))))))))
(#f
(match (find-best-packages-by-name name #f)
((pkg . rest)
(let ((candidate-version (package-version pkg)))
(match (package-superseded pkg)
((? package? new)
(supersede entry new))
(#f
(case (version-compare candidate-version version)
((>)
(manifest-transaction-install-entry
(package->manifest-entry* pkg output)
transaction))
((<)
transaction)
((=)
(let ((candidate-path (derivation->output-path
(package-derivation (%store) pkg))))
;; XXX: When there are propagated inputs, assume we need to
;; upgrade the whole entry.
(if (and (string=? path candidate-path)
(null? (package-propagated-inputs pkg)))
transaction
(manifest-transaction-install-entry
(package->manifest-entry* pkg output)
transaction)))))))))
(()
(warning (G_ "package '~a' no longer exists~%") name)
transaction)))))

14
tests/packages.scm

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@ -96,8 +96,8 @@
(test-assert "transaction-upgrade-entry, zero upgrades"
(let* ((old (dummy-package "foo" (version "1")))
(tx (mock ((gnu packages) find-newest-available-packages
(const vlist-null))
(tx (mock ((gnu packages) find-best-packages-by-name
(const '()))
((@@ (guix scripts package) transaction-upgrade-entry)
(manifest-entry
(inherit (package->manifest-entry old))
@ -109,8 +109,8 @@
(test-assert "transaction-upgrade-entry, one upgrade"
(let* ((old (dummy-package "foo" (version "1")))
(new (dummy-package "foo" (version "2")))
(tx (mock ((gnu packages) find-newest-available-packages
(const (vhash-cons "foo" (list "2" new) vlist-null)))
(tx (mock ((gnu packages) find-best-packages-by-name
(const (list new)))
((@@ (guix scripts package) transaction-upgrade-entry)
(manifest-entry
(inherit (package->manifest-entry old))
@ -126,8 +126,8 @@
(let* ((old (dummy-package "foo" (version "1")))
(new (dummy-package "bar" (version "2")))
(dep (deprecated-package "foo" new))
(tx (mock ((gnu packages) find-newest-available-packages
(const (vhash-cons "foo" (list "2" dep) vlist-null)))
(tx (mock ((gnu packages) find-best-packages-by-name
(const (list dep)))
((@@ (guix scripts package) transaction-upgrade-entry)
(manifest-entry
(inherit (package->manifest-entry old))

Loading…
Cancel
Save