summaryrefslogtreecommitdiff
path: root/gnu/services/admin.scm
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2020-08-24 22:59:43 +0200
committerLudovic Courtès <ludo@gnu.org>2020-08-24 23:23:57 +0200
commitfe42e5f39c9b36f02beec246b376a50e41114b84 (patch)
tree8141f0eb07e1d663e4a65c5fc96ca2d218150959 /gnu/services/admin.scm
parent384377632c41c5c42e32889f4a239223aaae1ca9 (diff)
downloadguix-patches-fe42e5f39c9b36f02beec246b376a50e41114b84.tar
guix-patches-fe42e5f39c9b36f02beec246b376a50e41114b84.tar.gz
services: unattended-upgrade: Log output of the 'guix' commands.
Fixes <https://bugs.gnu.org/43011>. Reported by Jesse Gibbons <jgibbons2357@gmail.com>. Until now the stdout/stderr file descriptors were not redirected. * gnu/services/admin.scm (unattended-upgrade-mcron-jobs)[code]: Remove 'with-logging' and use 'redirect-port' instead.
Diffstat (limited to 'gnu/services/admin.scm')
-rw-r--r--gnu/services/admin.scm56
1 files changed, 26 insertions, 30 deletions
diff --git a/gnu/services/admin.scm b/gnu/services/admin.scm
index 61bc17b2fe..b34b990f32 100644
--- a/gnu/services/admin.scm
+++ b/gnu/services/admin.scm
@@ -255,13 +255,6 @@ Old log files are removed or compressed according to the configuration.")
(timestamp))
(exit 1))
- (define-syntax-rule (with-logging exp ...)
- (with-output-to-port log
- (lambda ()
- (with-error-to-port log
- (lambda ()
- exp ...)))))
-
;; 'guix time-machine' needs X.509 certificates to authenticate the
;; Git host.
(setenv "SSL_CERT_DIR"
@@ -271,29 +264,32 @@ Old log files are removed or compressed according to the configuration.")
(sigaction SIGALRM alarm-handler)
(alarm #$(unattended-upgrade-maximum-duration config))
- (with-logging
- (format #t "~a starting upgrade...~%" (timestamp))
- (guard (c ((invoke-error? c)
- (report-invoke-error c)))
- (invoke #$(file-append guix "/bin/guix")
- "time-machine" "-C" #$channels
- "--" "system" "reconfigure" #$config-file)
-
- ;; 'guix system delete-generations' fails when there's no
- ;; matching generation. Thus, catch 'invoke-error?'.
- (guard (c ((invoke-error? c)
- (report-invoke-error c)))
- (invoke #$(file-append guix "/bin/guix")
- "system" "delete-generations"
- #$(string-append (number->string expiration)
- "s")))
-
- (format #t "~a restarting services...~%" (timestamp))
- (for-each restart-service '#$services)
-
- ;; XXX: If 'mcron' has been restarted, perhaps this isn't
- ;; reached.
- (format #t "~a upgrade complete~%" (timestamp)))))))
+ ;; Redirect stdout/stderr to LOG to save the output of 'guix' below.
+ (redirect-port log (current-output-port))
+ (redirect-port log (current-error-port))
+
+ (format #t "~a starting upgrade...~%" (timestamp))
+ (guard (c ((invoke-error? c)
+ (report-invoke-error c)))
+ (invoke #$(file-append guix "/bin/guix")
+ "time-machine" "-C" #$channels
+ "--" "system" "reconfigure" #$config-file)
+
+ ;; 'guix system delete-generations' fails when there's no
+ ;; matching generation. Thus, catch 'invoke-error?'.
+ (guard (c ((invoke-error? c)
+ (report-invoke-error c)))
+ (invoke #$(file-append guix "/bin/guix")
+ "system" "delete-generations"
+ #$(string-append (number->string expiration)
+ "s")))
+
+ (format #t "~a restarting services...~%" (timestamp))
+ (for-each restart-service '#$services)
+
+ ;; XXX: If 'mcron' has been restarted, perhaps this isn't
+ ;; reached.
+ (format #t "~a upgrade complete~%" (timestamp))))))
(define upgrade
(program-file "unattended-upgrade" code))