~ruther/guix-local

b0421cc964ce11c1e43da5ad2a8e31205539737c — Richard Sent 1 year, 11 months ago 89ed6e8
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>
2 files changed, 10 insertions(+), 4 deletions(-)

M doc/guix.texi
M gnu/services/admin.scm
M doc/guix.texi => doc/guix.texi +4 -0
@@ 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.

M gnu/services/admin.scm => gnu/services/admin.scm +6 -4
@@ 512,11 512,13 @@ which lets you search for packages that provide a given file.")
                      #$(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.