~ruther/guix-local

d36622dc4440e210be7fa8c5355e3bb52dabf2f2 — Ludovic Courtès 13 years ago dfae21c
packages: Raise an error condition upon invalid input.

* guix/packages.scm (&package-error, &package-input-error): New
  condition types.
  (package-derivation): Raise a `&package-input-error' when no match is
  made.
1 files changed, 26 insertions(+), 2 deletions(-)

M guix/packages.scm
M guix/packages.scm => guix/packages.scm +26 -2
@@ 23,6 23,8 @@
  #:use-module (ice-9 match)
  #:use-module (srfi srfi-1)
  #:use-module (srfi srfi-9)
  #:use-module (srfi srfi-34)
  #:use-module (srfi srfi-35)
  #:export (location
            location?
            location-file


@@ 60,7 62,12 @@
            package-transitive-inputs
            package-source-derivation
            package-derivation
            package-cross-derivation))
            package-cross-derivation

            &package-error
            package-error-package
            &package-input-error
            package-error-invalid-input))

;;; Commentary:
;;;


@@ 116,6 123,7 @@ representation."
         #''bv)))))

;; A package.

(define-record-type* <package>
  package make-package
  package?


@@ 156,6 164,18 @@ representation."
            (default (and=> (current-source-location)
                            source-properties->location))))


;; Error conditions.

(define-condition-type &package-error &error
  package-error?
  (package package-error-package))

(define-condition-type &package-input-error &package-error
  package-input-error?
  (input package-error-invalid-input))


(define (package-source-derivation store source)
  "Return the derivation path for SOURCE, a package source."
  (match source


@@ 209,7 229,11 @@ with their propagated inputs, recursively."
                          ;; added anyway, so it can be used as a source.
                          (list name
                                (add-to-store store (basename file)
                                              #t #f "sha256" file))))
                                              #t #f "sha256" file)))
                         (x
                          (raise (condition (&package-input-error
                                             (package package)
                                             (input   x))))))
                        (package-transitive-inputs package))))
       (apply builder
              store (string-append name "-" version)