summary refs log tree commit diff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2012-08-23 23:09:13 +0200
committerLudovic Courtès <ludo@gnu.org>2012-08-23 23:09:13 +0200
commitd36622dc4440e210be7fa8c5355e3bb52dabf2f2 (patch)
tree2162dab87cef8c63eacd06d7fae8c412460e4770
parentdfae21c8cc5d8bb8388c99c235efc04ebc3e4ef7 (diff)
downloadguix-d36622dc4440e210be7fa8c5355e3bb52dabf2f2.tar.gz
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.scm28
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)