[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.
- branch master updated (2f05dd6 -> d298c81), Ludovic Courtès, 2017/10/23
- 04/06: discovery: Move 'file-name->module-name' to (guix modules)., Ludovic Courtès, 2017/10/23
- 03/06: build: Honor make's '-j' flag., Ludovic Courtès, 2017/10/23
- 05/06: gexp: Add 'file-union'., Ludovic Courtès, 2017/10/23
- 01/06: services: base: Add file->udev-rule function., Ludovic Courtès, 2017/10/23
- 06/06: gexp: Add 'directory-union'.,
Ludovic Courtès <=
- 02/06: build: Factorize module compilation in (guix build compile)., Ludovic Courtès, 2017/10/23