WIP: bees service
[jackhill/guix/guix.git] / guix / modules.scm
index 6c602ed..61bc8e1 100644 (file)
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2016, 2017 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2016, 2017, 2018, 2019, 2021 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
   #:use-module (ice-9 match)
   #:export (missing-dependency-error?
             missing-dependency-module
+            missing-dependency-search-path
 
             file-name->module-name
             module-name->file-name
 
+            source-module-dependencies
             source-module-closure
             live-module-closure
             guix-module-name?))
@@ -46,7 +48,8 @@
 ;; The error corresponding to a missing module.
 (define-condition-type &missing-dependency-error &error
   missing-dependency-error?
-  (module  missing-dependency-module))
+  (module      missing-dependency-module)
+  (search-path missing-dependency-search-path))
 
 (define (colon-symbol? obj)
   "Return true if OBJ is a symbol that starts with a colon."
@@ -74,7 +77,7 @@ CLAUSES."
       ((#:autoload module _ rest ...)
        (loop rest (cons module result)))
       (((or #:export #:re-export #:export-syntax #:re-export-syntax
-            #:replace #:version)
+            #:re-export-and-replace #:replace #:version)
         _ rest ...)
        (loop rest result))
       (((or #:pure #:no-backtrace) rest ...)
@@ -109,7 +112,7 @@ depends on."
                  ".scm"))
 
 (define (guix-module-name? name)
-  "Return true if NAME (a list of symbols) denotes a Guix or GuixSD module."
+  "Return true if NAME (a list of symbols) denotes a Guix module."
   (match name
     (('guix _ ...) #t)
     (('gnu _ ...) #t)
@@ -131,7 +134,8 @@ depends on."
          (module-file-dependencies file))
         (#f
          (raise (condition (&missing-dependency-error
-                            (module module))))))))
+                            (module module)
+                            (search-path load-path))))))))
 
 (define* (module-closure modules
                          #:key