~ruther/guix-local

4b2615e1cae8e21df8f180abf261d1dc22a2459e — Ludovic Courtès 12 years ago 55ccc38
services: nscd: Provide an 'activate' script to make /var/run/nscd.

* gnu/services/base.scm (nscd-service): Add 'activate' field.
* guix/build/install.scm (directives): Remove /var/run/nscd; add
  /var/run.
* doc/guix.texi (Defining Services): Add 'activate' field in example.
  Document it.
3 files changed, 19 insertions(+), 7 deletions(-)

M doc/guix.texi
M gnu/services/base.scm
M guix/build/install.scm
M doc/guix.texi => doc/guix.texi +13 -6
@@ 3299,6 3299,9 @@ like:
    (return (service
             (documentation "Run libc's name service cache daemon.")
             (provision '(nscd))
             (activate #~(begin
                           (use-modules (guix build utils))
                           (mkdir-p "/var/run/nscd")))
             (start #~(make-forkexec-constructor
                       (string-append #$glibc "/sbin/nscd")
                       "-f" "/dev/null" "--foreground"))


@@ 3307,12 3310,16 @@ like:
@end lisp

@noindent
The @code{start} and @code{stop} fields are G-expressions
(@pxref{G-Expressions}).  They refer to dmd's facilities to start and
stop processes (@pxref{Service De- and Constructors,,, dmd, GNU dmd
Manual}).  The @code{provision} field specifies the name under which
this service is known to dmd, and @code{documentation} specifies on-line
documentation.  Thus, the commands @command{deco start ncsd},
The @code{activate}, @code{start}, and @code{stop} fields are G-expressions
(@pxref{G-Expressions}).  The @code{activate} field contains a script to
run at ``activation'' time; it makes sure that the @file{/var/run/nscd}
directory exists before @command{nscd} is started.

The @code{start} and @code{stop} fields refer to dmd's facilities to
start and stop processes (@pxref{Service De- and Constructors,,, dmd,
GNU dmd Manual}).  The @code{provision} field specifies the name under
which this service is known to dmd, and @code{documentation} specifies
on-line documentation.  Thus, the commands @command{deco start ncsd},
@command{deco stop nscd}, and @command{deco doc nscd} will do what you
would expect (@pxref{Invoking deco,,, dmd, GNU dmd Manual}).


M gnu/services/base.scm => gnu/services/base.scm +5 -0
@@ 225,6 225,11 @@ stopped before 'kill' is called."
             (documentation "Run libc's name service cache daemon (nscd).")
             (provision '(nscd))
             (requirement '(user-processes))

             (activate #~(begin
                           (use-modules (guix build utils))
                           (mkdir-p "/var/run/nscd")))

             (start
              #~(make-forkexec-constructor (string-append #$glibc "/sbin/nscd")
                                           "-f" "/dev/null"

M guix/build/install.scm => guix/build/install.scm +1 -1
@@ 76,9 76,9 @@ STORE."
  `((directory ,store 0 0)
    (directory "/etc")
    (directory "/var/log")                          ; for dmd
    (directory "/var/run/nscd")
    (directory "/var/guix/gcroots")
    (directory "/var/empty")                        ; for no-login accounts
    (directory "/var/run")
    (directory "/run")
    ("/var/guix/gcroots/booted-system" -> "/run/booted-system")
    ("/var/guix/gcroots/current-system" -> "/run/current-system")