services: admin: Improve use of unattended-upgrade reboot? field.

This ensures the unattended upgrade job successfully reboots regardless of the
value for services-to-restart. Previously the mcron service may be restarted
which would halt script execution before the system rebooted.

* gnu/services/admin.scm (unattended-upgrade-mcron-jobs): Do not restart
services when reboot? is #t.
* doc/guix.texi (Unattended Upgrades): Document it.

Change-Id: I8e486a764ec1dc5c3090130cc447a0cc3f5a2e00
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
This commit is contained in:
Richard Sent 2024-12-03 18:28:13 -05:00 committed by Ludovic Courtès
parent 89ed6e80bb
commit b0421cc964
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5
2 changed files with 10 additions and 4 deletions

View file

@ -23337,6 +23337,10 @@ system to use for the upgrade. If no value is provided the
This field specifies whether the system should reboot after completing
an unattended upgrade.
When @code{reboot?} is @code{#t}, services are not restarted before
rebooting. This means that the value for @code{services-to-restart} is
ignored. The updated services will be started after the system reboots.
@item @code{services-to-restart} (default: @code{'(mcron)})
This field specifies the Shepherd services to restart when the upgrade
completes.

View file

@ -512,11 +512,13 @@ (define (alarm-handler . _)
#$(string-append (number->string expiration)
"s")))
(format #t "~a restarting services...~%" (timestamp))
(for-each restart-service '#$services)
(unless #$reboot?
;; Rebooting effectively restarts services anyway and execution
;; would be halted here if mcron is restarted.
(format #t "~a restarting services...~%" (timestamp))
(for-each restart-service '#$services))
;; XXX: If 'mcron' has been restarted, perhaps this isn't
;; reached.
;; XXX: If 'mcron' has been restarted, this is not reached.
(format #t "~a upgrade complete~%" (timestamp))
;; Stopping the root shepherd service triggers a reboot.