summaryrefslogtreecommitdiff
path: root/guix/build/utils.scm
diff options
context:
space:
mode:
Diffstat (limited to 'guix/build/utils.scm')
-rw-r--r--guix/build/utils.scm14
1 files changed, 14 insertions, 0 deletions
diff --git a/guix/build/utils.scm b/guix/build/utils.scm
index 971929621a..e3f9edc5b5 100644
--- a/guix/build/utils.scm
+++ b/guix/build/utils.scm
@@ -59,10 +59,12 @@
list->search-path-as-string
which
+ every*
alist-cons-before
alist-cons-after
alist-replace
modify-phases
+
with-atomic-file-replacement
substitute
substitute*
@@ -454,6 +456,18 @@ PROGRAM could not be found."
;;; phases.
;;;
+(define (every* pred lst)
+ "This is like 'every', but process all the elements of LST instead of
+stopping as soon as PRED returns false. This is useful when PRED has side
+effects, such as displaying warnings or error messages."
+ (let loop ((lst lst)
+ (result #t))
+ (match lst
+ (()
+ result)
+ ((head . tail)
+ (loop tail (and (pred head) result))))))
+
(define* (alist-cons-before reference key value alist
#:optional (key=? equal?))
"Insert the KEY/VALUE pair before the first occurrence of a pair whose key