Browse Source

packages: Gracefully report packages not found.

Fixes a thinko introduced in 1b846da8c3
that would lead to a backtrace when looking for an unknown package.

* gnu/packages.scm (%find-package): Correct logic when checking for
FALLBACK?.
wip-check
Ludovic Courtès 6 years ago
parent
commit
efb107e0cd
  1. 4
      gnu/packages.scm
  2. 9
      tests/packages.scm

4
gnu/packages.scm

@ -300,13 +300,15 @@ use NAME@VERSION instead~%")))
(_
(if version
(leave (_ "~A: package not found for version ~a~%") name version)
(or fallback?
(if (not fallback?)
;; XXX: Fallback to the older specification style with an hyphen
;; between NAME and VERSION, for backward compatibility.
(call-with-values
(lambda ()
(hyphen-separated-name->name+version name))
(cut %find-package spec <> <> #:fallback? #t))
;; The fallback case didn't find anything either, so bail out.
(leave (_ "~A: unknown package~%") name))))))
(define (specification->package spec)

9
tests/packages.scm

@ -788,6 +788,15 @@
(guix-package "-p" (derivation->output-path prof)
"--search-paths"))))))
(test-equal "specification->package when not found"
'quit
(catch 'quit
(lambda ()
;; This should call 'leave', producing an error message.
(specification->package "this-package-does-not-exist"))
(lambda (key . args)
key)))
(test-end "packages")

Loading…
Cancel
Save