From d36622dc4440e210be7fa8c5355e3bb52dabf2f2 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Thu, 23 Aug 2012 23:09:13 +0200 Subject: 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. --- guix/packages.scm | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) (limited to 'guix/packages.scm') 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 @@ (define-module (guix packages) #: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 @@ (define-module (guix packages) 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 @@ (define-syntax base32 #''bv))))) ;; A package. + (define-record-type* package make-package package? @@ -156,6 +164,18 @@ (define-record-type* (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 @@ (define* (package-derivation store package ;; 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) -- cgit v1.2.3