~ruther/guix-local

efb107e0cd34fa0ed656441bf6e2414253c0344a — Ludovic Courtès 10 years ago 95cd497
packages: Gracefully report packages not found.

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

* gnu/packages.scm (%find-package): Correct logic when checking for
FALLBACK?.
2 files changed, 12 insertions(+), 1 deletions(-)

M gnu/packages.scm
M tests/packages.scm
M gnu/packages.scm => gnu/packages.scm +3 -1
@@ 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)

M tests/packages.scm => tests/packages.scm +9 -0
@@ 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")