summary refs log tree commit diff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2012-08-25 13:12:33 +0200
committerLudovic Courtès <ludo@gnu.org>2012-08-25 13:12:45 +0200
commit8773648e35b18b2f4b29e43258d1eb38b792f27c (patch)
tree6ce80c30be2f529edef04871c1af6b5876002b19
parent22b5d9c9a5736b4fac7ddfb33a24c3481920fa4f (diff)
downloadguix-8773648e35b18b2f4b29e43258d1eb38b792f27c.tar.gz
utils: Change `substitute*' to accept a list of files to patch.
* guix/build/utils.scm (substitute*): Support a list of files as the
  first argument.
-rw-r--r--guix/build/utils.scm24
1 files changed, 14 insertions, 10 deletions
diff --git a/guix/build/utils.scm b/guix/build/utils.scm
index 7e572c0388..13ea4b82d8 100644
--- a/guix/build/utils.scm
+++ b/guix/build/utils.scm
@@ -210,10 +210,9 @@ as (PROC MATCH OUTPUT-PORT)."
     ((let-matches index match () body ...)
      (begin body ...))))
 
-(define-syntax-rule (substitute* file
-                                 ((regexp match-var ...) body ...)
-                                 ...)
-  "Substitute REGEXP in FILE by the string returned by BODY.  BODY is
+(define-syntax substitute*
+  (syntax-rules ()
+    "Substitute REGEXP in FILE by the string returned by BODY.  BODY is
 evaluated with each MATCH-VAR bound to the corresponding positional regexp
 sub-expression.  For example:
 
@@ -230,12 +229,17 @@ bound to the last one.
 
 When one of the MATCH-VAR is `_', no variable is bound to the corresponding
 match substring."
-  (substitute file
-              (list (cons regexp
-                          (lambda (m p)
-                            (let-matches 0 m (match-var ...)
-                                         (display (begin body ...) p))))
-                    ...)))
+    ((substitute* (file ...) clause ...)
+     (begin
+       (substitute* file clause ...)
+       ...))
+    ((substitute* file ((regexp match-var ...) body ...) ...)
+     (substitute file
+                 (list (cons regexp
+                             (lambda (m p)
+                               (let-matches 0 m (match-var ...)
+                                            (display (begin body ...) p))))
+                       ...)))))
 
 
 ;;;