guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

06/06: gexp: Add 'directory-union'.


From: Ludovic Courtès
Subject: 06/06: gexp: Add 'directory-union'.
Date: Mon, 23 Oct 2017 01:09:11 -0400 (EDT)

civodul pushed a commit to branch master
in repository guix.

commit d298c815e638581d466222f3a883b280f019b368
Author: Ludovic Courtès <address@hidden>
Date:   Mon Oct 16 10:12:53 2017 +0200

    gexp: Add 'directory-union'.
    
    * gnu/services.scm (directory-union): Move to...
    * guix/gexp.scm (directory-union): ... here.  New procedure.
    * doc/guix.texi (G-Expressions): Document it.
---
 doc/guix.texi    | 11 +++++++++++
 gnu/services.scm | 17 +----------------
 guix/gexp.scm    | 20 ++++++++++++++++++++
 3 files changed, 32 insertions(+), 16 deletions(-)

diff --git a/doc/guix.texi b/doc/guix.texi
index ce8b977..d7fabe9 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -5007,6 +5007,17 @@ denoting the target file.  Here's an example:
 This yields an @code{etc} directory containing these two files.
 @end deffn
 
address@hidden {Scheme Procedure} directory-union @var{name} @var{things}
+Return a directory that is the union of @var{things}, where @var{things} is a 
list of
+file-like objects denoting directories.  For example:
+
address@hidden
+(directory-union "guile+emacs" (list guile emacs))
address@hidden example
+
+yields a directory that is the union of the @code{guile} and @code{emacs} 
packages.
address@hidden deffn
+
 @deffn {Scheme Procedure} file-append @var{obj} @var{suffix} @dots{}
 Return a file-like object that expands to the concatenation of @var{obj}
 and @var{suffix}, where @var{obj} is a lowerable object and each
diff --git a/gnu/services.scm b/gnu/services.scm
index bc866ea..50be28a 100644
--- a/gnu/services.scm
+++ b/gnu/services.scm
@@ -95,9 +95,7 @@
 
             %boot-service
             %activation-service
-            etc-service
-
-            directory-union))
+            etc-service))
 
 ;;; Comment:
 ;;;
@@ -387,19 +385,6 @@ boot."
                  (list (service-extension boot-service-type
                                           cleanup-gexp)))))
 
-(define (directory-union name things)
-  "Return a directory that is the union of THINGS."
-  (match things
-    ((one)
-     ;; Only one thing; return it.
-     one)
-    (_
-     (computed-file name
-                    (with-imported-modules '((guix build union))
-                      #~(begin
-                          (use-modules (guix build union))
-                          (union-build #$output '#$things)))))))
-
 (define* (activation-service->script service)
   "Return as a monadic value the activation script for SERVICE, a service of
 ACTIVATION-SCRIPT-TYPE."
diff --git a/guix/gexp.scm b/guix/gexp.scm
index 9835599..b952560 100644
--- a/guix/gexp.scm
+++ b/guix/gexp.scm
@@ -79,6 +79,7 @@
             text-file*
             mixed-text-file
             file-union
+            directory-union
             imported-files
             imported-modules
             compiled-modules
@@ -1203,6 +1204,25 @@ This yields an 'etc' directory containing these two 
files."
                                          (ungexp target))))))
                           files))))))
 
+(define (directory-union name things)
+  "Return a directory that is the union of THINGS, where THINGS is a list of
+file-like objects denoting directories.  For example:
+
+  (directory-union \"guile+emacs\" (list guile emacs))
+
+yields a directory that is the union of the 'guile' and 'emacs' packages."
+  (match things
+    ((one)
+     ;; Only one thing; return it.
+     one)
+    (_
+     (computed-file name
+                    (with-imported-modules '((guix build union))
+                      (gexp (begin
+                              (use-modules (guix build union))
+                              (union-build (ungexp output)
+                                           '(ungexp things)))))))))
+
 
 ;;;
 ;;; Syntactic sugar.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]