diff options
author | Ludovic Courtès <ludo@gnu.org> | 2012-08-23 23:09:13 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2012-08-23 23:09:13 +0200 |
commit | d36622dc4440e210be7fa8c5355e3bb52dabf2f2 (patch) | |
tree | 2162dab87cef8c63eacd06d7fae8c412460e4770 | |
parent | dfae21c8cc5d8bb8388c99c235efc04ebc3e4ef7 (diff) | |
download | guix-d36622dc4440e210be7fa8c5355e3bb52dabf2f2.tar.gz guix-d36622dc4440e210be7fa8c5355e3bb52dabf2f2.zip |
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.
-rw-r--r-- | guix/packages.scm | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/guix/packages.scm b/guix/packages.scm index 3ae71c99db..a1257b293f 100644 --- a/guix/packages.scm +++ b/guix/packages.scm @@ -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) |