me
/
guix
Archived
1
0
Fork 0

ui: Add a notification build handler.

* guix/ui.scm (build-notifier): New variable.
master
Ludovic Courtès 2020-03-18 22:19:05 +01:00
parent 041b340da4
commit 07ce23e011
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5
1 changed files with 38 additions and 0 deletions

View File

@ -93,6 +93,7 @@
string->number*
size->number
show-derivation-outputs
build-notifier
show-what-to-build
show-what-to-build*
show-manifest-transaction
@ -1045,6 +1046,43 @@ check and report what is prerequisites are available for download."
(define show-what-to-build*
(store-lift show-what-to-build))
(define* (build-notifier #:key (dry-run? #f) (use-substitutes? #t))
"Return a procedure suitable for 'with-build-handler' that, when
'build-things' is called, invokes 'show-what-to-build' to display the build
plan. When DRY-RUN? is true, the 'with-build-handler' form returns without
any build happening."
(define not-comma
(char-set-complement (char-set #\,)))
(define (read-derivation-from-file* item)
(catch 'system-error
(lambda ()
(read-derivation-from-file item))
(const #f)))
(lambda (continue store things mode)
(define inputs
;; List of derivation inputs to build. Filter out non-existent '.drv'
;; files because the daemon transparently tries to substitute them.
(filter-map (match-lambda
(((? derivation-path? drv) . output)
(let ((drv (read-derivation-from-file* drv))
(outputs (string-tokenize output not-comma)))
(and drv (derivation-input drv outputs))))
((? derivation-path? drv)
(and=> (read-derivation-from-file* drv)
derivation-input))
(_
#f))
things))
(show-what-to-build store inputs
#:dry-run? dry-run?
#:use-substitutes? use-substitutes?
#:mode mode)
(unless dry-run?
(continue #t))))
(define (right-arrow port)
"Return either a string containing the 'RIGHT ARROW' character, or an ASCII
replacement if PORT is not Unicode-capable."