From 7bd5f72918556359e502fee73e8a7b0e725b901f Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Mon, 9 Aug 2021 17:37:54 +0200 Subject: 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'. --- guix/inferior.scm | 18 ++++++++++++------ guix/scripts/time-machine.scm | 14 ++++++++++---- 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/guix/inferior.scm b/guix/inferior.scm index 7c8e478f2a..81958baaa5 100644 --- a/guix/inferior.scm +++ b/guix/inferior.scm @@ -48,7 +48,7 @@ #: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 @@ determines whether CHANNELS are authenticated." (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 @@ This is a convenience procedure that people may use in manifests passed to '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: diff --git a/guix/scripts/time-machine.scm b/guix/scripts/time-machine.scm index 4aafd432e8..5179ea035f 100644 --- a/guix/scripts/time-machine.scm +++ b/guix/scripts/time-machine.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2019 Konrad Hinsen -;;; Copyright © 2019, 2020 Ludovic Courtès +;;; Copyright © 2019, 2020, 2021 Ludovic Courtès ;;; Copyright © 2021 Simon Tournier ;;; ;;; This file is part of GNU Guix. @@ -141,13 +141,19 @@ Execute COMMAND ARGS... in an older version of Guix.\n")) (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)))))))) -- cgit v1.2.3