M guix/scripts/pull.scm => guix/scripts/pull.scm +12 -8
@@ 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))))))))
M guix/ui.scm => guix/ui.scm +4 -2
@@ 118,7 118,8 @@ General help using GNU software: <http://www.gnu.org/gethelp/>"))
(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 ()