ng0 <n...@pragmatique.xyz> writes:

> When I start this via the arguments I pass (well, any arguments),
> without the service it starts and I can access the server.
>
> The service never starts (and due to its simplistic nature, no
> "BOOM CRASH THIS IS WHY I REFUSE TO START" is seen.
> In this version I added 'networking' to requirements, still no change.
>
> Anyone got an idea what could be missing from making this simple service
> functional?
>

[...]
> diff --git a/gnu/services/web.scm b/gnu/services/web.scm
> index f85b41215..2cfa835a7 100644
> --- a/gnu/services/web.scm
> +++ b/gnu/services/web.scm
> @@ -1,7 +1,7 @@
>  ;;; GNU Guix --- Functional package management for GNU
>  ;;; Copyright © 2015 David Thompson <da...@gnu.org>
>  ;;; Copyright © 2015, 2016, 2017 Ludovic Courtès <l...@gnu.org>
> -;;; Copyright © 2016 ng0 <n...@we.make.ritual.n0.is>
> +;;; Copyright © 2016, 2017 ng0 <n...@no-reply.pragmatique.xyz>
>  ;;; Copyright © 2016, 2017 Julien Lepiller <jul...@lepiller.eu>
>  ;;; Copyright © 2017 Christopher Baines <m...@cbaines.net>
>  ;;;
> @@ -41,7 +41,12 @@
>              nginx-named-location-configuration
>              nginx-named-location-configuration?
>              nginx-service
> -            nginx-service-type))
> +            nginx-service-type
> +
> +            geomyidae-service
> +            geomyidae-service-type
> +            geomyidae-configuration
> +            geomyidae-configuration?))
>  
>  ;;; Commentary:
>  ;;;
> @@ -305,3 +310,111 @@ files in LOG-DIRECTORY, and stores temporary runtime 
> files in RUN-DIRECTORY."
>              (server-blocks server-list)
>              (upstream-blocks upstream-list)
>              (file config-file))))
> +
> +;;;
> +;;; geomyidae
> +;;;
> +
> +(define-record-type* <geomyidae-configuration>
> +  geomyidae-configuration make-geomyidae-configuration
> +  geomyidae-configuration?
> +  (package  geomyidae-configuration-package ;package
> +            (default geomyidae))
> +  (logfile  geomyidae-configuration-logfile ;string
> +            (default "/var/log/geomyidae.log"))
> +  (loglevel geomyidae-configuration-loglevel ;number
> +            (default 7))
> +  (htdocs   geomyidae-configuration-htdocs ;string
> +            (default "/srv/gopher"))
> +  (port     geomyidae-configuration-port ;number
> +            (default 70))
> +  (sport    geomyidae-configuration-sport ;number
> +            (default 70))
> +  (host     geomyidae-configuration-host ;string
> +            (default "localhost"))
> +  (ip       geomyidae-configuration-ip ;string
> +            (default #f)))
> +
> +(define geomyidae-shepherd-service
> +  (match-lambda
> +    (($ <geomyidae-configuration>
> +        package logfile loglevel htdocs port
> +        sport host ip);;user group
> +     (let* ((geomyidae (file-append package "/bin/geomyidae"))
> +            (cmd `(,geomyidae
> +                   "-d"
> +                   ,@(if logfile
> +                         `(,(string-append "-l " logfile))
> +                         '())
> +                   ,@(if loglevel
> +                         `(,(string-append
> +                             "-v " (number->string loglevel)))
> +                         '())
> +                   ,@(if htdocs
> +                         `(,(string-append "-b " htdocs))
> +                         '())
> +                   ,@(if port
> +                         `(,(string-append
> +                             "-p " (number->string port)))
> +                         '())
> +                   ,@(if sport
> +                         `(,(string-append
> +                             "-o " (number->string sport)))
> +                         '())
> +                   ,@(if host
> +                         `(,(string-append "-h " host))
> +                         '())
> +                   ,@(if ip
> +                         `(,(string-append "-i " ip))
> +                         '()))))
> +       (list (shepherd-service
> +              (documentation "Run the gopherd geomyidae")
> +              (provision '(geomyidae))
> +              (requirement '(user-processes loopback networking))
> +              (start #~(make-forkexec-constructor
> +                        '#$cmd

Why is there a single quote in front of #$cmd ?

I think Ludo once explained how to manually exercise the service script;
I'm not sure, but maybe you could gather more clues as to what might be
failing from there if you could manage to run the service manually at
the REPL.

Maxim

Attachment: signature.asc
Description: PGP signature

Reply via email to