[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#26075: [PATCH -v3 1/2] build: union: Add create-all-directories? par
From: |
Huang Ying |
Subject: |
bug#26075: [PATCH -v3 1/2] build: union: Add create-all-directories? parameter to union-build |
Date: |
Sun, 12 Mar 2017 19:53:58 +0800 |
* guix/build/union.scm (union-build): Add create-all-directories? keyword
parameter.
---
guix/build/union.scm | 16 +++++++++++-----
1 file changed, 11 insertions(+), 5 deletions(-)
diff --git a/guix/build/union.scm b/guix/build/union.scm
index 6640b5652..b852bc66e 100644
--- a/guix/build/union.scm
+++ b/guix/build/union.scm
@@ -73,9 +73,12 @@ identical, #f otherwise."
(loop)))))))))))))
(define* (union-build output inputs
- #:key (log-port (current-error-port)))
- "Build in the OUTPUT directory a symlink tree that is the union of all
-the INPUTS."
+ #:key (log-port (current-error-port))
+ (create-all-directories? #f))
+ "Build in the OUTPUT directory a symlink tree that is the union of all the
+INPUTS. As a special case, if CREATE-ALL-DIRECTORIES?, creates the
+subdirectories in the output directory to make sure the caller can modify them
+later."
(define (symlink* input output)
(format log-port "`~a' ~~> `~a'~%" input output)
@@ -104,8 +107,11 @@ the INPUTS."
(define (union output inputs)
(match inputs
((input)
- ;; There's only one input, so just make a link.
- (symlink* input output))
+ ;; There's only one input, so just make a link unless
+ ;; create-all-directories?.
+ (if (and create-all-directories? (file-is-directory? input))
+ (union-of-directories output inputs)
+ (symlink* input output)))
(_
(call-with-values (lambda () (partition file-is-directory? inputs))
(match-lambda*
--
2.12.0
- bug#26075: [PATCH -v3 1/2] build: union: Add create-all-directories? parameter to union-build,
Huang Ying <=