From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp10.migadu.com ([2001:41d0:2:bcc0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms9.migadu.com with LMTPS id uK95ClFLVWSfogAASxT56A (envelope-from ) for ; Fri, 05 May 2023 20:30:41 +0200 Received: from aspmx1.migadu.com ([2001:41d0:2:bcc0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp10.migadu.com with LMTPS id aJl3CVFLVWS44gAAG6o9tA (envelope-from ) for ; Fri, 05 May 2023 20:30:41 +0200 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id D09F911E6E for ; Fri, 5 May 2023 20:30:40 +0200 (CEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pv0CB-0005Iu-Mk; Fri, 05 May 2023 14:30:19 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pv0Bw-0005BK-Nj for bug-guix@gnu.org; Fri, 05 May 2023 14:30:07 -0400 Received: from debbugs.gnu.org ([209.51.188.43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pv0Bw-00061b-FI for bug-guix@gnu.org; Fri, 05 May 2023 14:30:04 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1pv0Bw-0003Aq-Bn for bug-guix@gnu.org; Fri, 05 May 2023 14:30:04 -0400 X-Loop: help-debbugs@gnu.org Subject: bug#63082: [PATCH v3 05/16] services: mpd: Obsolete the 'group' field. Resent-From: Maxim Cournoyer Original-Sender: "Debbugs-submit" Resent-CC: bug-guix@gnu.org Resent-Date: Fri, 05 May 2023 18:30:04 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 63082 X-GNU-PR-Package: guix X-GNU-PR-Keywords: To: 63082@debbugs.gnu.org Cc: Maxim Cournoyer Received: via spool by 63082-submit@debbugs.gnu.org id=B63082.168331138111968 (code B ref 63082); Fri, 05 May 2023 18:30:04 +0000 Received: (at 63082) by debbugs.gnu.org; 5 May 2023 18:29:41 +0000 Received: from localhost ([127.0.0.1]:57481 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pv0BY-00036w-Ez for submit@debbugs.gnu.org; Fri, 05 May 2023 14:29:41 -0400 Received: from mail-qk1-f171.google.com ([209.85.222.171]:46423) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pv0BU-00035e-V4 for 63082@debbugs.gnu.org; Fri, 05 May 2023 14:29:37 -0400 Received: by mail-qk1-f171.google.com with SMTP id af79cd13be357-75178b082a5so102331385a.1 for <63082@debbugs.gnu.org>; Fri, 05 May 2023 11:29:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1683311371; x=1685903371; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=smNiu6hbqDJPi3XLa5hXepfqyuKntQny/LT1qjEXZJ8=; b=LiJKylV3XA7Iei045PKVCcrNMn4lVQ9HeWeW0IW7wGlDt5i8SygupYUUAngTw+7BaQ LeqvcgIPa+jXaZ2p+24w0x+GHCtSvYfl33Z7x2KK5BpI9hmC5eWifsh47/7b2X9P9hid iZCO8WgKnhrzF/oYHkHMGgIvIwBrkkcpUDwDb49gk65YEv7fBrOU6YT/wfSGNfHhwY5Y afmIOGozA5XJvZBDFiUm/PBEKqRUPDJ+HXmlq9BV6xxW8ZKOyCf83awFNqrELOkZP4iJ 9RUGFZHQICsVhnbPkuT6VFfhF6mbQFR44STTWaF2dNdFNx7H5i546NnHM72bb2n7Goic jvcA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1683311371; x=1685903371; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=smNiu6hbqDJPi3XLa5hXepfqyuKntQny/LT1qjEXZJ8=; b=BsXuoVArICIKtt4REiTyceRZENXt/UxlOIaVaWKUTZZYEVxwaUwMnBW0q7G4vmNe8J gOABGXQKuFpN3i+QWnCUKrSH0oNUw2om5Ts8vOnSg7UcByavO6aul5U9pTqMN+v+jE8Y vC43M8pZ3evJHU1Qsp1uVXYzXWAZ9hctsU51SbQUtZK2yGevveQsqSQqQm7FIElkUX21 55S9xtXW0Q5yKXc1syEiHbT8AwCIMSKGPgX5iQfdsktrKUFIucPLeH/pC30DbNeooShB IPFxypT5JZARmG99p5CbdWkddL/dW/LC51pI1f5FS8MSyvsHpBXS01Idt6etAYyHKaWI sQ6w== X-Gm-Message-State: AC+VfDwUrbAr+re89p7Lg+dGUxkXwBaYXAL3e7aEtGu9Nc3U9gYqFxxY VDsWGqrE72wpKP5ETJAlGWMNAameOoA= X-Google-Smtp-Source: ACHHUZ55EcIkYHAYqOnXh0psFb6vSqJut6NrMBC+pKmah63hlgR8A2/7qVbkjbCsRopIUz78pJB/Cw== X-Received: by 2002:a05:622a:287:b0:3e6:3b1d:f922 with SMTP id z7-20020a05622a028700b003e63b1df922mr3827341qtw.50.1683311371185; Fri, 05 May 2023 11:29:31 -0700 (PDT) Received: from localhost.localdomain (dsl-205-236-230-162.b2b2c.ca. [205.236.230.162]) by smtp.gmail.com with ESMTPSA id c1-20020ac81e81000000b003e97fe68511sm834399qtm.3.2023.05.05.11.29.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 05 May 2023 11:29:30 -0700 (PDT) From: Maxim Cournoyer Date: Fri, 5 May 2023 14:29:00 -0400 Message-Id: <40db40a2bbfe5e0586d8b8c9694607bc0d66e340.1683299529.git.maxim.cournoyer@gmail.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: References: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-guix@gnu.org List-Id: Bug reports for GNU Guix List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-guix-bounces+larch=yhetil.org@gnu.org Sender: bug-guix-bounces+larch=yhetil.org@gnu.org X-Migadu-Flow: FLOW_IN X-Migadu-Country: US ARC-Seal: i=1; s=key1; d=yhetil.org; t=1683311440; a=rsa-sha256; cv=none; b=tC7X8u3waiMWS5oxxgeD+1W6rsCKWKfCijNIeMqgWOv1PYQ7Itx6+gk4lWAmr8MaThkRnm mhGGfzwhZiKG255y49sI9rZ9R2bRZg+vhwbjG3FQFWl1txPkbbtW22bjI/oNT723Mkx5EX 7v7R4QqqMpoSMOw9XH2QLmQQH1zeLAIgNSSSHIqlPqnkH0McHgLPYiUdleVB8KcakZXSYw 5iTmvFd4QMPgK+YpOfgfZsTe7uzP192qwWoQQgIXuKS0t1tnZsHPn3t75O7GKXc4/Eru0I hASut5DmaO8iNWpQS1vuVCo1dTNH8mxcxNPxGL8JCjwyg5jLq69L3oVTbsiINg== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=fail ("body hash did not verify") header.d=gmail.com header.s=20221208 header.b=LiJKylV3; dmarc=fail reason="SPF not aligned (relaxed)" header.from=gmail.com (policy=none); spf=pass (aspmx1.migadu.com: domain of "bug-guix-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="bug-guix-bounces+larch=yhetil.org@gnu.org" ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1683311440; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding:resent-cc: resent-from:resent-sender:resent-message-id:in-reply-to:in-reply-to: references:references:list-id:list-help:list-unsubscribe: list-subscribe:list-post:dkim-signature; bh=E86ILsGLz//kBoVgocsMof/vy+/ZcDC7YYV87KnsFvI=; b=caxPkSjiMbgjK5tI6wRc8RIbVT41IcO1s0i0oGqQzZIQjFHqPUNtVZYrqQkaVsiCmJGkN7 MSaJhAtMtnSgDp6tXESE87c+JT8IDcCg4L0M4bWfCQtOVFRT7J7r8axvafdN/rSC/x7R0v mFYDaaucA74jF82++TVhbCl4/QFxm1zbFtGz8jIXoAhbhs9NQ7kLRvWNZ6XpX95ouLEJd3 Ilypp5rDGq8URLvkbe4IeSGQT8nCcdNYTxU1pTM6cyUXxr1GpX+DevlRYWF7NKANgMK3Qj CuQmyd7NsllKlq03sV0m7Z/FppfGwChIY4jaN1z6PggE0qGWT2+3ksu5rM6Eyg== X-Migadu-Scanner: scn1.migadu.com Authentication-Results: aspmx1.migadu.com; dkim=fail ("body hash did not verify") header.d=gmail.com header.s=20221208 header.b=LiJKylV3; dmarc=fail reason="SPF not aligned (relaxed)" header.from=gmail.com (policy=none); spf=pass (aspmx1.migadu.com: domain of "bug-guix-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="bug-guix-bounces+larch=yhetil.org@gnu.org" X-Migadu-Spam-Score: 5.80 X-Spam-Score: 5.80 X-Migadu-Queue-Id: D09F911E6E X-TUID: KXHqnmisB5QJ 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 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 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 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 . - (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 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 (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 + (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 . - (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 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 (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 + (user) + (list user))) (define (mympd-log-rotation config) (match-record config (log-to) -- 2.39.2