diff --git a/guix/scripts/pull.scm b/guix/scripts/pull.scm index 42ff525524..942bf501c5 100644 --- a/guix/scripts/pull.scm +++ b/guix/scripts/pull.scm @@ -216,12 +216,16 @@ Download and deploy the latest version of Guix.\n")) ((source-dir) (derivation-output-path (assoc-ref (derivation-outputs drv) "out")))) - (show-what-to-build store (list source)) - (if (build-derivations store (list source)) - (let ((latest (string-append config-dir "/latest"))) - (add-indirect-root store latest) - (switch-symlinks latest source-dir) - (format #t - (_ "updated ~a successfully deployed under `~a'~%") - %guix-package-name latest) + (if (show-what-to-build store (list source)) + (if (build-derivations store (list source)) + (let ((latest (string-append config-dir "/latest"))) + (add-indirect-root store latest) + (switch-symlinks latest source-dir) + (format #t + (_ "updated ~a successfully deployed under `~a'~%") + %guix-package-name latest) + #t) + (leave (_ "failed to update Guix, check the build log~%"))) + (begin + (display (_ "Guix already up to date\n")) #t)))))))) diff --git a/guix/ui.scm b/guix/ui.scm index 7d1ea2bcbd..7e0c61b4f8 100644 --- a/guix/ui.scm +++ b/guix/ui.scm @@ -118,7 +118,8 @@ General help using GNU software: ")) (define* (show-what-to-build store drv #:optional dry-run?) "Show what will or would (depending on DRY-RUN?) be built in realizing the -derivations listed in DRV." +derivations listed in DRV. Return #t if there's something to build, #f +otherwise." (let* ((req (append-map (lambda (drv-path) (let ((d (call-with-input-file drv-path read-derivation))) @@ -140,7 +141,8 @@ derivations listed in DRV." (N_ "~:[the following derivation will be built:~%~{ ~a~%~}~;~]" "~:[the following derivations will be built:~%~{ ~a~%~}~;~]" (length req*)) - (null? req*) req*)))) + (null? req*) req*)) + (pair? req*))) (define-syntax with-error-handling (syntax-rules ()