summary refs log tree commit diff
path: root/gnu/system.scm
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2015-10-29 18:22:19 +0100
committerLudovic Courtès <ludo@gnu.org>2015-10-29 19:07:58 +0100
commite502bf8953afcd1e0cf29cd729e7c62c5c27792f (patch)
tree24a796b0e8beef91632b2d36f93fae32b2543c7d /gnu/system.scm
parent362f496da9fc929d9548b8a56990779718b13c95 (diff)
downloadguix-e502bf8953afcd1e0cf29cd729e7c62c5c27792f.tar.gz
system: File systems depend on their corresponding device mappings.
Fixes a regression introduced in commit 0adfe95.

* gnu/system.scm (other-file-system-services)[requirements]: Remove.
  [add-dependencies]: New procedure.
  Use it.
* gnu/system/file-systems.scm (<file-system>)[dependencies]: Update
  comment.
* gnu/services/base.scm (mapped-device->dmd-service-name,
  dependency->dmd-service-name): New procedures.
  (file-system-service-type): Use it.
Diffstat (limited to 'gnu/system.scm')
-rw-r--r--gnu/system.scm23
1 files changed, 10 insertions, 13 deletions
diff --git a/gnu/system.scm b/gnu/system.scm
index aa768824d9..37d6d075c5 100644
--- a/gnu/system.scm
+++ b/gnu/system.scm
@@ -195,19 +195,16 @@ as 'needed-for-boot'."
                         (file-system-device fs)))
             (operating-system-mapped-devices os)))
 
-  (define (requirements fs)
-    ;; XXX: Fiddling with dmd service names is not nice.
-    (append (map (lambda (fs)
-                   (symbol-append 'file-system-
-                                  (string->symbol
-                                   (file-system-mount-point fs))))
-                 (file-system-dependencies fs))
-            (map (lambda (md)
-                   (symbol-append 'device-mapping-
-                                  (string->symbol (mapped-device-target md))))
-                 (device-mappings fs))))
-
-  (map file-system-service file-systems))
+  (define (add-dependencies fs)
+    ;; Add the dependencies due to device mappings to FS.
+    (file-system
+      (inherit fs)
+      (dependencies
+       (delete-duplicates (append (device-mappings fs)
+                                  (file-system-dependencies fs))
+                          eq?))))
+
+  (map (compose file-system-service add-dependencies) file-systems))
 
 (define (mapped-device-user device file-systems)
   "Return a file system among FILE-SYSTEMS that uses DEVICE, or #f."