unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
* [PATCH -v3 1/2] build: union: Add create-all-directories? parameter to union-build
@ 2017-03-12 11:53 Huang Ying
  2017-03-12 11:53 ` [PATCH -v3 2/2] guix: profiles: create fonts.dir/scale for all fonts directories Huang Ying
  2017-03-15 21:37 ` bug#26075: [PATCH -v3 1/2] build: union: Add create-all-directories? parameter to union-build Danny Milosavljevic
  0 siblings, 2 replies; 5+ messages in thread
From: Huang Ying @ 2017-03-12 11:53 UTC (permalink / raw)
  To: guix-devel; +Cc: guix-patches

* 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

^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2017-03-26 10:55 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-03-12 11:53 [PATCH -v3 1/2] build: union: Add create-all-directories? parameter to union-build Huang Ying
2017-03-12 11:53 ` [PATCH -v3 2/2] guix: profiles: create fonts.dir/scale for all fonts directories Huang Ying
2017-03-15 21:37 ` bug#26075: [PATCH -v3 1/2] build: union: Add create-all-directories? parameter to union-build Danny Milosavljevic
2017-03-24 11:53   ` Huang, Ying
2017-03-26 10:55     ` Ludovic Courtès

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).