services: Use (guix build syscalls) instead of util-linux.
* gnu/services/dmd.scm (dmd-configuration-file): Add derivations for the (guix build syscalls) module, and add that to the load path of dmd.conf. * gnu/services/base.scm (root-file-system-service): Rewrite using the 'sync' and 'mount' procedures.
This commit is contained in:
parent
29fa45f45d
commit
23ed63a12d
|
@ -22,8 +22,7 @@
|
|||
#:use-module (gnu system linux) ; 'pam-service', etc.
|
||||
#:use-module (gnu packages admin)
|
||||
#:use-module ((gnu packages base)
|
||||
#:select (glibc-final %final-inputs))
|
||||
#:use-module (gnu packages linux)
|
||||
#:select (glibc-final))
|
||||
#:use-module (gnu packages package-management)
|
||||
#:use-module (guix gexp)
|
||||
#:use-module (guix monads)
|
||||
|
@ -52,9 +51,6 @@ system upon shutdown (aka. cleanly \"umounting\" root.)
|
|||
|
||||
This service must be the root of the service dependency graph so that its
|
||||
'stop' action is invoked when dmd is the only process left."
|
||||
(define coreutils
|
||||
(car (assoc-ref %final-inputs "coreutils")))
|
||||
|
||||
(with-monad %store-monad
|
||||
(return
|
||||
(service
|
||||
|
@ -63,7 +59,7 @@ This service must be the root of the service dependency graph so that its
|
|||
(start #~(const #t))
|
||||
(stop #~(lambda _
|
||||
;; Return #f if successfully stopped.
|
||||
(system* (string-append #$coreutils "/bin/sync"))
|
||||
(sync)
|
||||
|
||||
(call-with-blocked-asyncs
|
||||
(lambda ()
|
||||
|
@ -82,12 +78,13 @@ This service must be the root of the service dependency graph so that its
|
|||
;; Close /dev/console.
|
||||
(for-each close-fdes '(0 1 2))
|
||||
|
||||
;; At this points, there are no open files left, so the
|
||||
;; At this point, there are no open files left, so the
|
||||
;; root file system can be re-mounted read-only.
|
||||
(not (zero?
|
||||
(system* (string-append #$util-linux "/bin/mount")
|
||||
"-n" "-o" "remount,ro"
|
||||
"-t" "dummy" "dummy" "/"))))))))
|
||||
(mount #f "/" #f
|
||||
(logior MS_REMOUNT MS_RDONLY)
|
||||
#:update-mtab? #f)
|
||||
|
||||
#f)))))
|
||||
(respawn? #f)))))
|
||||
|
||||
(define* (user-processes-service #:key (grace-delay 2))
|
||||
|
|
|
@ -32,27 +32,39 @@
|
|||
|
||||
(define (dmd-configuration-file services)
|
||||
"Return the dmd configuration file for SERVICES."
|
||||
(define config
|
||||
#~(begin
|
||||
(use-modules (ice-9 ftw))
|
||||
(define modules
|
||||
;; Extra modules visible to dmd.conf.
|
||||
'((guix build syscalls)))
|
||||
|
||||
(register-services
|
||||
#$@(map (lambda (service)
|
||||
#~(make <service>
|
||||
#:docstring '#$(service-documentation service)
|
||||
#:provides '#$(service-provision service)
|
||||
#:requires '#$(service-requirement service)
|
||||
#:respawn? '#$(service-respawn? service)
|
||||
#:start #$(service-start service)
|
||||
#:stop #$(service-stop service)))
|
||||
services))
|
||||
(mlet %store-monad ((modules (imported-modules modules))
|
||||
(compiled (compiled-modules modules)))
|
||||
(define config
|
||||
#~(begin
|
||||
(eval-when (expand load eval)
|
||||
(set! %load-path (cons #$modules %load-path))
|
||||
(set! %load-compiled-path
|
||||
(cons #$compiled %load-compiled-path)))
|
||||
|
||||
;; guix-daemon 0.6 aborts if 'PATH' is undefined, so work around it.
|
||||
(setenv "PATH" "/run/current-system/bin")
|
||||
(use-modules (ice-9 ftw)
|
||||
(guix build syscalls))
|
||||
|
||||
(format #t "starting services...~%")
|
||||
(for-each start '#$(append-map service-provision services))))
|
||||
(register-services
|
||||
#$@(map (lambda (service)
|
||||
#~(make <service>
|
||||
#:docstring '#$(service-documentation service)
|
||||
#:provides '#$(service-provision service)
|
||||
#:requires '#$(service-requirement service)
|
||||
#:respawn? '#$(service-respawn? service)
|
||||
#:start #$(service-start service)
|
||||
#:stop #$(service-stop service)))
|
||||
services))
|
||||
|
||||
(gexp->file "dmd.conf" config))
|
||||
;; guix-daemon 0.6 aborts if 'PATH' is undefined, so work around it.
|
||||
(setenv "PATH" "/run/current-system/bin")
|
||||
|
||||
(format #t "starting services...~%")
|
||||
(for-each start '#$(append-map service-provision services))))
|
||||
|
||||
(gexp->file "dmd.conf" config)))
|
||||
|
||||
;;; dmd.scm ends here
|
||||
|
|
Loading…
Reference in New Issue