grafts: Add 'without-grafting'.

* guix/grafts.scm (call-without-grafting): New procedure.
(without-grafting): New macro.
This commit is contained in:
Ludovic Courtès 2021-03-07 15:26:17 +01:00
parent 89b0c2390a
commit 565733c4d7
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5

View file

@ -42,6 +42,7 @@ (define-module (guix grafts)
graft-derivation/shallow
%graft?
without-grafting
set-grafting
grafting?))
@ -323,6 +324,17 @@ (define %graft?
;; Whether to honor package grafts by default.
(make-parameter #t))
(define (call-without-grafting thunk)
(lambda (store)
(values (parameterize ((%graft? #f))
(run-with-store store (thunk)))
store)))
(define-syntax-rule (without-grafting mexp ...)
"Bind monadic expressions MEXP in a dynamic extent where '%graft?' is
false."
(call-without-grafting (lambda () (mbegin %store-monad mexp ...))))
(define-inlinable (set-grafting enable?)
;; This monadic procedure enables grafting when ENABLE? is true, and
;; disables it otherwise. It returns the previous setting.