Subject: bug#63082: [PATCH 07/17] services: mpd: Log to syslog by default.

From: Bruno Victal <[email-masked]>
Date: Fri, 28 Apr 2023 23:02:21 +0100

On 2023-04-28 15:27, Maxim Cournoyer wrote:
> Rationale: the tristate value was awkward to deal with, the default log file
> name was odd (/var/log/mpd/log) and it required special attention to create
> the 'mpd' parent directory as root and chowning it to the MPD user.  It also
> didn't match the default behavior of MPD, which is to log to systemd or syslog
> unless a log file is specified.
> 
> * gnu/services/audio.scm (mpd-log-file-sanitizer): New procedure.
> (mpd-configuration) [log-file]: Remove default maybe value.  Add sanitizer.
> (mpd-shepherd-service): Validate the log file parent directory exists and has
> the right permissions.
> * doc/guix.texi (Audio Services): Update doc.

How about a similar approach taken in mympd for handling the logging parameter?
In any case, I'd like to remind you that mpd-service-type also has a rottlog service extension
so that also needs to be taken into account.

>    (log-level
>     maybe-string
> @@ -563,17 +573,18 @@ (define (mpd-shepherd-service config)
>         (requirement `(user-processes loopback ,@shepherd-requirement))
>         (provision '(mpd))
>         (start #~(begin
> -                  (and=> #$(maybe-value log-file)
> -                         (compose mkdir-p dirname))
> -
>                    (let ((user (getpw #$username)))
>                      (for-each
>                       (lambda (x)
> -                       (when (and x (not (file-exists? x)))
> +                       ;; Take action on absolute file names, to filter out
> +                       ;; the 'syslog' special value.
> +                       (when (and x (string-prefix? "/" x)
> +                                  (not (file-exists? x)))
>                           (mkdir-p x)
>                           (chown x (passwd:uid user) (passwd:gid user))))

I'd use mkdir-p/perms from (gnu build activation) instead.