inferior: 'cached-channel-instance' no longer calls 'show-what-to-build'.

This allows the user of 'cached-channel-instance' to install the build
handler of its choice.  In particular, it allows "guix time-machine" to
install a build notifier with the right options instead of using the
defaults that 'cached-channel-instance' would pass to
'show-what-to-build*'.

* guix/inferior.scm (cached-channel-instance): Remove call to
'show-what-to-build*'.
(inferior-for-channels): Wrap body in 'with-build-handler'.
* guix/scripts/time-machine.scm (guix-time-machine): Use
'with-build-handler'.
This commit is contained in:
Ludovic Courtès 2021-08-09 17:37:54 +02:00
parent 27f00963d3
commit 7bd5f72918
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5
2 changed files with 22 additions and 10 deletions

View file

@ -48,7 +48,7 @@ (define-module (guix inferior)
#:use-module (gcrypt hash)
#:autoload (guix cache) (maybe-remove-expired-cache-entries
file-expiration-time)
#:autoload (guix ui) (show-what-to-build*)
#:autoload (guix ui) (build-notifier)
#:autoload (guix build utils) (mkdir-p)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-26)
@ -801,8 +801,10 @@ (define add-indirect-root*
(profile
(channel-instances->derivation instances)))
(mbegin %store-monad
(show-what-to-build* (list profile))
;; It's up to the caller to install a build handler to report
;; what's going to be built.
(built-derivations (list profile))
;; Note: Caching is fine even when AUTHENTICATE? is false because
;; we always call 'latest-channel-instances?'.
(symlink* (derivation->output-path profile) cached)
@ -821,10 +823,14 @@ (define* (inferior-for-channels channels
'guix package -m', for instance."
(define cached
(with-store store
(cached-channel-instance store
channels
#:cache-directory cache-directory
#:ttl ttl)))
;; XXX: Install a build notifier out of convenience, so users know
;; what's going on. However, we cannot be sure that its options, such
;; as #:use-substitutes?, correspond to the daemon's default settings.
(with-build-handler (build-notifier)
(cached-channel-instance store
channels
#:cache-directory cache-directory
#:ttl ttl))))
(open-inferior cached))
;;; Local Variables:

View file

@ -1,6 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2019 Konrad Hinsen <konrad.hinsen@fastmail.net>
;;; Copyright © 2019, 2020 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2021 Simon Tournier <zimon.toutoune@gmail.com>
;;;
;;; This file is part of GNU Guix.
@ -141,13 +141,19 @@ (define-command (guix-time-machine . args)
(let* ((opts (parse-args args))
(channels (channel-list opts))
(command-line (assoc-ref opts 'exec))
(substitutes? (assoc-ref opts 'substitutes?))
(authenticate? (assoc-ref opts 'authenticate-channels?)))
(when command-line
(let* ((directory
(with-store store
(with-status-verbosity (assoc-ref opts 'verbosity)
(set-build-options-from-command-line store opts)
(cached-channel-instance store channels
#:authenticate? authenticate?))))
(with-build-handler (build-notifier #:use-substitutes?
substitutes?
#:verbosity
(assoc-ref opts 'verbosity)
#:dry-run? #f)
(set-build-options-from-command-line store opts)
(cached-channel-instance store channels
#:authenticate? authenticate?)))))
(executable (string-append directory "/bin/guix")))
(apply execl (cons* executable executable command-line))))))))