~ruther/guix-local

95cd4971d07fe312a4e0d21b72e7bf1bba493753 — Ludovic Courtès 10 years ago 7befee3
packages: Support the deprecated "NAME-VERSION" syntax.

Fixes a typo introduced in 1b846da8c372bee78851439fd9e72b2499115e5a that
would lead to a backtrace when using the deprecated syntax.

* gnu/packages.scm (%find-package): Turn the first argument to
'call-with-values' into a thunk.  Use #:select instead of '@' to select
the right 'package-name->name+version' procedure.
2 files changed, 8 insertions(+), 3 deletions(-)

M gnu/packages.scm
M tests/guix-build.sh
M gnu/packages.scm => gnu/packages.scm +7 -3
@@ 24,6 24,9 @@
  #:use-module (guix packages)
  #:use-module (guix ui)
  #:use-module (guix utils)
  #:use-module ((guix build utils)
                #:select ((package-name->name+version
                           . hyphen-separated-name->name+version)))
  #:use-module (ice-9 ftw)
  #:use-module (ice-9 vlist)
  #:use-module (ice-9 match)


@@ 300,9 303,10 @@ use NAME@VERSION instead~%")))
         (or fallback?
             ;; XXX: Fallback to the older specification style with an hyphen
             ;; between NAME and VERSION, for backward compatibility.
             (let ((proc (@ (guix build utils) package-name->name+version)))
               (call-with-values (proc name)
                 (cut %find-package spec <> <> #:fallback? #t)))
             (call-with-values
                 (lambda ()
                   (hyphen-separated-name->name+version name))
               (cut %find-package spec <> <> #:fallback? #t))
             (leave (_ "~A: unknown package~%") name))))))

(define (specification->package spec)

M tests/guix-build.sh => tests/guix-build.sh +1 -0
@@ 171,6 171,7 @@ then false; else true; fi
# Parsing package names and versions.
guix build -n time		# PASS
guix build -n time@1.7		# PASS, version found
guix build -n time-1.7		# PASS, deprecated version syntax
if guix build -n time@3.2;	# FAIL, version not found
then false; else true; fi
if guix build -n something-that-will-never-exist; # FAIL