diff options
author | Ludovic Courtès <ludo@gnu.org> | 2017-05-25 14:19:51 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2017-05-25 14:25:17 +0200 |
commit | bfe5264aa10c1af64adc5c24d0cf091562e3e09c (patch) | |
tree | 35a96110a4ae5d201edbf665f49513a08cf61a85 /guix/modules.scm | |
parent | 4862a98be473ac6bb0bfd8a6cdbc81119cb44355 (diff) |
modules: Raise an error when a dependency could not be found.
* guix/modules.scm (&missing-dependency-error): New error condition.
(source-module-dependencies): Raise it when 'search-path' returns #f.
* tests/modules.scm ("&missing-dependency-error"): New test.
Diffstat (limited to 'guix/modules.scm')
-rw-r--r-- | guix/modules.scm | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/guix/modules.scm b/guix/modules.scm index 24b5903579..19a4acd76c 100644 --- a/guix/modules.scm +++ b/guix/modules.scm @@ -20,8 +20,13 @@ #:use-module (guix memoization) #:use-module (guix sets) #:use-module (srfi srfi-26) + #:use-module (srfi srfi-34) + #:use-module (srfi srfi-35) #:use-module (ice-9 match) - #:export (source-module-closure + #:export (missing-dependency-error? + missing-dependency-module + + source-module-closure live-module-closure guix-module-name?)) @@ -35,6 +40,11 @@ ;;; ;;; Code: +;; The error corresponding to a missing module. +(define-condition-type &missing-dependency-error &error + missing-dependency-error? + (module missing-dependency-module)) + (define (colon-symbol? obj) "Return true if OBJ is a symbol that starts with a colon." (and (symbol? obj) @@ -106,9 +116,12 @@ depends on." "Return the modules used by MODULE by looking at its source code." (if (member module %source-less-modules) '() - (module-file-dependencies - (search-path load-path - (module-name->file-name module))))) + (match (search-path load-path (module-name->file-name module)) + ((? string? file) + (module-file-dependencies file)) + (#f + (raise (condition (&missing-dependency-error + (module module)))))))) (define* (module-closure modules #:key |