aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2012-11-05 23:46:55 +0100
committerLudovic Courtès <ludo@gnu.org>2012-11-05 23:50:57 +0100
commit0af2c24ef788bffbdb30b4662d15fcd194a51e48 (patch)
tree7f76abb82fe1a2662cf922d1843bbac945ddecb7
parenta48dddfe9cf19b9c301ca170eacc05604b5cefac (diff)
downloadguix-0af2c24ef788bffbdb30b4662d15fcd194a51e48.tar
guix-0af2c24ef788bffbdb30b4662d15fcd194a51e48.tar.gz
utils: Add `default-keyword-arguments' and `substitute-keyword-arguments'.
* distro/packages/base.scm (default-keyword-arguments, substitute-keyword-arguments): Move to... * guix/utils.scm: ... here.
-rw-r--r--distro/packages/base.scm31
-rw-r--r--guix/utils.scm33
2 files changed, 33 insertions, 31 deletions
diff --git a/distro/packages/base.scm b/distro/packages/base.scm
index 3f79449250..195f870676 100644
--- a/distro/packages/base.scm
+++ b/distro/packages/base.scm
@@ -564,37 +564,6 @@ with the Linux kernel.")
;;; Bootstrap packages.
;;;
-(define (default-keyword-arguments args defaults)
- "Return ARGS augmented with any keyword/value from DEFAULTS for
-keywords not already present in ARGS."
- (let loop ((defaults defaults)
- (args args))
- (match defaults
- ((kw value rest ...)
- (loop rest
- (if (assoc-ref kw args)
- args
- (cons* kw value args))))
- (()
- args))))
-
-(define-syntax substitute-keyword-arguments
- (syntax-rules ()
- "Return a new list of arguments where the value for keyword arg KW is
-replaced by EXP. EXP is evaluated in a context where VAR is boud to the
-previous value of the keyword argument."
- ((_ original-args ((kw var) exp) ...)
- (let loop ((args original-args)
- (before '()))
- (match args
- ((kw var rest (... ...))
- (loop rest (cons* exp kw before)))
- ...
- ((x rest (... ...))
- (loop rest (cons x before)))
- (()
- (reverse before)))))))
-
(define gnu-make-boot0
(package-with-bootstrap-guile
(package (inherit gnu-make)
diff --git a/guix/utils.scm b/guix/utils.scm
index 7ebc026702..fa5abadc7a 100644
--- a/guix/utils.scm
+++ b/guix/utils.scm
@@ -49,6 +49,8 @@
define-record-type*
compile-time-value
memoize
+ default-keyword-arguments
+ substitute-keyword-arguments
location
location?
@@ -546,6 +548,37 @@ FIELD/DEFAULT-VALUE tuples."
(hash-set! cache args results)
(apply values results)))))))
+(define (default-keyword-arguments args defaults)
+ "Return ARGS augmented with any keyword/value from DEFAULTS for
+keywords not already present in ARGS."
+ (let loop ((defaults defaults)
+ (args args))
+ (match defaults
+ ((kw value rest ...)
+ (loop rest
+ (if (assoc-ref kw args)
+ args
+ (cons* kw value args))))
+ (()
+ args))))
+
+(define-syntax substitute-keyword-arguments
+ (syntax-rules ()
+ "Return a new list of arguments where the value for keyword arg KW is
+replaced by EXP. EXP is evaluated in a context where VAR is boud to the
+previous value of the keyword argument."
+ ((_ original-args ((kw var) exp) ...)
+ (let loop ((args original-args)
+ (before '()))
+ (match args
+ ((kw var rest (... ...))
+ (loop rest (cons* exp kw before)))
+ ...
+ ((x rest (... ...))
+ (loop rest (cons x before)))
+ (()
+ (reverse before)))))))
+
(define (gnu-triplet->nix-system triplet)
"Return the Nix system type corresponding to TRIPLET, a GNU triplet as
returned by `config.guess'."