[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH] gnu: Mark /gnu/store as needed for boot.
From: |
John Darrington |
Subject: |
[PATCH] gnu: Mark /gnu/store as needed for boot. |
Date: |
Wed, 11 Jan 2017 21:01:42 +0100 |
* gnu/system/file-systems.scm (all-subpaths): New procedure.
(file-system-needed-for-boot?): Use it to check for ancestors
of %store-directory.
---
gnu/system/file-systems.scm | 25 ++++++++++++++++++++++---
1 file changed, 22 insertions(+), 3 deletions(-)
diff --git a/gnu/system/file-systems.scm b/gnu/system/file-systems.scm
index 4cc1221..d42f271 100644
--- a/gnu/system/file-systems.scm
+++ b/gnu/system/file-systems.scm
@@ -20,6 +20,7 @@
#:use-module (ice-9 match)
#:use-module (guix records)
#:use-module (guix store)
+ #:use-module (guix build utils)
#:use-module ((gnu build file-systems)
#:select (string->uuid uuid->string))
#:re-export (string->uuid
@@ -95,11 +96,29 @@
(dependencies file-system-dependencies ; list of <file-system>
(default '()))) ; or <mapped-device>
+
+(define (all-subpaths path)
+ "Given a directory PATH return a list of all paths which
+are ancestors of this path, including PATH itself"
+ (let loop ((path (string-split path #\/))
+ (ac '()))
+ (if (null? path)
+ ac
+ (loop (cdr path)
+ (cons
+ (string-append
+ (match ac
+ (() "/")
+ ((x _ . _) (string-append x "/"))
+ ((x . _) x))
+ (car path))
+ ac)))))
+
(define-inlinable (file-system-needed-for-boot? fs)
- "Return true if FS has the 'needed-for-boot?' flag set, or if it's the root
-file system."
+ "Return true if FS has the 'needed-for-boot?' flag set, or if it holds
+the store directory."
(or (%file-system-needed-for-boot? fs)
- (string=? "/" (file-system-mount-point fs))))
+ (member (file-system-mount-point fs) (all-subpaths (%store-directory)))))
(define (file-system->spec fs)
"Return a list corresponding to file-system FS that can be passed to the
--
2.1.4
- [PATCH] gnu: Mark /gnu/store as needed for boot., John Darrington, 2017/01/11
- [PATCH] gnu: Mark /gnu/store as needed for boot.,
John Darrington <=
- Re: [PATCH] gnu: Mark /gnu/store as needed for boot., Chris Marusich, 2017/01/13
- Re: [PATCH] gnu: Mark /gnu/store as needed for boot., Ludovic Courtès, 2017/01/14
- Re: [PATCH] gnu: Mark /gnu/store as needed for boot., Ludovic Courtès, 2017/01/15
- Re: [PATCH] gnu: Mark /gnu/store as needed for boot., John Darrington, 2017/01/16
- Re: [PATCH] gnu: Mark /gnu/store as needed for boot., Ludovic Courtès, 2017/01/16
- ABI break!, Ludovic Courtès, 2017/01/17