summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2018-11-05 22:52:19 +0100
committerLudovic Courtès <ludo@gnu.org>2018-11-06 00:04:11 +0100
commit5f7dd092ca577a534067f577b8849ed06cabf970 (patch)
tree62ed84557dee7cca142509799efbc2af69466685
parent7082873ea2771ebef900333e0fa7468d6395f330 (diff)
downloadpatches-5f7dd092ca577a534067f577b8849ed06cabf970.tar
patches-5f7dd092ca577a534067f577b8849ed06cabf970.tar.gz
pull: Make '--dry-run' behave as expected.
* guix/scripts/pull.scm (show-help): Document '--dry-run'. (build-and-install): Add #:dry-run? parameter and honor it. (guix-pull): Remove (assoc-ref opts 'dry-run?) condition. Instead, pass it as #:dry-run? to 'build-and-install'. * doc/guix.texi (Invoking guix pull): Document '--dry-run'. Move '--verbose' to the bottom.
-rw-r--r--doc/guix.texi11
-rw-r--r--guix/scripts/pull.scm17
2 files changed, 19 insertions, 9 deletions
diff --git a/doc/guix.texi b/doc/guix.texi
index 3b7fa50d81..d410f2a550 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -2844,9 +2844,6 @@ The @command{guix pull} command is usually invoked with no arguments,
but it supports the following options:
@table @code
-@item --verbose
-Produce verbose output, writing build logs to the standard error output.
-
@item --url=@var{url}
@itemx --commit=@var{commit}
@itemx --branch=@var{branch}
@@ -2880,6 +2877,14 @@ current generation only.
@itemx -p @var{profile}
Use @var{profile} instead of @file{~/.config/guix/current}.
+@item --dry-run
+@itemx -n
+Show which channel commit(s) would be used and what would be built or
+substituted but do not actually do it.
+
+@item --verbose
+Produce verbose output, writing build logs to the standard error output.
+
@item --bootstrap
Use the bootstrap Guile to build the latest Guix. This option is only
useful to Guix developers.
diff --git a/guix/scripts/pull.scm b/guix/scripts/pull.scm
index 188237aa90..aff4f378be 100644
--- a/guix/scripts/pull.scm
+++ b/guix/scripts/pull.scm
@@ -87,6 +87,8 @@ Download and deploy the latest version of Guix.\n"))
(display (G_ "
-p, --profile=PROFILE use PROFILE instead of ~/.config/guix/current"))
(display (G_ "
+ -n, --dry-run show what would be pulled and built"))
+ (display (G_ "
--bootstrap use the bootstrap Guile to build the new Guix"))
(newline)
(show-build-options-help)
@@ -164,15 +166,18 @@ Download and deploy the latest version of Guix.\n"))
(_ #t)))
(define* (build-and-install instances profile
- #:key verbose?)
- "Build the tool from SOURCE, and install it in PROFILE."
+ #:key verbose? dry-run?)
+ "Build the tool from SOURCE, and install it in PROFILE. When DRY-RUN? is
+true, display what would be built without actually building it."
(define update-profile
(store-lift build-and-use-profile))
(mlet %store-monad ((manifest (channel-instances->manifest instances)))
(mbegin %store-monad
- (update-profile profile manifest)
- (return (display-profile-news profile)))))
+ (update-profile profile manifest
+ #:dry-run? dry-run?)
+ (munless dry-run?
+ (display-profile-news profile)))))
(define (honor-lets-encrypt-certificates! store)
"Tell Guile-Git to use the Let's Encrypt certificates."
@@ -497,8 +502,6 @@ Use '~/.config/guix/channels.scm' instead."))
(ensure-default-profile)
(cond ((assoc-ref opts 'query)
(process-query opts profile))
- ((assoc-ref opts 'dry-run?)
- #t) ;XXX: not very useful
(else
(with-store store
(with-status-report print-build-event
@@ -531,6 +534,8 @@ Use '~/.config/guix/channels.scm' instead."))
(canonical-package guile-2.2)))))
(run-with-store store
(build-and-install instances profile
+ #:dry-run?
+ (assoc-ref opts 'dry-run?)
#:verbose?
(assoc-ref opts 'verbose?))))))))))))))