From 661c237b4d8e670e73ea946179a94a3b956bb90e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Wed, 20 Jun 2018 09:44:27 +0200 Subject: [PATCH] services: boot: Reverse the order of boot expressions. * gnu/services.scm (compute-boot-script): Reverse MEXPS. * gnu/system.scm (essential-services): Reverse order of %SHEPHERD-ROOT-SERVICE, %ACTIVATION-SERVICE, and CLEANUP-SERVICE-TYPE. --- gnu/services.scm | 6 +++++- gnu/system.scm | 8 ++++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/gnu/services.scm b/gnu/services.scm index 81af4df849..3162c6ba05 100644 --- a/gnu/services.scm +++ b/gnu/services.scm @@ -334,7 +334,11 @@ containing the given entries." (extend system-derivation))) (define (compute-boot-script _ mexps) - (mlet %store-monad ((gexps (sequence %store-monad mexps))) + ;; Reverse MEXPS so that extensions appear in the boot script in the right + ;; order. That is, user extensions would come first, and extensions added + ;; by 'essential-services' (e.g., running shepherd) are guaranteed to come + ;; last. + (mlet %store-monad ((gexps (sequence %store-monad (reverse mexps)))) (gexp->file "boot" ;; Clean up and activate the system, then spawn shepherd. #~(begin #$@gexps)))) diff --git a/gnu/system.scm b/gnu/system.scm index d367307a24..7c51c4da97 100644 --- a/gnu/system.scm +++ b/gnu/system.scm @@ -470,13 +470,13 @@ a container or that of a \"bare metal\" system." (cons* (service system-service-type entries) %boot-service - ;; %SHEPHERD-ROOT-SERVICE must come first so that the gexp that + ;; %SHEPHERD-ROOT-SERVICE must come last so that the gexp that ;; execs shepherd comes last in the boot script (XXX). Likewise, - ;; the cleanup service must come last so that its gexp runs before + ;; the cleanup service must come first so that its gexp runs before ;; activation code. - %shepherd-root-service - %activation-service (service cleanup-service-type #f) + %activation-service + %shepherd-root-service (pam-root-service (operating-system-pam-services os)) (account-service (append (operating-system-accounts os)