[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#63082: [PATCH v3 05/16] services: mpd: Obsolete the 'group' field.
From: |
Maxim Cournoyer |
Subject: |
bug#63082: [PATCH v3 05/16] services: mpd: Obsolete the 'group' field. |
Date: |
Fri, 5 May 2023 14:29:00 -0400 |
Prior to this change, there was a discrepancy where a user could have
disagreeing groups between the group and user fields (the user field being a
<user-account> record, which includes its primary group as a string). This
could have caused problems because the USER's group was being used to set the
file permissions, while the GROUP name was serialized to MPD's configuration,
and MPD would use it to set the group of its running process. Synchronizing
both is not practical, as it can easily lead to slightly different
<user-account> objects conflicting, again causing problems.
The compromise is to obsolete the 'group' field. A group can still be
configured via the 'user' field, which accepts a <user-account> object, with
the limitation that the group should already exist.
* gnu/services/audio.scm (%lazy-group): Delete variable.
(%set-user-group): Delete procedure.
(mpd-serialize-user-group): Likewise.
(%mpd-user) [group]: Default to "audio".
(%mpd-group): Delete variable.
(mpd-group-sanitizer, mympd-group-sanitizer): Adjust sanitizers.
(mpd-configuration, mympd-configuration) [group]: Default to #f. Update doc.
(mpd-accounts, mympd-accounts): Remove group.
(%mympd-user) [group]: Default to "nogroup".
(%mympd-group): Delete variable.
* doc/guix.texi: Regenerate doc.
---
doc/guix.texi | 15 +++-----
gnu/services/audio.scm | 83 +++++++++++-------------------------------
2 files changed, 27 insertions(+), 71 deletions(-)
diff --git a/doc/guix.texi b/doc/guix.texi
index d68d7dd7eb..db8f275bf2 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -33600,8 +33600,8 @@ Audio Services
@item @code{user} (type: user-account)
The user to run mpd as.
-@item @code{group} (type: user-group)
-The group to run mpd as.
+@item @code{group} (default: @code{#f}) (type: boolean)
+Obsolete. Do not use.
@item @code{shepherd-requirement} (default: @code{()}) (type: list-of-symbol)
This is a list of symbols naming Shepherd services that this service
@@ -33853,15 +33853,12 @@ Audio Services
This is a list of symbols naming Shepherd services that this service
will depend on.
-@item @code{user} (default: @code{%mympd-user}) (type: user-account)
+@item @code{user} (type: user-account)
Owner of the @command{mympd} process.
-The default @code{%mympd-user} is a system user with the name ``mympd'',
-who is a part of the group @var{group} (see below).
-@item @code{group} (default: @code{%mympd-group}) (type: user-group)
-Owner group of the @command{mympd} process.
+@item @code{group} (default: @code{#f}) (type: boolean)
+Obsolete. Do not use.
-The default @code{%mympd-group} is a system group with name ``mympd''.
@item @code{work-directory} (default: @code{"/var/lib/mympd"}) (type: string)
Where myMPD will store its data.
@@ -33901,7 +33898,7 @@ Audio Services
Override URI to myMPD. See
@uref{https://github.com/jcorporation/myMPD/issues/950}.
-@item @code{script-acl} (default: @code{(mympd-ip-acl (allow
'("127.0.0.1")))}) (type: maybe-mympd-ip-acl)
+@item @code{script-acl} (type: maybe-mympd-ip-acl)
ACL to access the myMPD script backend.
@item @code{ssl?} (default: @code{#f}) (type: boolean)
diff --git a/gnu/services/audio.scm b/gnu/services/audio.scm
index 7874539810..60387272fc 100644
--- a/gnu/services/audio.scm
+++ b/gnu/services/audio.scm
@@ -140,14 +140,6 @@ (define (uglify-field-name field-name)
(define list-of-symbol?
(list-of symbol?))
-;; Helpers for deprecated field types, to be removed later.
-(define %lazy-group (make-symbol "%lazy-group"))
-
-(define (set-user-group user group)
- (user-account
- (inherit user)
- (group (user-group-name group))))
-
;;;
;;; MPD
@@ -175,9 +167,6 @@ (define (mpd-serialize-list-of-strings field-name value)
(define (mpd-serialize-user-account field-name value)
(mpd-serialize-string field-name (user-account-name value)))
-(define (mpd-serialize-user-group field-name value)
- (mpd-serialize-string field-name (user-group-name value)))
-
(define-maybe string (prefix mpd-))
(define-maybe list-of-strings (prefix mpd-))
(define-maybe boolean (prefix mpd-))
@@ -185,20 +174,13 @@ (define-maybe boolean (prefix mpd-))
(define %mpd-user
(user-account
(name "mpd")
- ;; XXX: This is a place-holder to be lazily substituted in (…-accounts)
- ;; with the value from the 'group' field of <mpd-configuration>.
- (group %lazy-group)
+ (group "audio")
(system? #t)
(comment "Music Player Daemon (MPD) user")
;; MPD can use $HOME (or $XDG_CONFIG_HOME) to place its data.
(home-directory "/var/lib/mpd")
(shell (file-append shadow "/sbin/nologin"))))
-(define %mpd-group
- (user-group
- (name "mpd")
- (system? #t)))
-
;;; TODO: Procedures for deprecated fields, to be removed.
(define mpd-deprecated-fields '((music-dir . music-directory)
@@ -242,15 +224,9 @@ (define (mpd-user-sanitizer value)
(configuration-field-error #f 'user value))))
(define (mpd-group-sanitizer value)
- (cond ((user-group? value) value)
- ((string? value)
- (warning (G_ "string value for 'group' is deprecated, use \
-user-group instead~%"))
- (user-group
- (inherit %mpd-group)
- (name value)))
- (else
- (configuration-field-error #f 'group value))))
+ (when value
+ (warning (G_ "'group' in <mpd-configuration> is obsolete; ignoring~%")))
+ #f)
;;;
@@ -407,9 +383,10 @@ (define-configuration mpd-configuration
(sanitizer mpd-user-sanitizer))
(group
- (user-group %mpd-group)
- "The group to run mpd as."
- (sanitizer mpd-group-sanitizer))
+ (boolean #f)
+ "Obsolete. Do not use."
+ (sanitizer mpd-group-sanitizer)
+ empty-serializer)
(shepherd-requirement
(list-of-symbol '())
@@ -633,12 +610,9 @@ (define (mpd-shepherd-service config)
(format #t "Service MPD is not running.")))))))))))
(define (mpd-accounts config)
- (match-record config <mpd-configuration> (user group)
- ;; TODO: Deprecation code, to be removed.
- (let ((user (if (eq? (user-account-group user) %lazy-group)
- (set-user-group user group)
- user)))
- (list user group))))
+ (match-record config <mpd-configuration>
+ (user)
+ (list user)))
(define mpd-service-type
(service-type
@@ -676,19 +650,12 @@ (define-maybe/no-serialization mympd-ip-acl)
(define %mympd-user
(user-account
(name "mympd")
- ;; XXX: This is a place-holder to be lazily substituted in 'mympd-accounts'
- ;; with the value from the 'group' field of <mympd-configuration>.
- (group %lazy-group)
+ (group "nogroup")
(system? #t)
(comment "myMPD user")
(home-directory "/var/empty")
(shell (file-append shadow "/sbin/nologin"))))
-(define %mympd-group
- (user-group
- (name "mympd")
- (system? #t)))
-
;;; TODO: Procedures for unsupported value types, to be removed.
(define (mympd-user-sanitizer value)
(cond ((user-account? value) value)
@@ -702,15 +669,10 @@ (define (mympd-user-sanitizer value)
(configuration-field-error #f 'user value))))
(define (mympd-group-sanitizer value)
- (cond ((user-group? value) value)
- ((string? value)
- (warning (G_ "string value for 'group' is not supported, use \
-user-group instead~%"))
- (user-group
- (inherit %mympd-group)
- (name value)))
- (else
- (configuration-field-error #f 'group value))))
+ (when value
+ (warning (G_ "'group' in <mympd-configuration> is obsolete; ignoring~%")))
+ #f)
+
;;;
@@ -737,8 +699,8 @@ (define-configuration/no-serialization mympd-configuration
empty-serializer)
(group
- (user-group %mympd-group)
- "Owner group of the @command{mympd} process."
+ (boolean #f)
+ "Obsolete. Do not use."
(sanitizer mympd-group-sanitizer)
empty-serializer)
@@ -904,12 +866,9 @@ (define (mympd-shepherd-service config)
(stop #~(make-kill-destructor))))))
(define (mympd-accounts config)
- (match-record config <mympd-configuration> (user group)
- ;; TODO: Deprecation code, to be removed.
- (let ((user (if (eq? (user-account-group user) %lazy-group)
- (set-user-group user group)
- user)))
- (list user group))))
+ (match-record config <mympd-configuration>
+ (user)
+ (list user)))
(define (mympd-log-rotation config)
(match-record config <mympd-configuration> (log-to)
--
2.39.2
- bug#63082: [PATCH v3 03/16] services: mpd: Streamline mpd-user-sanitizer and mympd-user-sanitizer., (continued)
- bug#63082: [PATCH v3 03/16] services: mpd: Streamline mpd-user-sanitizer and mympd-user-sanitizer., Maxim Cournoyer, 2023/05/05
- bug#63082: [PATCH v3 07/16] services: mpd; Refactor start slot directory initialization., Maxim Cournoyer, 2023/05/05
- bug#63082: [PATCH v3 10/16] services: mpd: Let Shepherd effect the user/group change., Maxim Cournoyer, 2023/05/05
- bug#63082: [PATCH v3 09/16] services: mpd: Do not rotate logs when using syslog., Maxim Cournoyer, 2023/05/05
- bug#63082: [PATCH v3 14/16] services: mpd: Provision a default cache directory and set HOME., Maxim Cournoyer, 2023/05/05
- bug#63082: [PATCH v3 16/16] services: Avoid 'delete' overrides warning in audio module., Maxim Cournoyer, 2023/05/05
- bug#63082: [PATCH v3 15/16] services: mpd: Update basic example., Maxim Cournoyer, 2023/05/05
- bug#63082: [PATCH v3 06/16] services: mpd: List log-level in decreasing verbosity order in doc., Maxim Cournoyer, 2023/05/05
- bug#63082: [PATCH v3 05/16] services: mpd: Obsolete the 'group' field.,
Maxim Cournoyer <=
- bug#63082: [PATCH v3 05/16] services: mpd: Obsolete the 'group' field., Liliana Marie Prikler, 2023/05/05
- bug#63082: [PATCH v3 05/16] services: mpd: Obsolete the 'group' field., Maxim Cournoyer, 2023/05/06
- bug#63082: [PATCH v3 05/16] services: mpd: Obsolete the 'group' field., Liliana Marie Prikler, 2023/05/07
- bug#63082: [PATCH v3 05/16] services: mpd: Obsolete the 'group' field., Maxim Cournoyer, 2023/05/07
- bug#63082: [PATCH v3 05/16] services: mpd: Obsolete the 'group' field., Liliana Marie Prikler, 2023/05/07
- bug#63082: [PATCH v3 05/16] services: mpd: Obsolete the 'group' field., Maxim Cournoyer, 2023/05/07
- bug#63082: [PATCH v3 05/16] services: mpd: Obsolete the 'group' field., Liliana Marie Prikler, 2023/05/08
bug#63082: [PATCH v3 08/16] services: mpd: Log to syslog by default., Maxim Cournoyer, 2023/05/05
bug#63082: [PATCH v3 12/16] services: mpd: Warn when the MPD user is not in the "audio" group., Maxim Cournoyer, 2023/05/05